本文档说明路由器报告IPC相关日志消息的原因以及如何解决此问题。本文档还包括对IPC术语的回顾。
本文档的读者应掌握以下这些主题的相关知识:
思科路由器管理
IPC及其术语
本文档中的信息基于以下软件和硬件版本:
所有支持Cisco 12000、10000、7600和7500系列路由器的Cisco IOS®软件版本。
Cisco 12000、10000、7600、7500 系列路由器.
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档约定的更多信息,请参考 Cisco 技术提示约定。
Cisco IOS软件进程间通信(IPC)模块提供了一个通信基础设施,分布式系统中的进程可以通过该基础设施相互交互。它还提供跨背板、网络和共享内存的透明通信。
IPC服务是分布式系统中线卡(LC)和中央路由处理器(RP)通过交换从RP发送到LC的IPC消息以及主用和备用RP之间相互通信的方式。这些消息包括配置命令和对这些命令的响应,以及LC需要向RP报告的“事件”。
Cisco 12000系列、Cisco 10000系列、Cisco 7600系列和Cisco 7500系列使用基于IPC消息的分布式架构。在极少数情况下,这些路由器可能会报告以下与IPC相关的日志消息:
Cisco 12000系列-%IPC-3-NOBUFF:主IPC消息报头缓存已清空
Cisco 7500系列- %IPC_RSP_CBUS-3-NOBUF:没有更多IPC memd缓冲区来传输IPC消息
注意:IPC也用于Cisco 6400系列和Cisco 7304系列。
更常见的IPC术语有:
IPC — 进程间通信。
IPC地址 — 由16位座席ID和16位端口ID组成的32位字。
IPC客户端 — 使用IPC服务的软件模块。
IPC端口 — IPC内用作所有通信的源和目标的通信终端。
IPC Seat - IPC座席是可借助IPC进行通信的计算元素,如处理器。IPC座席是IPC客户端和端口所在的位置。
IPC会话 — IPC会话是两个IPC端口之间的活动单工通信通道。
使用IPC的所有通信都发生在IPC端口之间。端口是IPC中的通信终端。每个IPC端口都与称为IPC地址的逻辑地址关联。IPC在发送IPC消息时使用IPC端口的IPC地址作为返回地址,或在接收IPC消息时使用目标地址。
IPC地址由本地IPC座席管理器分配给IPC端口。座位是IPC协议当前正在执行的处理器。座席管理器是维护本地IPC端口列表和本地名称服务以及维护开放IPC通信会话的过程。
创建IPC端口时,IPC客户端会为IPC端口分配端口名称。其他IPC客户端在引用新创建的IPC端口时,可以使用端口名称。端口名称是由座席名称和端口功能或描述组成的字符串。
Cisco IPC在向端口传输时具有三个不同级别的可靠性;这在打开端口时定义。
可靠:消息的传送是保证的。失败后,将重试传送。
不可靠:交付是尽力而为的尝试。没有指示传送是否失败。
不可靠,通知:邮件的传送不保证。但是,发送方会收到故障通知。
show ipc nodes命令显示所谓IPC领域中存在的IPC席位。
Router#show ipc nodes There are 3 nodes in this IPC realm. ID Type Name Last Last Sent Heard 10000 Local IPC Master 0 0 1030000 RSP-CY RSP IPC card slot 3 7 7 1000000 RSP-CY RSP IPC card slot 0 10 10
当存在从RP时,show ipc nodes命令会列出从RP地址,如Cisco 10000系列路由器的以下输出示例所示:
10k-2#show ipc nodes There are 5 nodes in this IPC realm. ID Type Name Last Last Sent Heard 10000 Local IPC Master 0 0 20000 UDP C10K Line Card slot 2/0 3 3 30000 UDP C10K Line Card slot 3/0 3 3 40000 UDP C10K Line Card slot 1/0 3 3 50000 Ethernet Slave 18 45
在创建IPC端口后,IPC客户端随后可以向由IPC Master控制的全局名称服务注册其端口名称。
相互通信的IPC座席集合称为区域。对于每个IPC区域,单个IPC席位被指定为IPC区域管理器或主用,或简称IPC主用。从逻辑上讲,IPC协议中的所有IPC席位连接都是点对点连接。所有IPC座席通信通常在主用RP和线卡或备用RP之间。线卡到线卡通信是可能的。
设备在交换任何IPC消息之前,必须创建本地端口并定位目标端口。虽然设备创建本地端口,但这些端口不被视为源端口,因为IPC通信是单工的。当RP要与LC通信时,它首先在LC上打开一个端口(LC需要创建该端口,并在IPC Master - RP中注册该端口)。 打开成功后,正常IPC消息流量可以启动。
在Cisco 12000和7500系列中,路由处理器(千兆路由处理器(GRP)或路由交换处理器(RSP))和智能线卡充当IPC终端。“IPC Master”控制一组处理器。在路由器初始化时,IPC Master会发现系统中存在在线卡的IPC终端。为此,IPC Master扫描所有插槽,识别控制器类型,并确定控制器是否具有IPC功能。
使用show ipc ports命令查看这些端口。在IPC从设备上,此命令列出在该特定IPC座席上创建的端口。在IPC Master上发出此命令时,该命令显示在Master上创建的端口,以及IPC从设备(LC)注册的端口。 此外,show ipc ports open命令还列出从此IPC席位打开的端口。下面是示例输出:
router#show ipc ports There are 87 ports defined. Port ID Type Name 10000.1 unicast IPC Master:Zone 10000.2 unicast IPC Master:Echo 10000.3 unicast IPC Master:Control 10000.4 unicast IPC Master:Init port_index = 0 seat_id = 0x1020000 last sent = 0 last heard = 1 port_index = 1 seat_id = 0x1010000 last sent = 0 last heard = 1 port_index = 2 seat_id = 0x1040000 last sent = 0 last heard = 1 port_index = 3 seat_id = 0x1050000 last sent = 0 last heard = 1 port_index = 4 seat_id = 0x1060000 last sent = 0 last heard = 1 port_index = 5 seat_id = 0x1070000 last sent = 0 last heard = 1 port_index = 6 seat_id = 0x1080000 last sent = 0 last heard = 1 port_index = 7 seat_id = 0x1090000 last sent = 0 last heard = 1 port_index = 8 seat_id = 0x10A0000 last sent = 0 last heard = 1 port_index = 9 seat_id = 0x10B0000 last sent = 0 last heard = 1 port_index = 10 seat_id = 0x1030000 last sent = 0 last heard = 1 10000.5 unicast Remote TTY Server Port port_index = 0 seat_id = 0x1070000 last sent = 0 last heard = 2 port_index = 1 seat_id = 0x1010000 last sent = 0 last heard = 2 port_index = 3 seat_id = 0x1040000 last sent = 0 last heard = 2 port_index = 4 seat_id = 0x1050000 last sent = 0 last heard = 2 Port ID Type Name port_index = 5 seat_id = 0x1060000 last sent = 0 last heard = 3 port_index = 6 seat_id = 0x1080000 last sent = 0 last heard = 2 port_index = 7 seat_id = 0x1090000 last sent = 0 last heard = 2 port_index = 8 seat_id = 0x10A0000 last sent = 0 last heard = 2 port_index = 9 seat_id = 0x10B0000 last sent = 0 last heard = 2 [output omitted]
port_index字段是目标IPC在处理传入消息时使用的会话ID。当存在从RP时,show ipc ports命令显示备用端口信息,如以下输出示例所示:
10k-2#show ipc ports There are 16 ports defined. Port ID Type Name 10000.1 Unicast IPC Master:Zone 10000.2 Unicast IPC Master:Echo 10000.3 Unicast IPC Master:Control 10000.4 Unicast Microcode Server 10000.5 Unicast RFS Server Port 10000.6 Unicast Remote File System Server Port 10000.7 Unicast Master : TTY Server Port port_index = 0 seat_id = 0x50000 last sent = 0 last heard = 0 10000.8 Unicast C10K Line Card API port_index = 0 seat_id = 0x20000 last sent = 0 last heard = 58521 port_index = 1 seat_id = 0x30000 last sent = 0 last heard = 64235 port_index = 2 seat_id = 0x40000 last sent = 0 last heard = 13486 50000.3 Unicast Slave IPC:Control 50000.9 Unicast Secondary RFS Server Port 50000.A Unicast Secondary Old RFS Server Port 50000.8 Unicast Slave : TTY Client Port 50000.7 Unicast Secondary Services Port 50000.B Unicast IF-con server port 50000.C Unicast RF : Standby 50000.D Unicast CF : Standby
IPC消息是IPC客户端之间交换的基本通信单元。在正常操作期间,RP和线卡通过IPC消息频繁交互。消息包括报头、源和目的地址信息以及消息数据。
在IPC报头中,IPC定义了多个不同的消息标志,这些标志会改变IPC消息的接收处理。在定义的标志中,四个标志与所使用的通信类型(不可靠、不可靠通知、可靠)相关,另外四个标志与远程过程调用(RPC)消息或内部控制处理相关,两个根本不使用。
以下是一些IPC客户端:
RP发送的命令,用于查询线卡以获取版本、内存量、接口统计信息、接口状态更改和配置数据等信息。
对RP命令的响应,这些命令从线卡发送到RP。IPC消息中包含的信息示例包括定时统计信息更新和窗口消息,这些消息指示线卡可以排队的IPC消息数量。
异步生成的事件或消息。例如,报告错误(如输入错误、残帧和巨型帧),以及报告统计信息和其他记帐信息(如字节和数据包计数)。
主用和备用RP之间的消息,以检查点正确操作。
某些Cisco IOS软件进程需要在线卡和路由处理器之间交换信息。这些进程被视为IPC应用。示例包括思科快速转发(CEF)和远程文件系统,以在思科12000系列路由处理器之间交换映像。
表1列出了IPC协议栈的各层:
表1 - IPC协议栈的层IPC协议栈 |
---|
IPC应用 |
IPC机制本身 |
交换矩阵(12000系列)或CBUS(7500系列)数据层 |
7500系列和12000系列路由器都分配了一组特殊的缓冲区来存储排队等待传输并等待来自目标IPC端口的确认的IPC消息。
7500系列在系统数据包内存(MEMD)中使用一组特殊的缓冲区。 有关MEMD和7500架构的详细信息,请参阅导致“%RSP-3-RESTART:cbus complex"?并了解VIP CPU以99%和接收端缓冲运行。
在7500系列上,IPC队列位于处理器内存中。在某些Cisco IOS版本中(请参阅以下输出示例),处理器内存中的聚合IPC缓冲区空间可通过ipc cache size命令调整。MEMD包含一些无法调整的有限缓冲区。当在处理器内存中入队的IPC消息被发送,并且MEMD中有一些可用空间时,IPC消息在被发送到LC之前会从处理器内存“移动”到MEMD。
使用show ipc queue命令查看IPC队列的状态。
Router#show ipc queue There are 0 IPC messages waiting for acknowledgment in the transmit queue. There are 0 IPC messages waiting for a response. There are 0 IPC messages waiting for additional fragments. There are 0 IPC messages currently on the IPC inbound. There are 0 messages currently in use by the system.
注意:这些队列是IPC维护的软件队列,不得与7500系列的QA-ASIC硬件队列相混淆。
在12000系列上,GRP通过交换矩阵发送IPC消息。在启动时,缓冲区分割算法会在所谓的tofab(接收端)和frfab(传输端)内存中创建两组池。如show controller tofab queues命令的输出示例(请参阅下文)所示,这两组是Non-IPC Free Queues和IPC Queues。有关如何解释输出的指导,请参阅Cisco 12000系列Internet路由器:常见问题.
在Cisco 12000系列上,GRP在初始化时分配一定数量的消息报头。为了改进这些报头的内存分配,已进行了多次修改。
Cisco IOS软件版本12.0(18)S/ST已将GRP和LC上在初始化时创建的默认消息报头数从1000增加到5000(请参阅以下输出)。 从版本12.0(23)S及更高版本,允许IPC报头缓存动态增长。因此,不再需要手动调整。
LC在动态RAM(DRAM)中维护IPC消息报头。 此外,LC在tofab和fab内存中为IPC消息预留了100个缓冲区。对于每条传输的IPC消息,LC必须从缓存请求IPC消息报头,然后向frab缓冲区管理ASIC(BMA)发送请求,以便IPC消息缓冲区用于通过交换矩阵将消息发送到GRP。
LC-Slot1#show controllers tofab queues Carve information for ToFab buffers SDRAM size: 33554432 bytes, address: 30000000, carve base: 30029100 33386240 bytes carve size, 4 SDRAM bank(s), 8192 bytes SDRAM pagesize, 2 carve(s) max buffer data size 9248 bytes, min buffer data size 80 bytes 40606/40606 buffers specified/carved 33249088/33249088 bytes sum buffer sizes specified/carved Qnum Head Tail #Qelem LenThresh ---- ---- ---- ------ --------- 5 non-IPC free queues: 20254/20254 (buffers specified/carved), 49.87%, 80 byte data size 1 17297 17296 20254 65535 12152/12152 (buffers specified/carved), 29.92%, 608 byte data size 2 20548 20547 12152 65535 6076/6076 (buffers specified/carved), 14.96%, 1568 byte data size 3 32507 38582 6076 65535 1215/1215 (buffers specified/carved), 2.99%, 4544 byte data size 4 38583 39797 1215 65535 809/809 (buffers specified/carved), 1.99%, 9248 byte data size 5 39798 40606 809 65535 IPC Queue: 100/100 (buffers specified/carved), 0.24%, 4112 byte data size 30 72 71 100 65535 Raw Queue: 31 0 17302 0 65535 [output omitted]
注意:有关本节中列出的增强功能的IOS版本列表,请参阅表2。
在极少数情况下(例如,当大量信息需要在IPC客户端之间交换时),IPC缓冲区缓存可能会耗尽。Cisco IOS软件使用以下日志消息报告此情况:
Oct 7 03:36:49: %RSP-3-RESTART: interface Serial0/0/4:1, not transmitting Oct 7 03:39:51: %IPC_RSP_CBUS-3-NOBUF: No more IPC memd buffers to transmit IPC message Oct 7 03:40:09: %RSP-3-RESTART: interface Serial0/0/2:1, not transmitting Oct 7 03:40:19: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1/0, changed state to down Oct 7 03:40:19: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1/1, changed state to down Oct 7 03:40:19: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1/2, changed state to down Oct 7 03:40:19: %LINEPROTO-5-UPDOWN: Line protocol on InterfaceSerial0/1/3, changed state to down Oct 7 03:40:21: %IPC_RSP_CBUS-3-NOBUF: No more IPC memd buffers to transmit IPC message Oct 7 03:40:26: %FIB-3-FIBDISABLE: Fatal error, slot 0: IPC failure Oct 7 03:40:26: %FIB-3-FIBDISABLE: Fatal error, slot 1: IPC failure Oct 7 03:40:26: %FIB-3-FIBDISABLE: Fatal error, slot 4: IPC failure Oct 7 03:40:26: %FIB-3-FIBDISABLE: Fatal error, slot 5: IPC failure Oct 7 03:40:29: %LINEPROTO-5-UPDOWN: Line protocol on Interface
如上输出所示,RP在此情况下禁用所有线卡上的CEF,因为它将无法再借助IPC更新线卡上的CEF表。因此,FIBDISABLE消息会针对所有线卡进行报告。
要解决这些故障,可能需要增加RP和IPC内存在线卡上的IPC缓存。在执行此操作之前,请使用show ipc status命令检查RP或LC或两者是否用尽了IPC缓冲区。从RP和LC获取此输出并检查它。
最初,在IPC的帮助下为所有系统分配的默认缓冲区数为1000个缓存邮件报头,这些报头在入站和出站邮件之间共享。根据安装的Cisco IOS软件版本,IPC缓存的消息报头数量为静态、动态或可调整。
以下是来自具有默认1000消息报头的路由器的show ipc status命令的输出。
注意:Cisco IOS软件版本12.2T和12.2S对此命令的输出进行了更改。
router#show ipc status IPC System Status: This processor is the IPC master server. 1000 IPC message headers in cache 4049362 messages in, 92615 out, 4048932 delivered to local port, 352 acknowledgments received, 386 sent, 0 NACKS received, 0 sent, 15326 messages dropped on input, 154 messages dropped on output 0 no local port, 110 destination unknown, 0 no transport 0 missing callback or queue, 34 duplicate ACKs, 0 retries, 0 message timeouts. 0 ipc_output failures, 0 mtu failures, 7707 msg alloc failed, 0 emer MSG alloc failed, 0 no origs for RPC replies 0 pak alloc failed, 0 memd alloc failed 0 no hwq, 0 failed opens, 0 hardware errors
要分配的所需内存量取决于平台上的卡类型(RP或LC、RSP或VIP),以及需要IPC的应用活动(例如分布式CEF)。
从Cisco IOS软件版本12.0(23)S、12.2(18)S和新的IOS系列12.3和12.3T,IPC消息缓存是动态管理的,而不是IPC缓存的静态分配。针对IPC消息缓存因突发性过重而耗尽的问题,提出了动态增大和缩减消息缓存的方法。在初始化时,系统分配平台指定的默认消息数。当空闲消息数量不足“最小”缓冲区时,它会通知关键后台进程以增加缓存。这使IPC能够继续增大缓存以满足其客户端的需求。如果IPC在指定时间段内从未使用最近分配的缓冲区,则此过程开始收缩。当缓存达到默认大小时,缓存将停止收缩。在CSCdv57496中引入了这种性能改进。随着CSCdv57496的实现,ipc cache <size>命令不再自动工作。这在所有IPC平台中都有效。
重要说明:从Cisco IOS软件版本12.3(5.5)T中,已删除手动调整IPC缓存的功能。有关详细信息,请参阅CSCec17505(仅限注册客户)。
当您检查show ipc queue命令的输出时,您必须看到以下内容:
c7500#show ipc queue Message waiting for acknowledgement in Tx queue : 0 Maximum acknowledgement msg usage in Tx queue : 0 Message waiting for additional Fragments : 0 Maximum message fragment usage : 0 There are 0 IPC messages waiting for a response. There are 0 IPC messages currently on the IPC inboundQ. Messages currently in use : 0 Message cache size : 1000 Maximum message cache usage : 1344 0 times message cache crossed 5000 [max] Emergency messages currently in use : 0 Inbound message queue depth 0 Zone inbound message queue depth 0
如果路由器运行的Cisco IOS软件版本不包括动态管理的IPC缓存缓冲区,即12.0(23)S、12.2(18)S、12.3和12.3T之前的映像,则可以手动增加RP上的IPC缓存和线卡上的IPC内存。在执行此操作之前,请使用show ipc status命令检查RP、LC或两者是否用尽了IPC缓冲区。从RP和LC获取此输出并检查它。
如有必要,您可以使用以下命令来调节记忆:
ipc cache 5000配置命令,用于增加RP上的IPC报头缓存。
ipc缓存<size> [slot {slot_num | all}]命令以增加Cisco 12000 LC上的缓存。
注意:为IPC消息分配更多内存时,可用于其他进程的内存会减少。单个IPC消息的大小实际上会因Cisco IOS软件分支而异。使用show memory summary命令检查处理器池中是否有足够的可用内存。
注意:有关本节中列出的增强功能的IOS版本列表,请参阅表2。
在某些情况下,您可能还希望调整RP和LC之间的IPC吞吐量。当RP需要将大型CEF表上传到LC时,尤其如此。例如,当路由器从BGP对等体接收大量路由信息时,路由器启动时会发生这种情况。可以使用ip cef linecard ipc memory xxxxx命令在LC上配置额外的IPC缓冲,以增加IPC带宽。此命令由CSCds89515引入(仅限注册客户)。 此内存的值已设置为CSCdu54205(仅限注册客户)和CSCuk27162(仅限注册客户)的可接受默认值。
以下命令指示更改此参数时的结果:
Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#ip cef line ipc mem 20000 Router(config)#^Z Router#show cef state ... RP state: Expanded LC ipc memory: 20000 Kbytes ... or, alternatively: Router#show cef line Slot MsgSent XDRSent Window LowQ MedQ HighQ Flags 0 12515 21687 505 0 0 0 up 1 12515 21675 505 0 0 0 up 3 12515 21701 505 0 0 0 up 5 12515 21700 505 0 0 0 up 2 12518 22008 505 0 0 0 up Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#ip cef line ipc mem 20000 Router(config)#^Z Router#show cef line Slot MsgSent XDRSent Window LowQ MedQ HighQ Flags 0 12538 22097 4966 0 0 0 up 1 12538 22081 4966 0 0 0 up 3 12538 22115 4966 0 0 0 up 5 12538 22114 4966 0 0 0 up 2 12541 22418 4966 0 0 0 up
表2概述了在Cisco IOS软件中实施的增强功能,可在不同平台上手动和动态调整IPC内存。
表2 - Cisco IOS软件的增强功能Cisco Bug ID | 固定于 | Enhancement(增强) |
---|---|---|
CSCdk75315(仅限注册客户) | 12.0(5)S 12.0(5)12.0(5)T 11.3(10)AA | 引入了IPC缓存大小,可通过ipc cache <size>命令进行配置。 |
CSCds89515(仅限注册客户) | 12.2(4)B 12.1(9)E 12.1(8a)E 12.2(3)T 12.2(2)S 12.1(9)12.0(14)ST1 12.2(2)12.2(1)T 12.0(15))S3 12.0(16)ST 12.0(16)S | 在Cisco 12000系列互联网路由器上,分布式思科快速转发(dCEF)可以禁用,因为在大型路由更新期间内存不足(例如,启动时)。 解决方法是减少边界网关协议(BGP)中的最大路径,以减少CEF传播到线卡的信息量。或者,减小TCP窗口大小以降低传入BGP更新的速度。请参见Achive Optimal Routing and Reduce BGP Memory Consumption。或者,您也可以输入ip cef linecard ipc memory 0-128000接口配置命令。线卡处理器或主内存的数量限制为总内存的50%。此命令允许您为CEF路由的队列分配更大量的线卡处理器内存,以更新消息。它允许RP更快地发布CEF更新以释放内存,并防止RP出现内存不足的情况。根据通用接口处理器(VIP)的数量,dCEF需要RSP上大量临时内存来缓冲绑定到VIP的IPC消息,尤其是当大型BGP对等体出现或转发信息库(FIB)在CBUS复杂或VIP崩溃后传播到VIP时(或当发出clear cef line命令时)。 |
CSCdu21591(仅限注册客户) | 12.0(17)ST4 12.0(18)ST 12.0(18)S | 在12000系列路由器上将默认IPC消息报头缓存大小从1000增加到5000。之前,解析器接受了硬编码值1000和15000之间的任何数字。如今,解析器只接受平台定义的最小和最大高速缓存大小之间的数字。此外,最初,即使在配置中执行no ipc cache命令以删除自定义IPC缓存值,也无法从配置中清除ipc cache命令。相反,它插入了ipc cache x命令,其中x是当前定义的默认缓存大小。如今,no ipc cache命令具有预期行为。它会从配置中完全删除ipc cache命令。 |
CSCdu12540 | 12.0(19)ST 12.0(19)S | 仅适用于Cisco 12000系列:最初,ipc cache <size>命令只适用于RP IPC缓存。现在,ipc cache命令可在LC上使用,如下所示: ipc cache <size> [slot {slot_num | all}]slot_num和所有选项并非互斥。例如,以下命令有效:ipc cache 4000 slot all ipc cache 3000 slot 5这些命令将插槽5中的缓存大小增加到3000,并将所有其他插槽的缓存大小增加到4000。如果要使用all选项覆盖LC以前的缓存大小配置语句,请确保还使用“NOPREFIX”删除非易失性RAM(NVRAM)中的以前命令,并实现正确的结果。在noprefix模式下,使用no ipc cache slot {slot_num | all} 命令将缓存大小重置为默认值。 |
CSCdu54205 | 12.0(19)ST 12.0(19)S | 仅适用于Cisco 12000系列:此增强功能将线卡CEF更新内存分配的默认值更改为512条消息。除非发现问题,否则不必再使用ip cef linecard ipc memory xxxxx命令。 |
CSCuk27162(仅限注册客户) | 12.2(9)T 12.2(9)S 12.2(9)12.0(21)ST 12.0(22)S | 此软件增强功能将更改启动时分配的线卡ipc缓冲区的默认每平台数量。它还将RSP每平台默认线卡IPC内存从25增加到128个IPC消息。解决方法:使用ip cef linecard ipc memory xxxxx全局配置命令可增加线卡上的缓冲区数。 |
CSCdv57496 | 12.0(23)S | 动态管理IPC消息缓存,而不是静态分配IPC缓存。CSCdv57496的实施使ipc cache <size>命令不再有效,因为这是自动执行的。这在所有IPC平台中都有效。 |
CSCdz77490 | 12.2(19.7)S 12.0(26.2)S 12.3(1)B 12.3(1) | 实施CSCdz77490后,ipc cache <size>命令行界面将从Cisco IOS软件系列12.3和12.3T中删除。在Cisco IOS 12.3系列中,此命令是隐藏的,但是,如果从终端配置,它会向用户打印消息。在下一个主版本12.4中,此命令将被删除。 |
CSCec17505(仅限注册客户) | 待定 | 症状:使用ipc cache <size> CLI命令更改缓存大小时,ipc cache大小不会发生更改。条件:此情况是IPC架构更改的结果。解决方法:IPC缓存功能现在自动完成,用户无法在CLI上更改。此增强功能删除了Cisco IOS软件版本中不再允许用户手动更改IPC缓存的ipc cache <size> CLI命令。不应出现向后兼容问题,因为CLI在用户可以使用ipc cache <size> CLI命令手动更改IPC缓存的版本中仍存在。 |
运行Catalyst OS时,Catalyst 6000/Cisco 7600系列使用Supervisor引擎,其中带有一个名为多层交换功能卡(MSFC)的可选路由器卡。 Supervisor上的CPU和MSFC上的CPU通过以太网带外管理总线通过IPC消息通信。运行Cisco IOS系统软件时,RP和交换机处理器(SP)也通过IPC消息进行通信。最初为IPC消息创建了3000个缓冲区。在极少数情况下,系统会耗尽IPC缓冲区并报告以下错误消息:
01:52:13: %ICC-2-NOMEM: No memory available for unregistering card Card2 02:42:08: %IPC-3-NOBUFF: The main IPC message header cache has emptied -Traceback= 4026779C 40268350 4025F930 40223D34 40221C40 40221EA4 401EAB10
注意:ICC代表InterCard通信。
Cisco 7600系列从Cisco IOS软件版本12.1(08a)E01和12.1(10)E中,现在默认创建6000 IPC消息缓冲区。此外,在版本12.1(08a)E和12.1(09)EC中所做的更改有助于避免因大量虚拟局域网(VLAN)相关更新而导致的IPC报头耗尽。每条ICC消息都通告一组VLAN链路状态更改,而不是一次通告一个VLAN。
Cisco 7600系列的较新线卡支持分布式功能子卡(DFC),以实现高速数据包处理速率。启用DFC的线卡维护本地Cisco快速转发和邻接表,并使用IPC消息与Supervisor通信。
某些IPC消息大于Catalyst 6000交换总线的最大传输单位(MTU)(例如,用于报告大于1500字节消息中SONET接口统计信息的IPC消息)。 此类消息需要分段。在极少数情况下,IPC分片报头缓存已耗尽,系统报告以下错误消息:
%IPC-DFC6-3-NOBUFF: The fragment IPC message header cache has emptied
在Cisco IOS软件版本12.1(08a)E和12.1(09.05)EC中所做的更改将IPC分段缓冲区报头数从32增加到128。
如果IPC客户端收到重复的确认,则调试输出中可能会显示此消息。
IPC:找不到ACK HDR的原始消息:
重复确认最常是由于介质问题导致确认消息丢失。要解决此确认丢失问题,请正确重新拔插或更换插槽中的线卡以避免介质问题。
如果在执行上述故障排除步骤后仍需要帮助,并希望使用Cisco TAC创建服务请求,请务必提供以下信息,以排除与IPC-3-NOBUFF相关的错误消息: |
---|
注意:在收集上述信息之前,请勿手动重新加载或重新通电路由器,除非排除IPC-3-NOBUFF异常故障,因为这可能导致确定问题根本原因所需的重要信息丢失。 |