ข้ามไปยังเนื้อหา

เส้นทางและ next hop

Argo เก็บสถานะการส่งต่อแยกจาก Linux kernel เมื่อ ip และคำสั่งเหล่านี้ขัดแย้งกัน คำสั่งเหล่านี้คือสิ่งที่ควบคุมการส่งทราฟฟิก

ตารางเส้นทาง vRouter แยกตาม VRF

Terminal window
{"command":["rt","--dump","2"]}
Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, H=Proxy ARP for host interface, V=Preferred VRF
Labels/Misc: S=SiteId N=NetworkId
vRouter inet4 routing table 0/2/unicast
Destination PPL Flags Label Nexthop Labels/Misc
Number of routes: 4
0.0.0.0/0 0 - 0
169.254.254.102/32 32 L 263 13
172.16.12.126/32 32 L 0 46 (S,N):2298:0
172.16.84.126/32 32 L 0 46 (S,N):2298:0

ตาราง next-hop ทุกเส้นทางชี้ไปยัง next-hop id และตารางนี้ใช้สำหรับแก้ไขค่าเหล่านั้น

Terminal window
{"command":["nh","--list"]}
Id:0 Type:Drop Fmly: AF_INET Rid:0 Vrf:0
Flags:Valid, Tunnel: None
Id:1 Type:Drop Fmly: AF_INET Rid:0 Vrf:0
Flags:Valid, Tunnel: None
Id:2 Type:Receive Fmly: AF_INET Rid:0 Vrf:1
Flags:Valid, Policy, Tunnel: Udp,
Oif:0
Id:3 Type:Receive Fmly: AF_INET Rid:0 Vrf:2
Flags:Valid, Policy, Tunnel: Udp,
Oif:0
Id:4 Type:Receive Fmly: AF_INET Rid:0 Vrf:3
Flags:Valid, Policy, Tunnel: Udp,
Oif:0
Id:5 Type:Receive Fmly: AF_INET Rid:0 Vrf:4
Flags:Valid, Policy, Tunnel: Udp,
Oif:0
Id:6 Type:Vrf_Translate Fmly: AF_INET Rid:0 Vrf:1
Flags:Valid, Policy, Tunnel: None
Id:7 Type:Vrf_Translate Fmly: AF_INET Rid:0 Vrf:2
Flags:Valid, Policy, Tunnel: None
Id:8 Type:Vrf_Translate Fmly: AF_INET Rid:0 Vrf:3
Flags:Valid, Policy, Tunnel: None
Id:9 Type:Vrf_Translate Fmly: AF_INET Rid:0 Vrf:4
Flags:Valid, Policy, Tunnel: None
Id:10 Type:Vrf_Translate Fmly: AF_INET Rid:0 Vrf:5
Flags:Valid, Policy, Tunnel: None
Id:11 Type:Vrf_Translate Fmly: AF_INET Rid:0 Vrf:6
Flags:Valid, Policy, Tunnel: None
Id:12 Type:Encap Fmly: AF_INET Rid:0 Vrf:1
Flags:Valid, Policy, Tunnel: None
Oif:2 Len:14
Encap Data: 02 01 02 03 04 05 00 00 5e 00 01 00 08 00
Id:13 Type:Encap Fmly: AF_INET Rid:0 Vrf:2
Flags:Valid, Policy, Tunnel: None
Oif:4 Len:14
Encap Data: 02 01 02 03 04 06 00 00 5e 00 01 00 08 00
Id:14 Type:Encap Fmly: AF_INET Rid:0 Vrf:3
Flags:Valid, Policy, Tunnel: None
Oif:6 Len:14
Encap Data: 00 00 5e 00 02 00 00 00 5e 00 01 00 08 00
Id:15 Type:Encap Fmly: AF_INET Rid:0 Vrf:6
Flags:Valid, Policy, Tunnel: None
Oif:10 Len:14
Encap Data: 02 01 02 03 04 09 00 00 5e 00 01 00 08 00
... [capture trimmed: first 60 of 3820 lines]

แต่ละรายการมี Type และ VRF ที่เป็นสมาชิก มีแปดประเภทที่พบในโหนดเหล่านี้ ในสัดส่วนต่อไปนี้ — เหมือนกันทั้งสาม CE เมื่อนับรวม:

Tunnel 558 Encap 27 NAT 22 Vrf 16 Receive 14 Composite 4 Drop 2 Resolve 2

เส้นทางที่แก้ไขไปยัง next-hop แบบ Drop คือ blackhole และการรวมกันนั้นควรตรวจสอบ ทุกครั้งที่ prefix ปรากฏใน rt แต่ทราฟฟิกยังคงหายไป

ตารางอินเทอร์เฟซเสมือน: สิ่งที่ data plane ผูกไว้ และตัวนับแต่ละอินเทอร์เฟซ

