此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍用于排除组播网络故障的不同工具和技术。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
排除多播网络故障时,最好考虑网络和数据包流中使用的信令协议。信令协议用于设置和切断多播会话(例如 PIM 密集模式、PIM 稀疏模式和 DVMRP),而数据包流是指根据信令进程创建的转发表,在源和接收方之间实际发送、复制和接收多播数据包。
此表有助于检验要排除故障的每个信息,并检查表的每个部分是否正常工作:
来源 | 网络 | 接收器 | |
---|---|---|---|
信令 | 不适用 | 检查网络信令 | 检查接收方信令 |
数据包流 | 检查源数据包流 | 检查网络数据包流 | 检查接收方数据包流 |
接下来的小节将详细介绍可用于检查和修复常见问题的故障排除工具。
完成以下步骤以确定源是否发送了数据包,并插入了正确的数据包字段:
检查主机上的接口计数器。首先,检查源主机上的接口计数器(如果是在UNIX系统上,请使用netstat命令)以查看它是否发送数据包。如果没有,请检查在主机堆栈和应用程序中是否存在错误配置或 Bug。
使用show ip igmp groups <interface-name>命令检查上游路由器,以查看它是否在直接连接到源的接口上收到加入成员身份报告。
检查组播应用中数据包的TTL值;该值必须大于1。如果应用程序发送的TTL值小于1的数据包,您必须看到第一个上游路由器丢弃的流量。要进行验证,请使用 show ip traffic 命令查找“坏跳数”计数器的值是否在增加。TTL值为1或小于接口使用ip multicast ttl-threshold命令设置的TTL阈值的所有数据包都会被丢弃,并且“bad hop-count”计数器会增加1。使用show ip igmp interface <interface-name>命令查看接口TTL阈值。
请使用 show ip mroute count 和 show ip mroute active 命令检查第一台上游路由器或交换机,查看其是否收到源发送的多播数据包。命令输出将显示每一个 (S,G) 对的数据流统计信息。如果未观察到任何数据流,请检查接收方信令。
在最近的上游路由器上使用 debug ip mpacket 命令,粒度参数为 detail 或 acl。
注意:当网络上存在大量组播流量时,请谨慎使用此命令。仅当必要时,可在路由上使用 debug ip mpacket 命令。请使用 detail 参数在 debug 输出中显示数据包报头,并显示访问列表以检查来自特定源的数据流。请记住,此命令可能会对其他流量产生严重的性能影响。
这是所有网络中最复杂、最重要的故障排除部分。它取决于所用的网络信令协议,例如 PIM 稀疏模式、PIM 密集模式和 DVMRP。建议使用此部分中描述的多步骤方法。
请完成以下步骤以排除 PIM 稀疏模式故障:
检查所有多播路由器上的 IP 多播路由是否启用。
使用show ip pim neighbor命令检查到期计时器和模式以确保PIM邻居建立成功,并查找可能阻止PIM邻居建立的任何连接和计时器问题。如果需要,请使用 ip pim [version] [dense-mode] [sparse-mode] [sparse-dense-mode] interface level 子命令设置正确的模式和版本以成功建立 PIM 邻居连接。
请使用 show ip pim rp mapping 命令确保 RP 组映射正确,并检查过期计时器(如果配置了自动 RP)。使用 debug ip pim auto-rp 命令可帮助查明任何自动 RP 故障。如果看不到任何 PIM 组到 RP 的映射,请检查自动 RP 配置或者使用 ip pim rp-address ip address of RP [access-list] [named-accesslist] [override] 命令配置静态组到 RP 的映射。可以使用 ip pim send-rp-announce interface-id scope TTL value 和 ip pim send-rp-discovery interface-id scope TTL value 命令执行自动 RP 配置。仅当存在自动 RP 配置时,才应配置这些命令。
使用show ip rpf <ip address of source>命令检查源地址的RPF故障。如果数据流到达非 RPF 点对点接口,则 PIM 密集模式和 PIM 稀疏模式会向源发送修剪消息。debug ip pim 命令可帮助确定 PIM 网络中可能的故障原因,它可将典型输出与您看到的内容做比较。使用此输出确定PIM稀疏模式中的三个离散阶段:加入、注册和SPT切换。show ip mroute 命令允许您查看传出接口列表中的空条目和 mroute 表中的已修剪条目。
请使用以下命令检查网络中的多播数据包流:
请完成以下步骤以检查接收方信令:
在连接到接收方的第一台上游路由器上使用 show ip igmp groups 命令检查接口是否已加入组。
使用 ping 命令检查主机和第一台上游路由器的可接通性。
使用 show ip igmp interface 命令检查接口的 IGMP 版本。
注意:请记住,配置了IGMP版本1的路由器会认为从主机收到的IGMP版本2数据包无效。直到路由器从主机收到 IGMP 版本 1 数据包,这些 IGMP 数据包才会加入组。
使用 debug ip igmp 命令进一步排除接收方信令故障。
请完成以下步骤以检查接收方数据包流:
在 UNIX 系统上使用 netstat 命令检查接收方接口统计信息。
检查是否正确安装并且配置了 TCP/IP 栈。
检查是否正确安装并且配置了多播接收方客户端应用程序。
注意多路访问分段上是否出现重复的多播数据包。
本部分中的命令在排除故障时也非常有用,特别是在测试网络数据包流和查找组播网络中的故障点时。
此命令以 ASCII 图形格式显示多播路径。它跟踪网络中任何两点之间的路径,显示网络中每个节点上的丢包数和重复项、TTL 和延迟。当您需要查找网络中的拥塞点或关注具有高丢弃/重复计数率的路由器时,它非常有用。重复项在输出中显示为负丢弃。
Router#mstat lwei-home-ss2 172.16.58.88 224.0.255.255 Type escape sequence to abort Mtrace from 172.16.143.27 to 172.16.58.88 via group 224.0.255.255 >From source (lwei-home-ss2.cisco.com) to destination (lwei-ss20.cisco.com) Waiting to accumulate statistics...... Results after 10 seconds: Source Response Dest Packet Statistics For Only For Traffic 172.16.143.27 172.16.62.144 All Multicast Traffic From 172.16.143.27
| __/ rtt 48 ms Lost/Sent = Pct Rate To 224.0.255.255 v / hop 48 ms --------------------- -------------------- 172.16.143.25 lwei-cisco-isdn.cisco.com | ^ ttl 1 v | hop 31 ms 0/12 = 0% 1 pps 0/1 = --% 0 pps 172.16.121.84 172.16.121.45 eng-frmt12-pri.cisco.com | ^ ttl 2 v | hop -17 ms -735/12 = --% 1 pps 0/1 = --% 0 pps 172.16.121.4 172.16.5.27 eng-cc-4.cisco.com | ^ ttl 3 v | hop -21 ms -678/23 = --% 2 pps 0/1 = --% 0 pps 172.16.5.21 172.16.62.130 eng-ios-2.cisco.com | ^ ttl 4 v | hop 5 ms 605/639 = 95% 63 pps 1/1 = --% 0 pps 172.16.62.144 172.16.58.65 eng-ios-f-5.cisco.com | \__ ttl 5 v \ hop 0 ms 4 0 pps 0 0 pps 172.16.58.88 172.16.62.144 Receiver Query Source
此命令可显示多播邻居路由器信息、路由器功能和代码版本、多播接口信息、TTL 阈值、度量值、协议和状态。当您需要验证多播邻居、确认双向邻接关系存在以及验证隧道是否在两个方向上都为启用状态时,此命令非常有用。
Router#mrinfo 192.168.7.37 (b.cisco.com) [version cisco 11.1] [flags: PMSA]: 192.168.7.37 -> 192.168.7.34 (s.cisco.com) [1/0/pim] 192.168.7.37 -> 192.168.7.47 (d.cisco.com) [1/0/pim] 192.168.7.37 -> 192.168.7.44 (d2.cisco.com) [1/0/pim] 192.168.9.26 -> 192.168.9.29 (su.bbnplanet.net) [1/32/pim]
输出中的标志表示:
P = 支持修剪
M = 支持 Mtrace
S = 支持 SNMP
A = 支持自动 RP
此命令可显示从源到接收方的多播路径,并且跟踪网络中各点之间的路径,显示每个节点上的 TTL 阈值和延迟。进行故障排除时,请使用mtrace命令查找组播流量停止的位置、验证组播流量的路径并确定次优路径。
Router#mtrace 192.168.215.41 192.168.215.67 239.254.254.254 Type escape sequence to abort. Mtrace from 192.168.215.41 to 192.168.215.67 via group 239.254.254.254 From source (?) to destination (?) Querying full reverse path... 0 192.168.215.67 -1 192.168.215.67 PIM thresh^ 0 0 ms -2 192.168.215.74 PIM thresh^ 0 2 ms -3 192.168.215.57 PIM thresh^ 0 894 ms -4 192.168.215.41 PIM thresh^ 0 893 ms -5 192.168.215.12 PIM thresh^ 0 894 ms -6 192.168.215.98 PIM thresh^ 0 893 ms
进行故障排除时,ping命令是本实验中生成组播流量以测试组播树的最简单方法,因为它ping组的所有成员,所有成员都会响应。
R3#ping 239.255.0.1 Type escape sequence to abort. Sending 1, 100-byte ICMP Echos to 239.255.0.1, timeout is 2 seconds: Reply to request 0 from 172.16.12.2, 16 ms Reply to request 0 from 172.16.7.2, 20 ms
本部分中的命令可帮助您在对组播问题进行故障排除时收集有用的信息。有关这些show命令的详细信息,请参阅Cisco IOS IP组播命令参考指南。
提示:如果show命令响应缓慢,最可能的原因是路由器当前在show命令中执行IP地址的IP域查找。您可以在路由器全局配置模式下使用no ip domain-lookup命令禁用IP域查找,以禁用IP域查找。这将终止 IP 域名查找并提高 show 命令输出速度。
此命令显示哪些组播组直接连接到路由器,以及哪些组播组通过互联网组管理协议(IGMP)获知。使用此命令可验证源或接收方是否已实际加入路由器接口上的目标组。Last Reporter列仅显示一个IGMP主机,这表示该主机已发送未经请求的IGMP加入或IGMP报告,以响应来自该特定组的PIM路由器的IGMP查询。每个组地址只能看到最后一个报告者。
R1#show ip igmp groups IGMP Connected Group Membership Group Address Interface Uptime Expires Last Reporter 239.255.0.1 Ethernet1 00:10:54 00:01:10 192.168.9.1 224.0.1.40 Ethernet0 01:36:27 00:02:45 192.168.10.2 224.0.1.40 Ethernet1 01:48:15 never 192.168.9.3
使用此命令可显示有关接口的多播相关信息,并验证IGMP是否已启用、运行的正确版本、计时器、生存时间(TTL)阈值和IGMP查询器路由器是否已正确设置。不需要在接口上配置 IGMP。当您配置ip pim {dense-mode|sparse-mode|sparse-dense-mode}时,默认启用此功能。
R1#show ip igmp interface Ethernet1 is up, line protocol is up Internet address is 192.168.9.3/24 IGMP is enabled on interface Current IGMP version is 2 CGMP is disabled on interface IGMP query interval is 60 seconds IGMP querier timeout is 120 seconds IGMP max query response time is 10 seconds Last member query response interval is 1000 ms Inbound IGMP access group is not set IGMP activity: 22 joins, 18 leaves Multicast routing is enabled on interface Multicast TTL threshold is 0 Multicast designated router (DR) is 192.168.9.5 IGMP querying router is 192.168.9.3 (this system) Multicast groups joined (number of users): 224.0.1.40(1)
使用此命令列出由Cisco IOS软件发现的协议无关组播(PIM)邻居。
R1#show ip pim neighbor PIM Neighbor Table Neighbor Interface Uptime/Expires Ver DR Address Prio/Mode 10.10.10.1 Ethernet0/0 02:19:41/00:01:38 v2 1 / DR B S
每个字段详细解释如下:
Neighbor Address — 指定PIM邻居IP地址
Interface - 发现 PIM 邻居的接口
Uptime - 邻居的总正常运行时间
Expires - 一个邻居超时之前的时间(一直到接收到下一个 PIM Hello 消息为止)
版本 — 邻居接口上的PIM版本
DR Prio -可能的值为0到4294967294或N
这是一个新列,该列跟踪用于 DR 选择的 PIM 接口优先级。在 Cisco IOS 软件 12.1(2)T 和 12.2 版以及具有 Bidir-PIM 的 Cisco IOS 映像中,引入了根据最高优先级而非根据最大 IP 地址配置 DR 的功能。可以使用ip pim dr-priority <0-4294967294>interface命令设置DR优先级。默认 DR 优先级设为 1。对于互操作性,如果PIM邻居运行不支持DR优先级功能的旧版Cisco IOS,则“DR Previous”列显示为N。如果邻居是接口上唯一显示N的路由器,则无论哪个路由器实际具有最高的IP地址,它都会成为DR。如果有多个PIM邻居在此列下列出N,则分界点是其中最高的IP地址。
Mode - 关于 DR 和其他 PIM 功能的信息。
此列列出了 DR 以及 PIM 邻居支持的任何功能:
DR - 该 PIM 邻居为指定路由器
B - 支持双向 PIM (Bidir-PIM)
S - 支持状态刷新(仅适用于密集模式)
排除故障时,使用此命令可验证所有邻居是否处于启用状态以及它们是否在使用适当的模式、版本和过期计时器。您还可以检查路由器配置,或者使用 show ip pim interface 命令验证模式(PIM 稀疏或 PIM 密集模式)。使用 debug ip pim 命令可观察 PIM 查询消息交换。
使用此命令可显示有关为 PIM 配置的接口的信息。此外,您可以使用此命令验证接口上是否配置了正确的PIM模式(密集或稀疏)、邻居计数是否正确以及指定路由器(DR)是否正确(这对于PIM稀疏模式至关重要)。多路访问分段(例如以太网、令牌环、FDDI)根据最大 IP 地址选择 DR。点到点链路不会显示 DR 信息。
R1#show ip pim interface Address Interface Version/Mode Nbr Query DR Count Intvl 192.168.10.1 Ethernet0 v2/Sparse-Dense 1 30 192.168.10.2 192.168.9.3 Ethernet1 v2/Sparse-Dense 1 30 192.168.9.5
使用此命令可显示 IP 多播路由表的汇总内容。当您查看计时器和标志时,还可以使用它来验证活动的组播组以及哪些组播发送器处于活动状态。
R1#show ip mroute summary IP Multicast Routing Table Flags: D - Dense, S - Sparse, C - Connected, L - Local, P - Pruned R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT M - MSDP created entry, X - Proxy Join Timer Running A - Advertised via MSDP Outgoing interface flags: H - Hardware switched Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.255.0.1), 01:57:07/00:02:59, RP 192.168.7.2, flags: SJCF (192.168.33.32, 239.255.0.1), 01:56:23/00:02:59, flags: CJT (192.168.9.1, 239.255.0.1), 01:57:07/00:03:27, flags: CFT (*, 224.0.1.40), 1d00h/00:00:00, RP 192.168.7.2, flags: SJPCL
使用此命令可显示 IP 多播路由表的全部内容。在排除故障时,使用此命令可验证:
标志中的 (S,G) 和 (*,G) 状态条目。
传入接口是否正确。如果不正确,请检查单播路由表。
传出接口正确。如果其被不正确地修剪,请在下游路由器中检查状态。
R1#show ip mroute IP Multicast Routing Table Flags: D - Dense, S - Sparse, C - Connected, L - Local, P - Pruned R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT M - MSDP created entry, X - Proxy Join Timer Running A - Advertised via MSDP Outgoing interface flags: H - Hardware switched Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.255.0.1), 01:55:27/00:02:59, RP 192.168.7.2, flags: SJCF Incoming interface: Ethernet0, RPF nbr 192.168.10.2 Outgoing interface list: Ethernet1, Forward/Sparse, 01:55:27/00:02:52 (192.168.33.32 , 239.255.0.1), 01:54:43/00:02:59, flags: CJT Incoming interface: Ethernet0, RPF nbr 192.168.10.2 Outgoing interface list: Ethernet1, Forward/Sparse, 01:54:43/00:02:52 (192.168.9.1, 239.255.0.1), 01:55:30/00:03:26, flags: CFT Incoming interface: Ethernet1, RPF nbr 0.0.0.0 Outgoing interface list: Ethernet0, Forward/Sparse, 01:55:30/00:03:12 (*, 224.0.1.40), 1d00h/00:00:00, RP 192.168.7.2, flags: SJPCL Incoming interface: Ethernet0, RPF nbr 192.168.10.2 Outgoing interface list: Null
使用此命令可显示超过阈值的活动流量源和组。进行故障排除时,请使用它来验证活动源组、每个源组(S,G)对的流量速率(您必须切换到最短路径树(SPT)),以及检查是否收到目标组组播流量。如果未收到流量,请查找从源到接收方的活动流量。
R1#show ip mroute active Active IP Multicast Sources - sending >= 4 kbps Group: 239.255.0.1, (?) Source: 192.168.33.32 (?) Rate: 10 pps/115 kbps(1sec), 235 kbps(last 23 secs), 87 kbps(life avg)
使用此命令可显示IP组播路由如何执行反向路径转发(RPF)。在排除故障时,使用该命令可验证 RPF 信息是否正确。如果不正确,请检查单播路由表中的源地址。并且,请在源地址上使用 ping 命令和 trace 命令验证单播路由是否正常工作。您可以使用距离矢量组播路由协议(DVMRP)路由或静态路由来修复任何单播组播不一致问题。
R1#show ip rpf 192.168.33.32 RPF information for ? (192.168.33.32) RPF interface: Ethernet0 RPF neighbor: ? (192.168.10.2) RPF route/mask: 192.168.33.0/16 RPF type: unicast (eigrp 1) RPF recursion count: 0 Doing distance-preferred lookups across tables
此命令可以验证 IP 多播快速交换缓存并调试快速交换 Bug。
R1#show ip mcache IP Multicast Fast-Switching Cache (192.168.33.32/32, 239.255.0.1), Ethernet0, Last used: 00:00:00 Ethernet1 MAC Header: 01005E7F000100000C13DBA90800 (192.168.9.1/32, 239.255.0.1), Ethernet1, Last used: 00:00:00 Ethernet0 MAC Header: 01005E7F000100000C13DBA80800
使用此命令可验证已收到多播数据流并检查其速率和丢包数。如果未收到数据流,请在源和接收方之间查找,直至找到数据流的终止位置。您还可以使用此命令验证流量是否已转发。如果未转发,请使用 show ip mroute 命令查找“空传出接口列表”和 RPF 故障。
R1#show ip mroute count IP Multicast Statistics routes using 2406 bytes of memory 2 groups, 1.00 average sources per group Forwarding Counts: Pkt Count/Pkts per second/Avg Pkt Size/Kilobits per second Other counts: Total/RPF failed/Other drops(OIF-null, rate-limit etc) Group: 239.255.0.1, Source count: 2, Group pkt count: 11709 RP-tree: Forwarding: 3/0/431/0, Other: 3/0/0 Source: 192.168.33.32/32, Forwarding: 11225/6/1401/62, Other: 11225/0/0 Source: 192.168.9.1/32, Forwarding: 481/0/85/0, Other: 490/0/9 Group: 224.0.1.40, Source count: 0, Group pkt count:
使用此命令可检查单播路由表并修复 mroute 表中的 RPF 故障。
R2#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - candidate default, U - per-user static route, o - ODR P - periodic downloaded static route Gateway of last resort is not set D 192.168.9.0/24 [90/307200] via 192.168.10.1, 00:59:45, Ethernet0 C 192.168.10.0/24 is directly connected, Ethernet0 D 192.168.4.0/24 [90/11040000] via 192.168.7.1, 23:21:00, Serial0 D 192.168.5.0/24 [90/11023872] via 192.168.7.1, 23:21:02, Serial0 C 192.168.7.0/24 is directly connected, Serial0 D 192.168.33.0/16 [90/2195456] via 192.168.7.1, 1d23h, Serial0 D 192.168.1.0/24 [90/11552000] via 192.168.7.1, 22:41:27, Serial0
使用此命令可按多播组范围查看 RP 分配,并验证 RP 识别(静态或自动 RP)的来源以及映射是否正确。如果发现错误,请检查本地路由器配置或自动 RP 配置。
R1#show ip pim rp mapping PIM Group-to-RP Mappings Group(s) 224.0.1.40/32 RP 192.168.7.2 (?), v1 Info source: local, via Auto-RP Uptime: 2d00h, expires: never Group(s): 224.0.0.0/4, Static RP: 192.168.7.2 (?)
本部分旨在向您展示某些debug命令输出在正常运行的网络中必须如何显示。进行故障排除时,您可以区分正确的debug输出和指示网络问题的输出。有关这些 debug 命令的更全面信息,请参见 Cisco IOS debug 命令参考。
使用 debug ip igmp 命令可显示收到和传输的 IGMP 数据包,以及与 IGMP 主机相关的事件。此命令的 no 形式可禁用 debug 输出。
此输出可帮助您发现 IGMP 进程是否正常工作。一般来说,如果 IGMP 不工作,路由器进程绝不会发现网络上配置用于接收多播数据包的其他主机。在 PIM 密集模式中,这意味着将间歇地传送数据包(约每三分钟传送一次)。而在 PIM 稀疏模式中,则不会传送数据包。
R1#debug ip igmp 12:32:51.065: IGMP: Send v2 Query on Ethernet1 to 224.0.0.1 12:32:51.069: IGMP: Set report delay time to 9.4 seconds for 224.0.1.40 on Ethernet1 12:32:56.909: IGMP: Received v1 Report from 192.168.9.1 (Ethernet1) for 239.255.0.1 12:32:56.917: IGMP: Starting old host present timer for 239.255.0.1 on Ethernet1 12:33:01.065: IGMP: Send v2 Report for 224.0.1.40 on Ethernet1 12:33:01.069: IGMP: Received v2 Report from 192.168.9.4 (Ethernet1) for 224.0.1.40 12:33:51.065: IGMP: Send v2 Query on Ethernet1 to 224.0.0.1
前面的输出显示路由器从组播地址224.0.0.1(此子网上的所有组播系统)的接口Ethernet 1发出IGMP版本2查询。Ethernet 1 接口本身是组 224.0.1.40 的成员(使用 show ip igmp interface 命令可确定),其将报告延迟时间设为 9.4 秒(随机确定)。由于在下一个 9.4 秒期间,该接口未从多播组 224.0.1.40 的其他系统收到任何报告,它将发送有关其成员资格的版本 2 报告,该报告由 Ethernet 1 上的路由器接收。它还从主机 192.168.9.1 接收了版本 1 形式的 IGMP 报告,该主机直接连接到组 239.255.0.1 的接口 Ethernet 1。
当您检验路由器接口是否发送查询并确定查询间隔(在前一种情况下,为60秒)时,此debug输出非常有用。使用此命令还可确定客户端使用的 IGMP 版本。
使用 debug ip mpacket 命令可显示接收和传输的所有 IP 多播数据包。此命令的 no 形式可禁用 debug 输出。
R1#debug ip mpacket 239.255.0.1 detail 13:09:55.973: IP: MAC sa=0000.0c70.d41e (Ethernet0), IP last-hop=192.168.10.2 13:09:55.977: IP: IP tos=0x0, len=892, id=0xD3C1, ttl=12, prot=17 13:09:55.981: IP: s=192.168.33.32 (Ethernet0) d=239.255.0.1 (Ethernet1) len 906, mforward
此命令可解码多播数据包并显示数据包被转发 (mforward) 还是丢弃。在调试网络中的数据包流问题时,若要查看 TTL 值和数据包丢失的原因,此命令非常有用。
注意:当您打开数据包级别的调试输出时,尤其是当路由器为高组播数据包负载提供服务时,请务必小心。
此命令对于路由表维护目的非常有用。使用它可验证 (S,G) mroute 是否已安装在 mrouting 表中,而如果未安装,还可使用此命令找出原因。此输出中的关键信息是 RPF 接口。如果存在 RPF 检查失败,则 (S,G) mroute 无法安装在 mrouting 表中。
R1#debug ip mrouting 239.255.0.1 13:17:27.821: MRT: Create (*, 239.255.0.1), RPF Null, PC 0x34F16CE 13:17:27.825: MRT: Create (192.168.33.32/32, 239.255.0.1), RPF Ethernet0/192.168.10.2, PC 0x34F181A 13:17:30.481: MRT: Create (192.168.9.1/32, 239.255.0.1), RPF Ethernet1/0.0.0.0, PC 0x34F18
使用 debug ip pim 命令可显示收到和传输的 PIM 数据包,以及与 PIM 相关的事件。此命令的 no 形式可禁用 debug 输出。
本部分通过一个示例帮助您了解 PIM 稀疏模式的 debug 输出,并显示了一个典型的 debug 输出。
以下是debug ip pim在R1上的输出:
R1#debug ip pim PIM: Send v2 Hello on Ethernet0 PIM: Send v2 Hello on Ethernet1 PIM: Received v2 Hello on Ethernet0 from 192.168.10.2 PIM: Send v2 Hello on Ethernet0 PIM: Send v2 Hello on Ethernet1 PIM: Building Join/Prune message for 239.255.0.1 PIM: v2, for RP, Join-list: 192.168.7.2/32, RP-bit, WC-bit, S-bit PIM: Send v2 periodic Join/Prune to RP via 192.168.10.2 (Ethernet0) PIM: Received RP-Reachable on Ethernet0 from 192.168.7.2 for group 239.255.0.1 PIM: Update RP expiration timer (270 sec) for 239.255.0.1
以下是每行输出的含义:R1和R2在交换Hello消息时建立PIM邻居。这些定期Hello消息(在R1(E0)和R2(E0)之间以Query-Interval秒交换)用于跟踪PIM邻居。
R1 将加入/修剪消息发送到 RP 地址 192.168.7.2。RP (R2) 以“Received RP Reachable”消息回复组 239.255.0.1 的 R1。这将会更新 R1 上的 RP 过期计时器。到期计时器设置检查点以确保RP仍然存在;否则,必须发现新的RP。使用 show ip pim RP 命令可观察 RP 到期时间。
现在,当组239.255.0.1的组播接收器加入R1时,查看R1和R2之间的debug输出。
首先,查看 R1 上的输出:
1 PIM: Check RP 192.168.7.2 into the (*, 239.255.0.1) entry 2 PIM: Send v2 Join on Ethernet0 to 192.168.10.2 for (192.168.8.7.2/32, 239.255.0.1), WC-bit, RPT-bit, S-bit 3 PIM: Building batch join message for 239.255.0.1 4 PIM: Building Join/Prune message for 239.255.0.1 5 PIM: v2, for RP, Join-list: 192.168.7.2/32, RP-bit, WC-bit, S-bit 6 PIM: Send v2 periodic Join/Prune to RP via 192.168.10.2 (Ethernet0) 7 PIM: Received RP-Reachable on Ethernet0 from 192.168.7.2 : for group 239.255.0.1 8 PIM: Update RP expiration timer (270 sec) for 239.255.0.1 9 PIM: Building Join/Prune message for 239.255.0.1 10 PIM: v2, for RP, Join-list: 192.168.7.2/32, RP-bit, WC-bit, S-bit 11 PIM: Send v2 periodic Join/Prune to RP via 192.168.10.2 (Ethernet0)
现在,查看 R2 上的输出:
12 PIM: Received v2 Join/Prune on Ethernet0 from 192.168.10.1, to us 13 PIM: Join-list: (*, 239.255.0.1) RP 192.168.7.2 14 PIM: Check RP 192.168.7.2 into the (*, 239.255.0.1) entry, RPT-bit set, WC-bit set, S-bit set 15 PIM: Add Ethernet0/192.168.10.1 to (*, 239.255.0.1), Forward state 16 PIM: Building Join/Prune message for 239.255.0.1 17 PIM: Received v2 Join/Prune on Ethernet0 from 192.168.10.1, to us 18 PIM: Join-list: (*, 239.255.0.1) RP 192.168.7.2, RPT-bit set, WC-bit set, S-bit set 19 PIM: Add Ethernet0/192.168.10.1 to (*, 239.255.0.1), Forward state 20 PIM: Building Join/Prune message for 239.255.0.1 21 PIM: Send RP-reachability for 239.255.0.1 on Ethernet0 22 PIM: Received v2 Join/Prune on Ethernet0 from 192.168.10.1, to us 23 PIM: Join-list: (*, 239.255.0.1) RP 192.168.7.2, RPT-bit set, WC-bit set, S-bit set 24 PIM: Add Ethernet0/192.168.10.1 to (*, 239.255.0.1), Forward state 25 PIM: Building Join/Prune message for 239.255.0.1
在前面的第1行中,组239.255.0.1的组播接收器加入R1。这会在 mroute 表中安装 (*, 239.255.0.1) 条目。然后,在第2行中,组播接收器向R2(RP)发送IGMP加入以加入共享树。
当 IGMP 加入信息到达 R2 时,R2 将安装 (*, 239.255.0.1) mroute,如 R2 输出的第 12 行至第 15 行所示。
R2在其路由表中安装(*, 239.255.0.1)后,它会将从中接收加入/修剪消息的接口添加到处于转发状态的Outgoing-interface-list(OIL)。然后,它在收到加入/修减消息的接口上返回 RP 可接通性消息。此事务在 R2 输出的第 15 行至第 21 行显示。
R1 收到组 239.255.0.1 的 RP 可接通消息,并更新 RP 的过期计时器。默认情况下此交换过程一分钟重复一次,并刷新其多播转发状态,如 R1 输出的第 7 行和第 8 行所示。
在接下来的行中,将会看到R2(RP)和R3之间的debug输出。源(直接连接到 R3)开始发送组 239.255.0.1 的数据包。
首先,查看 R3 上的输出:
1 PIM: Check RP 192.168.7.2 into the (*, 239.255.0.1) entry 2 PIM: Building Join/Prune message for 239.255.0.1 3 PIM: For RP, Join-list: 192.168.7.2/32, RP-bit, WC-bit 4 PIM: Send periodic Join/Prune to RP via 192.168.7.2 (Serial4/0) 5 PIM: Received RP-Reachable on Serial4/0 from 192.168.7.2 6 PIM: Update RP expiration timer (270 sec) for 239.255.0.1 7 PIM: Send Register to 192.168.7.2 for 192.168.33.32, group 239.255.0.1 8 PIM: Send Register to 192.168.7.2 for 192.168.33.32, group 239.255.0.1 9 PIM: Received Join/Prune on Serial4/0 from 192.168.7.2 10 PIM: Join-list: (192.168.33.32/32, 239.255.0.1), S-bit set 11 PIM: Add Serial4/0/192.168.7.2 to (192.168.33.32/32, 239.255.0.1), Forward state 12 PIM: Received Register-Stop on Serial4/0 from 192.168.7.2 13 PIM: Clear register flag to 192.168.7.2 for (192.168.33.32/32, 239.255.0.1) 14 PIM: Received Register-Stop on Serial4/0 from 192.168.7.2 15 PIM: Clear register flag to 192.168.7.2 for (192.168.33.32/32, 239.255.0.1)
以下为 R2 的输出,RP:
16 PIM: Received Join/Prune on Serial0 from 192.168.7.1, to us 17 PIM: Send RP-reachability for 239.255.0.1 on Serial0 18 PIM: Received Register on Serial0 from 192.168.7.1 for 192.168.33.32, group 239.255.0.1 19 PIM: Forward decapsulated data packet for 239.255.0.1 on Ethernet0 10 PIM: Forward decapsulated data packet for 239.255.0.1 on Serial0 21 PIM: Send Join on Serial0 to 192.168.7.1 for (192.168.33.32/32, 239.255.0.1), S-bit 22 PIM: Send Join on Serial0 to 192.168.7.1 for (192.168.33.32/32, 239.255.0.1), S-bit 23 PIM: Send Register-Stop to 192.168.7.1 for 192.168.33.32, group 239.255.0.1 24 PIM: Received Join/Prune on Serial0 from 192.168.7.1, to us 25 PIM: Prune-list: (192.168.33.32/32, 239.255.0.1) 26 PIM: Received v2 Join/Prune on Ethernet0 from 192.168.10.1, to us 27 PIM: Join-list: (*, 239.255.0.1) RP 192.168.7.2, RPT-bit set, WC-bit set, S-bit set 28 PIM: Add Ethernet0/192.168.10.1 to (*, 239.255.0.1), Forward state 29 PIM: Add Ethernet0/192.168.10.1 to (192.168.33.32/32, 239.255.0.1) 30 PIM: Join-list: (192.168.33.32/32, 239.255.0.1), S-bit set 31 PIM: Add Ethernet0/192.168.10.1 to (192.168.33.32/32, 239.255.0.1), Forward state 32 PIM: Building Join/Prune message for 239.255.0.1 33 PIM: For 192.168.7.1, Join-list: 192.168.33.32/32 34 PIM: For 192.168.10.1, Join-list: 192.168.9.1/32 35 PIM: Send v2 periodic Join/Prune to 192.168.10.1 (Ethernet0) 36 PIM: Send periodic Join/Prune to 192.168.7.1 (Serial0) 37 PIM: Received Join/Prune on Serial0 from 192.168.7.1, to us 38 PIM: Join-list: (*, 239.255.0.1) RP 192.168.7.2, RP-bit set, WC-bit set, S-bit set 39 PIM: Add Serial0/192.168.7.1 to (*, 239.255.0.1), Forward state 40 PIM: Add Serial0/192.168.7.1 to (192.168.33.32/32, 239.255.0.1) 41 PIM: Add Serial0/192.168.7.1 to (192.168.9.1/32, 239.255.0.1) 42 PIM: Join-list: (192.168.9.1/32, 239.255.0.1), S-bit set 43 PIM: Add Serial0/192.168.7.1 to (192.168.9.1/32, 239.255.0.1), Forward state 44 PIM: Join-list: (*, 239.255.0.1) RP 192.168.7.2, RP-bit set, WC-bit set, S-bit set 45 PIM: Add Serial0/192.168.7.1 to (*, 239.255.0.1), Forward state
第1行显示R3(通过Ethernet0/0直接连接到源)接收组239.255.0.1的组播流量。它创建 (*, 239.255.0.1) 条目并向 RP 发送加入消息。
第 16 行和第 17 行表示,R2(即 RP)也收到加入/修减消息,并且将 RP 可接通性消息返回到 R3。
第 5 行和第 6 行表示,在收到 RP 可接通消息后,R3 更新其 RP 过期计时器。前面的第7行和第8行显示,R3使用其(*,G)条目将数据发送到封装在注册数据包中的RP,该源将发起到组239.255.0.1的传输。
第 18 行到第 20 行表示,R2 收到了寄存器数据包,将其解封装并将其沿着在路由表中事先已存在 (*, 239.255.0.1) 条目的树转发。
第21行和第29行显示,R2向R3发送加入消息,并在mroute表中安装(S,G)(192.168.33.32, 239.255.0.1)条目。
第9行到第11行显示,R3收到来自R2的加入消息,在mroute表中安装(S,G)(192.168.33.32,239.255.0.1)条目,并将连接到RP的接口置于转发模式,这会构建指向源的(S,G)组播SPT树。
在第 23 行,R2 开始接收沿着 SPT 传送的 (S,G) 数据流,并向源发送寄存器终止消息(和加入消息)。
第 12 行到第 15 行表示,R3 收到寄存器终止消息,清除寄存器标记,并且终止封装 (S,G) 数据流。
在 RP 和 R3 之间会定期交换加入/修减消息,以维护多播树。
版本 | 发布日期 | 备注 |
---|---|---|
2.0 |
28-Nov-2023 |
重新认证 |
1.0 |
10-Dec-2001 |
初始版本 |