2018-07-05 01:17 PM - 最終編集日: 2021-09-30 02:15 PM 、編集者: DCNhowtoAdmin
ELAM (Embedded Logic Analyzer Module) は、Cisco ASIC 内の packet 転送を確認するための Tool で、ACI 固有の Tool ではなく、一部の Catalyst や Nexus Series Switch 上でも動作します。 Nexus 9000 シリーズ製品: ELAM の概要 に、Standalone mode での使用方法や説明が記載されているので、ELAM についてはそちらの document もご参照ください。 ELAM の設定や出力は ASIC によって異なるため注意が必要です。
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
こんな感じに表示されます。
すでに install が完了していて、すぐに使える状態になっていることを前提で進めていきます。 まだ install していない人は、APIC Postman の紹介 を参考に install してください。 下記のように Apps -> Apps で ELAM Assistant が表示されていれば install が完了しています。
上記 Open を click すると、下記のような画面が表示されます。 Leaf/Spine Switch に log するために、まずは Username/Password を入力し、Validate & Save を click してください。
確認/初期化が完了すると、下記のような画面が表示されるので、この pop up を消し、指示の通り、Capture Packet を click します。
上記画面を scroll させると、使い方が書いてあるので、その通りに進めていきます。
現在、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 設定は下記になります。
上記設定で、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 を追加) します。
今回は、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。
これで、capture を行う準備ができたので、ping を実行し、6 - 9 の指示通りに進めていきます。
Check Trigger を click すると、capture が完了しているため、Status が Triggered に変更されます。 capture できなかった場合、Set のままです。 また、ELAM は、条件に match した最初の packet を capture すると Triggered になり capture が終了します。 そのため、packet が流れ続けている環境で parameter 設定を適当に行うと、意図した packet とは異なる packet を capture していまうため、注意が必要です。
上記 Triggered になった場合、ELAM report が生成されているため、左側の menu から switch を選択し、内容を確認することができます。
今回は、node-101 の capture 結果を見てみることにします。
node-101 を撰択し、Parse を click することで PARSE RESULT に結果が表示されます。
下記は、PARSE RESULT の Express の結果です。 Raw を click すると、先ほどの難しい出力結果が表示されます。
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 機能の基本設定と動作概要 もあわせてご参照ください。
検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう
シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします