此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍边界网关协议(BGP)路由反射器(RR)可以实现的最大扩展的主要贡献者,以及有关BGP RR性能监控的指导。
大规模BGP RR通常不处于传送互联网服务提供商提供的服务的数据包的转发路径中。因此,BGP RR和在数据路径中主要转发数据包的路由器的硬件要求不同。标准路由器内置有强大的数据路径转发元素和相对温和的控制路径元素。BGP RR在控制计划中执行其所有任务。
在Cisco IOS® XR系列产品中,您可以为BGP RR角色选择三种类型的硬件/软件平台:
物理思科IOS XR路由器 |
思科IOS XRv 9000设备 |
思科IOS XRv 9000路由器(也称为XRv9k) |
|
|
|
截至本文撰写时,XRv9k设备是BGP RR的最佳平台选择,因为它可提供最高控制平面容量和最高性能。
由于数据路径元素的性能很少取决于比例,因此数据平面实体所支持的比例相对容易表示。例如,无论活动TCAM条目的数量如何,TCAM查找都会占用相同的时间。
支持的控制平面实体的扩展通常更为复杂,因为扩展和性能是互连的。考虑具有1M路由的BGP RR。BGP进程维护此BGP表必须执行的工作取决于:
BGP对等体的数量通常是第一个,但不幸的是,在考虑BGP规模时,经常会想到唯一的事情。虽然在不提及BGP对等体数量的情况下无法表示支持的BGP规模,但它并不是最重要的因素。许多其他方面也同样重要。
地址系列类型(AF)是BGP性能考虑因素中的一个重要因素,因为在典型部署中,它影响单个路由的大小。可以打包到单个TCP段中的IPv4路由的数量显着高于VPNv4路由的数量。因此,对于相同规模的BGP表更改,与VPNv4 BGP RR相比,IPv4 BGP RR需要做的工作更少。显然,在每条路由都添加了大量社区的部署中,AF之间的差异变得不太显着,但一条路由的规模更大,需要予以考虑。
BGP进程为同一更新组的所有成员准备单一更新。然后,TCP进程将更新数据拆分成与更新组的每个成员对应的TCP数据段(取决于TCP MSS)。您可以使用命令查看活动更新组及其成员show bgp update-group
。通过为要位于同一更新组中的对等体组创建公共出站策略,可以影响更新组成员的对等体及其数量。BGP RR向大量BGP RR客户端发送的单个更新可以触发可以在Cisco IOS XR路由器的本地数据包传输服务(LPTS)组件中丢弃的TCP ACK突发。
BGP使用的路由策略的复杂性会影响BGP进程性能。必须根据配置的路由策略评估每个已接收或已发送的路由。一个非常长的策略需要在该操作上花费许多CPU周期。包含正则表达式的路由策略在处理时尤其繁重。正则表达式可帮助您以较少的行数表示路由策略,但处理时需要比不使用正则表达式的等效路由策略更多的CPU周期。
更新频率对BGP规模有重要影响。更新数量通常难以预测。您可以使用“advertisement-interval”命令来影响更新的频率,该命令可设置发送BGP)路由更新之间的最小间隔。对于iBGP对等体,默认值为0秒;对于eBGP对等体,默认值为30秒。
在高规模、高更新频率的环境中,将更新拆分为多个TCP数据段会对TCP进程资源造成很大压力。更大的路径MTU和更大的TCP MSS更适合BGP和TCP性能。
NSR是一个非常好的冗余功能,但它确实会影响BGP性能。在Cisco IOS XR路由器上,两个RP同时从入口线卡上的NPU直接接收每个BGP更新,这意味着活动RP无需花费时间将更新复制到备用RP。但是,活动RP生成的每个更新都必须发送到备用RP,并从那里发送到BGP对等体。这允许备用RP始终在序列号和确认号上保持最新,但是会对整体BGP性能产生影响。这就是为什么建议BGP RR是单RP路由器的原因。
缓慢的对等体可能会降低更新组中所有成员的更新速度,因为BGP进程必须将该更新保留在其内存中,直到所有对等体都确认该更新。如果您知道某些对等体速度较慢(例如网络传统部分的路由器),请提前将它们划分到更新组中。默认情况下,Cisco IOS XR通过syslog消息报告对等体速度较慢。您可以在全局或每邻居配置模式下使用BGP配置命令创建静态慢速对等体(从不与他人共享更新组)或微调动态慢速对等体行为slow-peer
。有关此内容的进一步说明,请参阅Cisco xrdocs.io门户上的Troubleshoot Slow BGP Convergence Due To Suboptimal Route Policies on IOS-XR。
如果多个BGP下一跳在短时间间隔内发生更改,并且在具有大量路由的地址系列(AF)中配置了严重下一跳触发延迟值0,则必须在每个下一跳更改事件上执行AF的完全漫游。AF重复遍历会增加具有较低临界下一跳触发延迟值的地址系列中的收敛时间。您可以通过运行“show bgp all nexthops”命令查看下一跳触发延迟值。
多维标度结果,特别是控制平面特征,高度依赖于特定的测试环境。如果更改某些参数,测试结果可能会有显着差异。
参数 |
价值 |
价值 |
Platform |
XRv9k设备(基于UCS M5) |
ASR9902 |
IOS XR版本 |
7.5.2 + Umbrella SMU,用于思科漏洞ID CSCwf09600 . (此总括式SMU的组件集成在Cisco IOS XR版本7.9.2及更高版本中) |
7.11.2 |
对等体 |
VPNv4 eBGP:2500 VPNv4 iBGP:1700 |
VPNv4 iBGP:2000 |
BGP路由 |
每个会话:200 总数:40万 每条路由的路径:1 |
每个会话:750 VPNv4:136万 VPNv6:15万 IPv4:95万 IPv6:20万 总数:约260万 每条路由的路径:1 |
IGP路由 |
1万(ISIS) |
1万(ISIS) |
BGP更新组 |
1 |
1 |
BGP计时器 |
默认 |
默认 |
LPTS BGP已知监察器速率 |
50,000 |
25,000 |
tcp num-thread configuration |
16 16 |
16 16 |
BGP send-buffer-size |
默认 |
默认 |
关键绩效指标(KPI)摘要 |
|
|
网络中放置BGP RR有两种方法:
在集中式/平面设计中,网络中的所有BGP RR客户端与包含完全相同信息的一组(通常是一对)BGP RR设备建立BGP对等。这种方法实施简单,在中小规模网络中效果良好。BGP表中的任何更改都会快速传播到所有BGP RR客户端。随着BGP RR客户端数量的增长,当BGP RR设备上的TCP连接数量增长到其性能受到影响的程度时,设计可以达到规模限制。
在分布式/分层设计中,网络分为多个区域。区域中的所有路由器与一组包含完全相同信息的BGP RR设备(通常是一对)建立BGP对等。这些BGP RR设备充当另一组(通常是一对)BGP RR设备的BGP RR客户端。此设计方法可实现轻松的网络扩展,同时使每个单一BGP RR上的TCP连接数量保持在特定限制内。
另一个设计注意事项是定制BGP更新的接收方范围。根据BGP RR客户端之间的VRF分布,值得考虑RT约束路由分布。如果所有BGP RR客户端在同一VRF中具有接口,则RT约束路由分配不会带来很多好处。但是,如果VRF在所有BGP RR客户端之间稀疏分布,则使用RT约束路由分配可显着减少BGP RR上bgp进程上的负ƒ。
监控BGP RR的关键绩效指标(KPI)对于确保正确的网络运行非常重要。
网络拓扑的重大变化(例如,主要DWDM链路抖动)可能会触发路由更新,从而产生流向BGP RR和/或来自BGP RR的过多流量。到达BGP RR的重要流量通常包括:
本文档的此部分说明了在典型BGP RR上需要监控的KPI,以及如何判断哪两种重要的BGP流量类型导致了高控制平面流量速率。
路由器内BGP数据包的路径如下图所示:
弃用 |
以太网控制器 — (数据包) — >数据路径转发器 — (数据包) — > LPTS — (数据包) — > SPP — (数据包) — > NetIO — (数据包) — > TCP — (消息) — > BGP |
注入 |
BGP — (消息) — > TCP — (数据包) — > NetIO — (数据包) — > SPP — (数据包) — >数据路径转发器 — (数据包) — >以太网控制器 |
KPI可以分为:
基础:
可选:
在XRv9000上,数据路径转发器是数据平面代理(DPA),而在ASR9000平台上,它是网络处理器(NP)。
用于查看DPA的负载和统计信息的有用命令是:
show controllers dpa statistics global
此命令显示所有非零计数器,通过这些计数器,您可以了解从网络接口传送到RP CPU、从RP CPU向网络接口注入的数据包的类型和数量,以及丢弃的数据包的数量:
RP/0/RP0/CPU0:xrv9k-01#show controllers dpa statistics global Index Debug Count ---------------------------------------------------------------------------- 350 TBPG L2 mailbox events 1 Index Punt Count ---------------------------------------------------------------------------- 1500 CDP 46790 1503 ARP 212 1611 IFIB 595305 1776 LLDP 94037 2001 IPv4 incomplete Tx adjacency 2 Index Inject Count ---------------------------------------------------------------------------- 744 CLNS multicast from fabric pre-route 321250 749 IPv4 from fabric 273993 765 Inject to fabric 595245 766 Inject to port 141033 Index Drop Count ---------------------------------------------------------------------------- 416 Egress UIDB in down state 1 474 IPv4 egress UIDB down 2 673 Pre-route PIT lookup missed 2
用于查看系统中每个NP的负载和统计信息的有用命令包括:
show controllers np load all
show controllers np counters all
ASR9000上的NP具有一组丰富的计数器,可显示已处理和丢弃的数据包的数量、速率和类型。
RP/0/RSP0/CPU0:ASR9k-B#show controllers np load all Node: 0/0/CPU0: ---------------------------------------------------------------- Load Packet Rate NP0: 0% utilization 937 pps NP1: 0% utilization 538 pps RP/0/RSP0/CPU0:ASR9k-B#
RP/0/RSP0/CPU0:ASR9k-B#show controllers np counters all Node: 0/0/CPU0: ---------------------------------------------------------------- Show global stats counters for NP0, revision v4 Last clearing of counters for this NP: NEVER Read 92 non-zero NP counters: Offset Counter FrameValue Rate (pps) ------------------------------------------------------------------------------------- 16 MDF_TX_LC_CPU 25475368 10 17 MDF_TX_WIRE 681957877 267 21 MDF_TX_FABRIC 683500690 267 33 PARSE_FAB_RECEIVE_CNT 681767730 267 37 PARSE_INTR_RECEIVE_CNT 1323024637 517 41 PARSE_INJ_RECEIVE_CNT 13949634 5 45 PARSE_ENET_RECEIVE_CNT 677655725 265 49 PARSE_TM_LOOP_RECEIVE_CNT 49331192 19 53 PARSE_TOP_LOOP_RECEIVE_CNT 1520846 1 109 RSV_DROP_EGR_UIDB_NO_MATCH 10 0 146 RSV_DROP_IPV4_RXADJ_DROP 1 0 164 RSV_DROP_ING_LAG_NO_MATCH 3 0 241 RSV_DROP_MPLS_LEAF_NO_MATCH 1312 0 <. . .>
由于标准BGP RR不在转发路径中,因此网络接口上收到的所有数据包都会被转发到控制平面。在将数据包传送到控制平面之前,BGP RR上的数据路径元素会执行少量的简单操作。由于数据路径元素不太可能成为拥塞点,因此线路卡上唯一需要监控的元素是LPTS统计信息。
请注意,对于XRv9k,硬件统计信息映射到vPP
命令:
show lpts pifib hardware police location <location> | inc "Node|flow_type|BGP"
示例:
RP/0/RP0/CPU0:xrv9k-01#sh lpts pifib hardware police location 0/0/CPU0 | i "Node|flow_type|BGP" Node 0/0/CPU0: flow_type priority sw_police_id hw_policer_addr Cur. Rate burst static_avgrate avgrate_type AggrAccepts AggrDrops TOS Value BGP-known high 6 220 50000 1250 2500 Global 16401392 0 01234567 BGP-cfg-peer medium 7 221 4000 1000 2000 Global 355976 1563 01234567 BGP-default low 8 222 3000 750 1500 Global 5212380 0 01234567 RP/0/RP0/CPU0:xrv9k-01#
查找内容:
如果观察到AggDrops相对于BGP已知的流类型出现显着跳跃,则开始查找已触发此类大规模控制平面更改的网络拓扑更改。
遥测数据路径:
Cisco-IOS-XR-lpts-pre-ifib-oper:lpts-pifib
注意:可以清除LPTS统计信息计数器。监视系统必须考虑这种可能性。
SPP是路由处理器或线卡CPU上第一个通过内部交换矩阵接收从NP或DPA传送的数据包的实体,也是软件数据包处理的最后一个点,然后将其移交给交换矩阵以注入NP或DPA。
SPP监控的相关命令:
show spp node-counters
show spp client
该命show spp node-counters
令可显示传送/注入数据包的速率,并且易于读取和理解。对于BGP会话,相关计数器位于活client/punt
动client/inject
RP下且位于其上。
更丰show spp client
富的输出,并且更详细地了解向客户端入队/丢弃的数据包的数量以及高水印。
RP/0/RP0/CPU0:xrv9k-01#show spp node-counters 0/RP0/CPU0: socket/rx Punted packets: 595305 Punt bulk reads: 6 Punt non-bulk reads: 595293 Management packets: 74200158 Management bulk reads: 1775930 Management non-bulk reads: 70031734 ------------------------------- socket/tx Injected packets: 595245 Management packets: 139939168 ------------------------------- xrv9k/classify Forwarded to SPP clients: 74795463 ------------------------------- client/inject Injected from client: 140534413 Non-bulk injects: 140534413 ------------------------------- client/punt punted to client: 74795371 no client found - send to defa: 92 ------------------------------- 0/0/CPU0: <. . .>
RP/0/RP0/CPU0:xrv9k-01#show spp client Sat Apr 20 17:11:40.725 UTC 0/RP0/CPU0: Clients ======= <. . .> netio, JID 254 (pid 4591) ---------------------------------------------------------- Reconnect Pending: F, Exited: F, Keep Queues: F, Pakman Client: T Quota Current: 0, Limit: 16384, Drops 0 Queues: Key Cur Max Enqueues High Watermark (Timestamp) Drops 0xffffffff 0 10 0 0 (22:13:52.195 Feb 21 24 UTC) 0 0x03000006 0 2048 0 0 (22:13:52.196 Feb 21 24 UTC) 0 0x03000007 0 3072 414881 1 (23:03:30.721 Feb 21 24 UTC) 0 0x03000008 0 1024 5 1 (13:41:28.389 Mar 13 24 UTC) 0 0x03000009 0 2048 180411 1 (23:03:31.565 Feb 21 24 UTC) 0
虽然LPTS监察器只显示相应监察器接受或丢弃的数据包计数,但在NetIO级别,我们可以看到传送到RP CPU的数据包的速率。因为在典型的BGP RR上,大多数收到的数据包是BGP数据包,所以整体NetIO速率非常接近地指示收到的BGP数据包的速率。
Command:show netio rates
示例:
RP/0/RP0/CPU0:xrv9k-01#show netio rates Netio packet rate for node 0/RP0/CPU0 ----------------------------------- Current rate (updated 0 seconds ago): Input: 7845 pkts/s Output: 10570 pkts/s Driver Output: 10598 pkts/s 1 minute rate (updated 0 seconds ago): Input: 7825 pkts/s Output: 10542 pkts/s Driver Output: 10569 pkts/s 5 minute rate (updated 0 seconds ago): Input: 7997 pkts/s Output: 10677 pkts/s Driver Output: 10704 pkts/s RP/0/RP0/CPU0:xrv9k-01#
查找内容:
遥测数据路径:
在punt路径上,NetIO从LPTS接收的数据包被传递到TCP和BGP。监控这些队列非常重要:
1. TCP高优先级队列,NetIO通过该队列向TCP传送数据包
2. BGP控制队列
3. BGP数据队列
在注入路径上,数据包由TCP创建并传递到NetIO。监控这些队列非常重要:
命令:
show netio clients
show processes bgp | i "Job Id"
show xipcq jid
show xipcq jid
queue-id
示例:
从NetIO到TCP,从NetIO角度查看:
RP/0/RP0/CPU0:xrv9k-01#show netio clients <. . .> Input Punt XIPC InputQ XIPC PuntQ ClientID Drop/Total Drop/Total Cur/High/Max Cur/High/Max <. . .> tcp L 0/340774 0/0 L 0/10/12800 0/0/0 H 0/44774091 H 0/784/12800
从TCP到NetIO,从NetIO角度查看:
RP/0/RP0/CPU0:xrv9k-01#show netio clients <. . .> XIPC queues Dropped/Queued Cur/High/Max ------------------------------------------------------------ OutputL 124860/9355257 0/14000/14000
NetIO到TCP,从TCP进程的角度查看:
RP/0/RP0/CPU0:xrv9k-01#show processes tcp | i "Job Id"
Job Id: 430
RP/0/RP0/CPU0:xrv9k-01#show xipcq jid 430 Mon Apr 17 16:16:11.315 CEST Id Name Size Cur Size Produced Dropped HWM ------ ------------------------------- ------ --------- ----------- ----------- -------- 17 XIPC_xipcq_12_0_9854_6506_i... 60000 0 39010269 0 960 16 XIPC_xipcq_12_0_9854_6506_i... 24000 0 31518436 0 1364 15 XIPC_tcp_124 3200 0 0 0 0 14 XIPC_tcp_125 9600 0 0 0 0 13 XIPC_tcp_psb_0 25600 0 0 0 0 10 XIPC_tcp_iq_9 102400 0 9486010 0 312 12 XIPC_tcp_iq_8 102400 0 8892274 0 280 9 XIPC_tcp_iq_5 102400 0 8291392 0 289 11 XIPC_tcp_iq_7 102400 0 9700123 0 319 8 XIPC_tcp_iq_6 102400 0 9378703 0 332 7 XIPC_tcp_iq_3 102400 0 7221706 0 261 6 XIPC_tcp_iq_4 102400 0 9791070 0 308 4 XIPC_tcp_ctrl_iq_1 4266 0 0 0 0 5 XIPC_tcp_iq_2 102400 0 9699027 0 295 3 XIPC_tcp_ctrl_iq_0 4266 0 209909 0 9 2 XIPC_tcp_i1 12800 0 39460564 0 784 1 XIPC_tcp_i0 12800 0 212540 0 10
TCP到BGP:
RP/0/RP0/CPU0:xrv9k-01#show processes bgp | i "Job Id" Job Id: 1078 RP/0/RP0/CPU0:xrv9k-01#show xipcq jid 1078 Mon Apr 17 16:09:33.046 CEST Id Name Size Cur Size Produced Dropped HWM ------ ------------------------------- ------ --------- ----------- ----------- -------- 2 XIPC_xipcq_12_0_9854_6506_i... 60000 2 35546667 0 15034 1 XIPC_xipcq_12_0_9854_6506_i... 24000 0 1369029 0 50 RP/0/RP0/CPU0:xrv9k-01#
BGP数据队列:
RP/0/RP0/CPU0:xrv9k-01#show xipcq jid 1078 queue-id 1 XIPC_xipcq_12_0_9854_6506_inst_1_data_toapp: Magic: 12344321 Version: 0 SHM Size: 192392 Owner PID: 9854 Owner JID: 1078 Queue ID: 1 Owner MQ handle: 483 User Context: 0x64 Interrupt Flag: 0 Sent-on-full Flag: 0 Max Queue Size: 24000 Queue Size: 0 Client Queue Size: 24000 High watermark: 50 Last Trigger Sent: Mon Apr 17 16:11:10.009 CEST MQ Send Errors: 0 Priority Queues: Prio Size Drops Total ---------- ---------- ---------- ---------- Unspec 24000 0 0 Normal 24000 0 1396159 Medium 24000 0 0 High 24000 0 0 Crucial 24000 0 0 RP/0/RP0/CPU0:xrv9k-01#
BGP控制队列:
RP/0/RP0/CPU0:xrv9k-01#show xipcq jid 1078 queue-id 2 XIPC_xipcq_12_0_9854_6506_inst_1_ctrl_toapp: Magic: 12344321 Version: 0 SHM Size: 480392 Owner PID: 9854 Owner JID: 1078 Queue ID: 2 Owner MQ handle: 485 User Context: 0x64 Interrupt Flag: 0 Sent-on-full Flag: 0 Max Queue Size: 60000 Queue Size: 0 Client Queue Size: 60000 High watermark: 15034 Last Trigger Sent: Mon Apr 17 16:12:49.483 CEST MQ Send Errors: 0 Priority Queues: Prio Size Drops Total ---------- ---------- ---------- ---------- Unspec 60000 0 0 Normal 60000 0 37313633 Medium 60000 0 0 High 60000 0 0 Crucial 60000 0 0 RP/0/RP0/CPU0:xrv9k-01#
查找内容:
为了更好地跟踪高水印值的演进,必须在每次读取后清除高水印值。请注意,这不仅会清除HWM计数器,还会清除所有队列统计信息。清除XIPC队列统计信息的命令格式为: clear xipcq statistics queue-name
由于队列名称通常包含进程ID(PID),因此队列名称在进程重新启动后会发生更改。
清除相关队列统计信息的命令示例:
clear xipcq statistics queue-name XIPC_tcp_i0
clear xipcq statistics queue-name XIPC_tcp_i1
clear xipcq statistics queue-name XIPC_xipcq_12_0_9854_6506_inst_1_data_toapp
clear xipcq statistics queue-name XIPC_xipcq_12_0_9854_6506_inst_1_ctrl_toapp
遥测路径:
BGP维护每个BGP对等体的输入和输出队列。当TCP将数据传递到BGP时,数据位于InQ中,但BGP尚未处理这些数据。当BGP等待TCP将数据拆分为数据包并传输时,数据位于OutQ。BGP InQ/OutQ的瞬时大小很好地指示了BGP进程的繁忙程度。
命令:
show bgp <AFI> <SAFI> summary
示例:
RP/0/RP0/CPU0:xrv9k-01#show bgp all all summary Address Family: VPNv4 Unicast ----------------------------- BGP router identifier 192.168.0.1, local AS number 65000 BGP generic scan interval 60 secs BGP table state: Active Table ID: 0x0 BGP main routing table version 2208096 BGP scan interval 60 secs BGP is operating in STANDALONE mode. Process RcvTblVer bRIB/RIB LabelVer ImportVer SendTblVer StandbyVer Speaker 2208096 2208096 2208096 2208096 2208096 2208096 Neighbor Spk AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down St/PfxRcd 10.0.0.2 0 65000 180 601022 2208096 0 0 02:56:18 100 10.0.0.3 0 65000 180 601022 2208096 0 0 02:56:18 100 10.0.0.4 0 65000 180 601022 2208096 0 0 02:56:21 100 10.0.0.5 0 65000 180 601022 2208096 0 0 02:56:21 100 10.0.0.6 0 65000 180 601022 2208096 0 0 02:56:18 100
查找内容:
遥测路径:
如果网络拓扑不稳定,某些BGP邻居可以连续发送更新或撤消。然后,BGP RR必须将此路由表更改复制到其所有RR客户端上千次。因此,监控从邻居收到的消息速率以跟踪不稳定来源非常重要。
命令:
show bgp <AFI> <SAFI> summary
示例:
RP/0/RP0/CPU0:xrv9k-01#show bgp all all summary Address Family: VPNv4 Unicast ----------------------------- BGP router identifier 192.168.0.1, local AS number 65000 BGP generic scan interval 60 secs BGP table state: Active Table ID: 0x0 BGP main routing table version 2208096 BGP scan interval 60 secs BGP is operating in STANDALONE mode. Process RcvTblVer bRIB/RIB LabelVer ImportVer SendTblVer StandbyVer Speaker 2208096 2208096 2208096 2208096 2208096 2208096 Neighbor Spk AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down St/PfxRcd 10.0.0.2 0 65000 180 601022 2208096 0 0 02:56:18 100 10.0.0.3 0 65000 180 601022 2208096 0 0 02:56:18 100 10.0.0.4 0 65000 180 601022 2208096 0 0 02:56:21 100 10.0.0.5 0 65000 180 601022 2208096 0 0 02:56:21 100 10.0.0.6 0 65000 180 601022 2208096 0 0 02:56:18 100
RR客户端队列的MsgSent数量大致相同,但某些邻居的MsgRcvd数量可能高于其他邻居。您必须捕获此命令的多个快照才能评估消息速率。
一旦识别出违规的对等体,就可以通过诸如show bgp neighbor
和/或之类的其他命令来尝试了解哪些前缀在抖动,以及它们始终是相同还是不同show bgp neighbor
show bgp recent-prefixes
。
注意:MsgRcvd和MsgSent计数器是每个邻居,而不是每个地址系列。因此,当运行类似的show bgp all all summary
命令时,您会在各个地址系列的各节中看到每个邻居的相同计数器。它们不代表该地址系列接收/发送到该邻居的消息的数量,而是跨地址系列的消息的数量。
必须在每台路由器上监控CPU使用率,但在具有大量专用于控制平面的CPU内核的路由器上,某些读数可能是不直观的。在具有大量专用于路由处理器(RP)的CPU内核的BGP RR上(对于XRv9k设备),活动线程在不同的CPU内核上运行,而许多CPU内核保持空闲。因此,某些CPU核心可能非常繁忙,但所有CPU核心计算的总体CPU使用率保持中等。
因此,要通过CLI正确监控CPU核心利用率,请使用命show processes cpu thread
令。
Cisco IOS®维护每个TCP会话的详细统计信息。CLI命令show tcp brief
显示所有现有TCP会话的列表。在此摘要输出中,您可以看到每个TCP会话的以下信息:
show cef vrf all summary | utility egrep "^VRF:|Vrfid" | utility egrep -B1
由于公认BGP端口号为179,您可以将显示的TCP会话限制为与BGP应用关联的会话。
示例:
RP/0/RSP0/CPU0:ASR9k-B#show tcp brief | include "PCB|:179 " PCB VRF-ID Recv-Q Send-Q Local Address Foreign Address State 0x00007ff7d403bde0 0x60000000 0 0 :::179 :::0 LISTEN 0x00007ff7d403b020 0x60000002 0 0 :::179 :::0 LISTEN 0x00007ff7d403d130 0x60000000 0 0 192.168.0.4:50144 192.168.0.5:179 ESTAB 0x00007ff7a4025650 0x60000000 0 0 0.0.0.0:179 0.0.0.0:0 LISTEN 0x00007ff7a4024a50 0x60000002 0 0 0.0.0.0:179 0.0.0.0:0 LISTEN
可以使用显示的PCB值获取特定TCP会话的统计信息。提供对TCP进程统计信息深入了解的CLI命令:
全局:
show tcp statistics clients location <active_RP>
show tcp statistics summary location <active_RP>
每个PCB:
show tcp brief | i ":179"
show tcp detail pcb <pcb> location 0/RP0/CPU0
show tcp statistics pcb <pcb> location <active_RP>
全局TCP统计信息命令显示TCP会话的整体运行状况。除了数据包统计信息(in/out)外,您还可以看到例如是否有具有校验和错误的数据包、格式错误的数据包、由于身份验证错误而丢弃的数据包、无序的数据包、具有窗口后数据的数据包,这可以指示TCP对等体的行为。
在每PCB命令中,您可以看到TCP会话的重要参数,如MSS、最大往返时间等。
命令输出中的相关计数show tcp detail pcb
是:
RP/0/RSP0/CPU0:ASR9k-B#show tcp detail pcb 0x4a4400e4 ============================================================== Connection state is ESTAB, I/O status: 0, socket status: 0 Established at Sat Apr 20 18:26:26 2024 PCB 0x4a4400e4, SO 0x4a42c0ac, TCPCB 0x4a43b708, vrfid 0x60000000, Pak Prio: Normal, TOS: 64, TTL: 255, Hash index: 402 Local host: 10.10.10.229, Local port: 179 (Local App PID: 856311) Foreign host: 10.10.10.254, Foreign port: 46980 (Local App PID/instance/SPL_APP_ID: 856311/0/0) Current send queue size in bytes: 0 (max 16384) Current receive queue size in bytes: 0 (max 65535) mis-ordered: 0 bytes Current receive queue size in packets: 0 (max 60) Timer Starts Wakeups Next(msec) Retrans 2795 0 0 SendWnd 1341 0 0 TimeWait 0 0 0 AckHold 274 2 0 KeepAlive 333 1 299983 PmtuAger 0 0 0 GiveUp 0 0 0 Throttle 0 0 0 FirstSyn 0 0 0 iss: 2030796738 snduna: 2034498828 sndnxt: 2034498828 sndmax: 2034498828 sndwnd: 3291 sndcwnd: 4200 irs: 285455091 rcvnxt: 285455710 rcvwnd: 64917 rcvadv: 285520627
SRTT: 162 ms, RTTO: 415 ms, RTV: 253 ms, KRTT: 0 ms
minRTT: 0 ms, maxRTT: 247 ms ACK hold time: 200 ms, Keepalive time: 300 sec, SYN waittime: 30 sec Giveup time: 0 ms, Retransmission retries: 0, Retransmit forever: FALSE Connect retries remaining: 0, connect retry interval: 0 secs <...> RP/0/RSP0/CPU0:ASR9k-B#
BGP路由表存储在BGP进程堆内存中。路由表存储在RIB进程堆内存中。
用于堆内存监控的有用命令:
show memory summary
show memory summary detail
show memory-top-consumers
show memory heap summary all
遥测传感器路径:
Cisco-IOS-XR-nto-misc-oper:memory-summary/nodes/node/detail
FIB将转发条目存储在共享内存空间中。
用于共享内存监控的有用命令:
show memory summary
show memory summary detail
show shmwin summary
提供有关BGP进程性能的内部数据的有用命令:
show bgp process performance-statistics
show bgp process performance-statistics detail
另一个有用的命令是显示BGP融合整体状态的命令: show bgp convergence
当网络稳定时,您会看到如下内容:
RP/0/RP0/CPU0:ASR9k-B#show bgp convergence Mon Dec 18 13:55:47.976 UTC Converged. All received routes in RIB, all neighbors updated. All neighbors have empty write queues. RP/0/RP0/CPU0:ASR9k-B#
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
01-Aug-2024 |
初始版本 |