Terminal window
{"command":["vif","--list"]}
Vrouter Interface Table
Flags: P=Policy, X=Cross Connect, S=Service Chain, Mr=Receive Mirror
Mt=Transmit Mirror, Tc=Transmit Checksum Offload, L3=Layer 3, L2=Layer 2
D=DHCP, Vp=Vhost Physical, Pr=Promiscuous, Vnt=Native Vlan Tagged
Mnp=No MAC Proxy, Dpdk=DPDK PMD Interface, Rfl=Receive Filtering Offload, Mon=Interface is Monitored
Nf=Dont Fragment, Vof=VLAN insert/strip offload, Mq=MultiQ, L=MAC Learning Enabled
Proxy=MAC Requests Proxied Always, Fr=Force Recv, Mn=Mirror without Vlan Tag, TTL=TTL not modified
Mn=Mirror without Vlan Tag, Tun=Tunnel, NoArp=No ARP interface, RawIp=RAW IP interface(No L2 header)
Npers=Non-Persistent, NoRPF=No RPF Checks, SynC=Syn Cookies, Gro=GRO Enabled
NoIpfix=IPFIX disabled
evif0/1 Virtual: eth0 (Speed 10000, Duplex 1) Parent:vif0/-1
Type:Physical HWaddr:60:45:bd:eb:3f:f2 Driver: net_failsafe
CrossConnectIdx: 2 PartnerIdx: 14
Vrf:0 Mcast Vrf:0 VN:0x0 Flags:L3L2Vp Ref:7
MTU: 1500 EncMSS: 0 NH: 0
RX device packets:386252 bytes:355098338 errors:0
RX port packets:386252 errors:0
RX queue packets:385977 errors:0
RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RX packets:386252 bytes:355098338 errors:0
TX packets:274826 bytes:132476854 errors:0
Drops:0
TX queue packets:27 errors:0
TX port packets:274826 errors:0
TX device packets:274826 bytes:132476854 errors:0
evif0/2 Virtual: vhost0 Parent:vif0/-1
Type:Host HWaddr:60:45:bd:eb:3f:f2 Driver: vr_dpdk_tap
CrossConnectIdx: 1 PartnerIdx: 15
Vrf:0 Mcast Vrf:0 VN:0x0 Flags:L3L2 Ref:6
MTU: 1500 EncMSS: 0 NH: 0
RX device packets:263582 bytes:122772389 errors:0
RX queue packets:263582 errors:0
RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RX packets:263582 bytes:120136569 errors:0
TX packets:374276 bytes:343331787 errors:0
Drops:0
TX queue packets:370829 errors:3447
TX device packets:370820 bytes:341968151 errors:9
vif0/2 Ethernet: vethfrr0 Parent:vif0/-1
Type:Virtual HWaddr:0:0:5e:0:1:0 Driver: net_af_packet
Vrf:1 Mcast Vrf:1 VN:0x0 Flags:PL3Proxy Ref:10
MTU: 1500 EncMSS: 130 NH: 12
RX port packets:4919 errors:0
RX queue packets:4917 errors:0
RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RX packets:907 bytes:153742 errors:0
TX packets:6 bytes:444 errors:0
Drops:905
TX queue packets:346 errors:0
TX port packets:3987 errors:0
Ingress ACL: 65 67
Egress ACL: 65 67
Service ACL: 65 67
vif0/4 Ethernet: vethbfd0 Parent:vif0/-1
Type:Virtual HWaddr:0:0:5e:0:1:0 Driver: net_af_packet
... [capture trimmed: first 60 of 378 lines]

คำอธิบายแฟล็กที่ด้านบนควรอ่านครั้งหนึ่ง — Vp หมายถึงอินเทอร์เฟซกายภาพ vhost Dpdk หมายถึงอินเทอร์เฟซที่จัดการโดย DPDK ใช้สิ่งนี้เพื่อยืนยันว่า data plane ได้รับอินเทอร์เฟซที่คาดหวัง และเพื่อดูตัวนับ RX และ TX ที่ Linux ไม่แสดง เนื่องจากทราฟฟิกไม่เคยถึง kernel

Terminal window
execcli mpls --help

ตาราง MPLS ของ Argo เข้าถึงได้ เฉพาะจากเครื่องนั้นmpls ไม่อยู่ใน debug API ดังนั้น ต่างจาก rt, nh และ vif ข้างต้น จำเป็นต้องใช้ SSH หรือ serial console ผ่าน execcli

ไม่มีผลลัพธ์ที่บันทึกไว้ที่นี่ ในการ deploy นี้ CE ส่งต่อ IPv4 ด้วย BGP และ ECMP และ ไม่ใช้ MPLS label ดังนั้นข้อมูลที่บันทึกจะแสดงตารางว่างและไม่มีประโยชน์ การมีอยู่ของคำสั่ง และรูปแบบอาร์กิวเมนต์ --help ได้รับการยืนยันจากเมนูการเติมคำของอุปกรณ์เอง แต่ผลลัพธ์เมื่อมีข้อมูลไม่ได้รับการนำเสนอ