キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
3737
閲覧回数
0
いいね!
0
コメント
yushimaz
Cisco Employee
Cisco Employee

  

1. ELAM とは

 

ELAM (Embedded Logic Analyzer Module) は、Cisco ASIC 内の packet 転送を確認するための Tool で、ACI 固有の Tool ではなく、一部の Catalyst や Nexus Series Switch 上でも動作します。 Nexus 9000 シリーズ製品: ELAM の概要 に、Standalone mode での使用方法や説明が記載されているので、ELAM についてはそちらの document もご参照ください。 ELAM の設定や出力は ASIC によって異なるため注意が必要です。

 

2. ELAM Assistant とは

01.png

 

ELAM 設定を APIC GUI 上で設定できる Tool で、Cisco ACI App Center から download して使用することができます。

APIC Postman の紹介 に記載されている方法で install することができます。 ACI Apps を使用したことがない人は APIC Postman の紹介 もご参照ください。

 

ACI Fabric は、複数台の Leaf/Spine Switch によって構成されているため、packet が drop している箇所を特定するために、複数台の switch で ELAM capture を行う必要があり、各 switch に login して設定を行う必要がありますが、この Tool を使うことで、APIC 上で、複数台の switch に対して一度に設定を行うことができます。 また、ELAM Assistant が support している switch は、第二世代の (EX, FX Series) switch になりますが、これら switch の ELAM 出力は、ASIC の内部構造を理解していないと読むことができない、難解な出力になっていますが、ELAM Assistant は、解析に必要な部分を human readable な形式に変換してくれるため、比較的簡単に結果を確認することができます。

 

例えば、下記のような出力は、 

 

 

*** Parsed Outer l2 vector
sug_elam_in_l2v_da_sa_qtag0_vntag_cmd: 0x00000000000005DE1000100010751000000000752
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.da: 0x000000752
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.sa: 0x100010751
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.qtag0_vld: 0x1
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.qtag0_cos: 0x0
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.qtag0_de: 0x0
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.qtag0_vlan: 0x2EF
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.vntag_vld: 0x0
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.vntag_svif: 0x0
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.vntag_dvif: 0x0
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.vntag_e: 0x0
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.vntag_l: 0x0
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.vntag_p: 0x0
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.vntag_spare: 0x0
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.cmd_vld: 0x0
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.cmd_sgt_vld: 0x0
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.cmd_sgt: 0x0
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.cmd_dgt_vld: 0x0
  sug_elam_in_l2v_da_sa_qtag0_vntag_cmd.cmd_dgt: 0x0
*** Parsed Outer l3 vector
sug_elam_in_l3v_ipv4: 0x302A0CC0702A0CC0807FC002
  sug_elam_in_l3v_ipv4.l3_type: 0x2
  sug_elam_in_l3v_ipv4.v6: 0x0
  sug_elam_in_l3v_ipv4.dscp: 0x0
  sug_elam_in_l3v_ipv4.ecn: 0x0
  sug_elam_in_l3v_ipv4.df: 0x0
  sug_elam_in_l3v_ipv4.mf: 0x0
  sug_elam_in_l3v_ipv4.ttl: 0xFF
  sug_elam_in_l3v_ipv4.prot: 0x1
  sug_elam_in_l3v_ipv4.da: 0xC0A83302
  sug_elam_in_l3v_ipv4.sa: 0xC0A83301
*** Parsed Outer l4 vector

 

こんな感じに表示されます。

02.png

 

3. ELAM Assistant の使い方

 

すでに install が完了していて、すぐに使える状態になっていることを前提で進めていきます。 まだ install していない人は、APIC Postman の紹介 を参考に install してください。 下記のように Apps -> Apps で ELAM Assistant が表示されていれば install が完了しています。

03.png

 

上記 Open を click すると、下記のような画面が表示されます。 Leaf/Spine Switch に log するために、まずは Username/Password を入力し、Validate & Save を click してください。

 

04.png

 

確認/初期化が完了すると、下記のような画面が表示されるので、この pop up を消し、指示の通り、Capture Packet を click します。

上記画面を scroll させると、使い方が書いてあるので、その通りに進めていきます。

 

05.png

 

現在、2. まで進んだので、3 - 5 の ELAM capture を行いたい switch を選択し設定を行います。

今回は、1 つの EPG 上に leaf101 eth1/21 encap vlan 751 と leaf102 eth1/21 encap vlan 752 を static binding で設定し、bridge する構成で行なっています。 同一 EPG 内の通信のため、contract は設定していません。 Tenant 設定は下記になります。

 

06.png

 

上記設定で、node-101 eth1/21 に、端末 192.168.75.1 が、node-102 eth1/22 に、端末 192.168.75.2 が接続されているので、192.168.75.1 -> 192.168.75.2 へ ping を実行した時に各 leaf が、packet を受信できているかどうかを確認するため、ELAM capture を行なってみます。

 

指示通り、まずは、capture 対象の node を選択 (今回は node-101, node-102 を追加) します。

07.png

 

今回は、fontport からの通信を capture するため、direction は default のままで、node-101 は icmp echo を capture するため、dst_ip を 192.168.51.2 に、node-102 は icmp echo reply を capture するため、src_ip を 192.168.51.2 にして Set ELAM を click。

 

08.png

 

これで、capture を行う準備ができたので、ping を実行し、6 - 9 の指示通りに進めていきます。

