Ich möchte ELAM in die Mischung aufnehmen. ELAM wird von PFC3 (6500, 7600) unterstützt.
Sie müssen 'service internal' aktiviert haben, aber es ist eine ziemlich sichere Funktion, die ich in Produktionsnetzwerken verwendet habe und die noch keine negativen Auswirkungen hatte.
Im Wesentlichen zeigt ELAM Ihnen, was für eine Nachschlageverarbeitung über DBUS (Daten-BUS) an PFC gesendet wurde und was die PFC als Nachschlageergebnis in RBUS (Ergebnis-BUS) ausgegeben hat.
- zeige Plat Cap Elam Asic Superman Slot DFC / PFC_SLOT_YOU_WANT_TO_LOOK
- zeige plat cap elam trigger dbus ipv4 wenn ip_sa = 192.0.2.1
- Plat Cap Elam Start anzeigen
- Plat Cap Elam Daten anzeigen
Für die Trigger gibt es eine Online-Hilfe, IP_SA == IP-Quelladresse, IP_DA == IP-Zieladresse, viele andere sind verfügbar. WENN das, was Sie überprüfen möchten, nicht verfügbar ist, können Sie auf dem ersten 64B eine Daten- + Maskenübereinstimmung für beliebige Daten durchführen.
Der willkürliche Auslöser ist etwas umständlich, kann aber lebensrettender sein. Sie werden ihn folgendermaßen verwenden:
zeige Plattform Capture Elam Trigger dbus andere wenn Daten = DATA1 DATA2 DATAn [MASK1 MASK2 MASKn]
Daten starten von DMAC. Angenommen, wir möchten den eingehenden MPLS-Stapel von [0 1951] abfangen, aber die MAC-Adressen interessieren uns nicht. Wir könnten dies tun:
zeige Plattformerfassung elam Trigger dbus andere wenn Daten = 0 0 0 0x88470000 0x00000079 0xF0000000 [0 0 0 0xffffffff 0xf000ffff 0xf0000000]
Beispielausgabe könnte sein:
7600#show platform capture elam data
DBUS data:
SEQ_NUM [5] = 0x1D
QOS [3] = 1
QOS_TYPE [1] = 0
TYPE [4] = 0 [ETHERNET]
STATUS_BPDU [1] = 0
IPO [1] = 1
NO_ESTBLS [1] = 0
RBH [3] = b000 ! port-channel hash
CR [1] = 1 ! recirculated
TRUSTED [1] = 1
NOTIFY_IL [1] = 0
NOTIFY_NL [1] = 0
DISABLE_NL [1] = 0
DISABLE_IL [1] = 0
DONT_FWD [1] = 0
INDEX_DIRECT [1] = 0
DONT_LEARN [1] = 0
COND_LEARN [1] = 0
BUNDLE_BYPASS [1] = 0
QOS_TIC [1] = 1
INBAND [1] = 0
IGNORE_QOSO [1] = 0
IGNORE_QOSI [1] = 0
IGNORE_ACLO [1] = 0
IGNORE_ACLI [1] = 0
PORT_QOS [1] = 0
CACHE_CNTRL [2] = 0 [NORMAL]
VLAN [12] = 4086
SRC_FLOOD [1] = 0
SRC_INDEX [19] = 0xC0 ! divmod64(0xc0) = 3,0, add 1 to each, 4/1 == our physical port
LEN [16] = 102
FORMAT [2] = 0 [IP]
MPLS_EXP [3] = 0x0
REC [1] = 0
NO_STATS [1] = 0
VPN_INDEX [10] = 0x7F
PACKET_TYPE [3] = 0 [ETHERNET]
L3_PROTOCOL [4] = 0 [IPV4]
L3_PT [8] = 1 [ICMP]
MPLS_TTL [8] = 0
SRC_XTAG [4] = 0xF
DEST_XTAG [4] = 0xA
FF [1] = 0
MN [1] = 0
RF [1] = 1
SC [1] = 0
CARD_TYPE [4] = 0x0
DMAC = 8843.e1de.22c0
SMAC = 0000.0000.0000
IPVER [1] = 0 [IPV4]
IP_DF [1] = 1
IP_MF [1] = 0
IP_HDR_LEN [4] = 5
IP_TOS [8] = 0x0
IP_LEN [16] = 84
IP_HDR_VALID [1] = 1
IP_CHKSUM_VALID [1] = 1
IP_L4HDR_VALID [1] = 1
IP_OFFSET [13] = 0
IP_TTL [8] = 63
IP_CHKSUM [16] = 0xBCF1
IP_SA = x.x.x ! to protect the guilty
IP_DA = y.y.y.y ! to protect the guilty
ICMP_TYPE [8] = 0x8
ICMP_CODE [8] = 0x0
ICMP_DATA [104]
0000: A0 8B 18 A5 00 39 46 35 BF 51 00 6F 3C ".....9F5.Q.o<"
CRC [16] = 0x71B3
RBUS data:
SEQ_NUM [5] = 0x1D
CCC [3] = b100 [L3_RW] ! normal L3_RW, we know it was not dropped, L2/mls policed etc
CAP1 [1] = 0
CAP2 [1] = 0
QOS [3] = 0
EGRESS [1] = 0
DT [1] = 0 [IP]
TL [1] = 0 [B32]
FLOOD [1] = 1
DEST_INDEX [19] = 0x3E8 ! same as VLAN, but not always
VLAN [12] = 1000 ! you may need to check internal vlan
RBH [3] = b111 ! again, port-channel hash
RDT [1] = 0
GENERIC [1] = 0
EXTRA_CICLE [1] = 0
FABRIC_PRIO [1] = 0
L2 [1] = 0
FCS1 [8] = 0x1
IP_TOS_VALID [1] = 1
IP_TOS_OFS [7] = 15
IP_TOS [8] = 0x0
IP_TTL_VALID [1] = 1
IP_TTL_OFS [7] = 22
IP_TTL [8] = 62
IP_CSUM_VALID [1] = 1
IP_CSUM_OFS [7] = 24
IP_CSUM [16] = 0xBDF1
DELTA_LEN [8] = 0
REWRITE_INFO
i0 - replace bytes from ofs 0 to ofs 11 with seq 'D0 D0 FD 09 34 2D 88 43 E1 DE 22 C0'. ! this is the actual L2 rewrite data, so you should obviously see DMAC and SMAC here
FCS2 [8] = 0x0
7600#
Nahezu alle größeren Plattformen verfügen über diese Art von Low-Level-Erfassung für Transitpakete. Dies ist besonders nützlich, wenn Sie überprüfen müssen, ob HW die angegebenen Konfigurationsschritte ausführt, manchmal Softwarefehler vorliegen und etwas anderes als erwartet ausgeführt wird.
Ich weiß, dass man in GSR Transit im Speicher sehen kann, in Juniper Trio gibt es auch ein ganz nettes Werkzeug dafür. Brocade kann das. Es ist ziemlich verwunderlich, dass sie nicht auf Anbieterseiten dokumentiert sind.