Check Trigger を click すると、capture が完了しているため、Status が Triggered に変更されます。 capture できなかった場合、Set のままです。 また、ELAM は、条件に match した最初の packet を capture すると Triggered になり capture が終了します。 そのため、packet が流れ続けている環境で parameter 設定を適当に行うと、意図した packet とは異なる packet を capture していまうため、注意が必要です。

 

09.png

 

上記 Triggered になった場合、ELAM report が生成されているため、左側の menu から switch を選択し、内容を確認することができます。

今回は、node-101 の capture 結果を見てみることにします。

 

10.png

 

node-101 を撰択し、Parse を click することで PARSE RESULT に結果が表示されます。

下記は、PARSE RESULT の Express の結果です。 Raw を click すると、先ほどの難しい出力結果が表示されます。

 

11.png12.png13.png

 

 

 

Packet が ACI Fabric 内で drop しているときの Troubleshooting では、最後の drop reason の出力を確認します。 問題なく通過している場合には no drop になりますが、EPG 間通信で contract を設定せずに packet drop が発生した場合は、SECURITY DENY と表示される等、drop した理由が表示されます。

 

ちなみに、raw data は、apic の /data2/gluster/gv0/Cisco_ElamAssistant/ directory の中にあります。

 

leaf/spine switch に login し、CLI で elam capture を行なった場合、elam report は下記のように switch の /var/log/dme/log/elam_report.txt に保存されますが、ELAM Assistant の場合、その情報を、/data2/gluster/vg0/Cisco_ElamAssistant へ copy しています。 copy する際に、node 名が追加され node-101_elam_report.txt のような形式の file になります。 elam parameter で option として存在する name your capture に何か入力すると、elam_report.txt の部分がその入力した値になります。

 

## node-101 leaf switch
fab3-leaf1# ls -l /var/log/dme/log/elam_report.txt
-rw-rw-rw- 1 root root 701595 Jul  4 16:58 /var/log/dme/log/elam_report.txt
fab3-leaf1#
fab3-leaf1# head -30 /var/log/dme/log/elam_report.txt
 
#########################SUGARBOWL ELAM REPORT START#########################
Dumping report for asic type 6 inst 0 slice 0 a_to_d 1 insel 6 outsel 0
LUA captured data with :
   SRCID: 0
   PKTID: ca
*** All outer vector:
sug_elam_in_vec.all_outer_vec: 0x000000000000000000000000000000000000000000000000E31E1001600000000000000000000000000181506602000000000000000000000001815066042E1E03FE0000015000540440000000000000000005DE100000000000100010751000000000752
  sug_elam_in_vec.all_outer_vec.l2vec0: 0x00000000000005DE100000000000100010751000000000752
  sug_elam_in_vec.all_outer_vec.l3vec0: 0x00000000000000000000000000C0A83301000000000000000000000000C0A83302170F01FF000000A8002A022
  sug_elam_in_vec.all_outer_vec.l4vec0: 0x000000000000000000000000718F0800B
  sug_elam_in_vec.all_outer_vec.spare_bit_padding: 0x00000000000000000
*** Parsed l2 vector
sug_pr_lu_vec_l2v: 0x00000000000005DE100000000000100010751000000000752
  sug_pr_lu_vec_l2v.da: 0x000000752
    sug_pr_lu_vec_l2v.da.trill: 0x000000752
      sug_pr_lu_vec_l2v.da.trill.ce_da: 0x000000752
    sug_pr_lu_vec_l2v.da.ce_da: 0x000000752
    sug_pr_lu_vec_l2v.da.dce_da: 0x000000752
  sug_pr_lu_vec_l2v.sa: 0x100010751
    sug_pr_lu_vec_l2v.sa.trill: 0x100010751
      sug_pr_lu_vec_l2v.sa.trill.irbid: 0x751
      sug_pr_lu_vec_l2v.sa.trill.erbid: 0x1
      sug_pr_lu_vec_l2v.sa.trill.spare: 0x1
    sug_pr_lu_vec_l2v.sa.ce_sa: 0x100010751
    sug_pr_lu_vec_l2v.sa.dce_sa: 0x100010751
  sug_pr_lu_vec_l2v.vntag_vld: 0x0
  sug_pr_lu_vec_l2v.ivntag_vld: 0x0
  sug_pr_lu_vec_l2v.vir: 0x0
    sug_pr_lu_vec_l2v.vir.vntag: 0x0
fab3-leaf1#

 

## apic
apic1# ls -l /data2/gluster/gv0/Cisco_ElamAssistant/node-101_elam_report.txt
-rw-r--r-- 2 root root 701595 Jul  4 16:58 /data2/gluster/gv0/Cisco_ElamAssistant/node-101_elam_report.txt
apic1#

  

ACI Fabric 内の traffic flow の解析を行う上で、ELAM capture はとても有効ですが、設定した条件に match する最初の packet しか取得できないため、parameter 設定を慎重に行う必要があります。 条件が明確になっていない場合、意図せぬ packet を capture してしまい、Troubleshooting が行えないこともあります。

そのため、まずは SPAN を行い、drop している packet の特性を確認した上で、ELAM capture を行うことをお勧めします。

SPAN については、SPAN 機能の基本設定と動作概要 もあわせてご参照ください。

Getting Started

検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう

シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします