IP : IP 组播

基本多播故障排除工具

2016 年 10 月 27 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 8 月 22 日) | 反馈


目录


简介

本文档介绍了排除多播网络故障的不同工具和技术。了解多种命令行界面工具及其输出内容中的关键信息字段将有助于您排除多播网络故障。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档不限于特定的软件和硬件版本。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

故障排除策略

排除多播网络故障时,最好考虑网络和数据包流中使用的信令协议。信令协议用于设置和切断多播会话(例如 PIM 密集模式、PIM 稀疏模式和 DVMRP),而数据包流是指根据信令进程创建的转发表,在源和接收方之间实际发送、复制和接收多播数据包。

通过检查表中每个部分是否正确地运行,此表可帮助验证故障排除信息的每个部分:

  来源 网络 接收方
发信号 NA 检查网络信令 检查接收方信令
数据包流 检查源数据包流 检查网络数据包流 检查接收方数据包流

以下各小节详细介绍可用于检查和解决常见问题的故障排除工具。

检查源数据包流

完成以下步骤确定源是否真正在发送数据包以及是否插入了正确的数据包字段:

  1. 检查主机上的接口计数器。首先,请检查源主机上的接口计数器(如果在 UNIX 系统上,请使用 netstat 命令),查看源主机是否正在发送数据包。如果没有,请检查在主机堆栈和应用程序中是否存在错误配置或 Bug。

  2. 请使用 show ip igmp groups interface-name 命令检查上游路由器,查看其直接连接到源的接口上是否收到了加入成员报告。

  3. 检查应用程序发送的数据包的 TTL 值;它应该大于 1。如果应用程序发送的数据包的 TTL 值小于 1,您应该会看到数据流在第一台上游路由器处被丢弃。要进行验证,请使用 show ip traffic 命令查找“坏跳数”计数器的值是否在增加。TTL 值为 1 或者小于使用 ip multicast ttl-threshold 命令对接口设置的 TTL 阈值的所有数据包将被丢弃,并且“坏跳数”计数器的值将增加 1。请使用 show ip igmp interface interface-name 命令查看接口 TTL 阈值。

  4. 请使用 show ip mroute countshow ip mroute active 命令检查第一台上游路由器或交换机,查看其是否收到源发送的多播数据包。命令输出将显示每一个 (S,G) 对的数据流统计信息。如果未观察到任何数据流,请检查接收方信令。

  5. 在最近的上游路由器上使用 debug ip mpacket 命令,粒度参数为 detail 或 acl。当网络上的多播流量较大时,请谨慎使用此命令。仅当必要时,可在路由上使用 debug ip mpacket 命令。请使用 detail 参数在 debug 输出中显示数据包报头,并显示访问列表以检查来自特定源的数据流。请记住此命令可能严重影响其他数据流的性能,因此请谨慎使用。

检查网络信令

这是对任何网络进行故障排除时最复杂和最重要的部分。它取决于所用的网络信令协议,例如 PIM 稀疏模式、PIM 密集模式和 DVMRP。建议使用此部分中描述的多步骤方法。

排除 PIM 稀疏模式故障

请完成以下步骤以排除 PIM 稀疏模式故障:

  1. 检查所有多播路由器上的 IP 多播路由是否启用。

  2. 请使用 show ip pim neighbor 命令检查过期计时器和模式,以确保成功建立 PIM 邻居连接,并寻找可能禁止建立 PIM 邻居连接的任何可能的连接和计时器问题。如果需要,请使用 ip pim [version] [dense-mode] [sparse-mode] [sparse-dense-mode] interface level 子命令设置正确的模式和版本以成功建立 PIM 邻居连接。

  3. 请使用 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 配置时,才应配置这些命令。

  4. 请使用 show ip rpf ip address of source 命令检查源地址的 RPF 故障。如果数据流到达非 RPF 点对点接口,则 PIM 密集模式和 PIM 稀疏模式会向源发送修剪消息。debug ip pim 命令可帮助确定 PIM 网络中可能的故障原因,它可将典型输出与您看到的内容做比较。使用此输出可确定 PIM 稀疏模式的三个分开的阶段:加入、注册和 SPT 切换。show ip mroute 命令允许您查看传出接口列表中的空条目和 mroute 表中的已修剪条目。

检查网络数据包流

请使用以下命令检查网络中的多播数据包流:

检查接收方信令

请完成以下步骤以检查接收方信令:

  1. 在连接到接收方的第一台上游路由器上使用 show ip igmp groups 命令检查接口是否已加入组。

  2. 使用 ping 命令检查主机和第一台上游路由器的可接通性。

  3. 使用 show ip igmp interface 命令检查接口的 IGMP 版本。

    注意: 请记住,配置有 IGMP 版本 1 的路由器会将从主机接收的 IGMP 版本 2 数据包视为无效数据包。直到路由器从主机收到 IGMP 版本 1 数据包,这些 IGMP 数据包才会加入组。

  4. 使用 debug ip igmp 命令进一步排除接收方信令故障。

检查接收方数据包流

请完成以下步骤以检查接收方数据包流:

  1. 在 UNIX 系统上使用 netstat 命令检查接收方接口统计信息。

  2. 检查是否正确安装并且配置了 TCP/IP 栈。

  3. 检查是否正确安装并且配置了多播接收方客户端应用程序。

  4. 注意多路访问分段上是否出现重复的多播数据包。

电动工具

本部分中的命令对故障排除也很有用,特别是在测试网络数据包流和查找多播网络中的故障点时。有关多播工具命令的更全面信息,请参见 IP 多播工具命令

mstat

此命令以 ASCII 图形格式显示多播路径。它跟踪网络中任何两点之间的路径,显示网络中每个节点上的丢包数和重复项、TTL 和延迟。当您需要找出网络拥塞点时,或者需要关注丢包数或重复项计数较高的路由器时,该命令非常有用。重复项在输出中表示为“被动”丢包。

Router# mstat lwei-home-ss2 171.69.58.88 224.0.255.255
Type escape sequence to abort
Mtrace from 171.69.143.27 to 171.69.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
171.69.143.27    171.69.62.144    All Multicast Traffic     From 171.69.143.27
     |       __/  rtt 48   ms   Lost/Sent = Pct  Rate     To 224.0.255.255
     v      /     hop 48   ms   ---------------------     --------------------
171.69.143.25   lwei-cisco-isdn.cisco.com  
     |     ^      ttl   1   
     v     |      hop 31   ms    0/12 = 0%      1 pps    0/1 = --%  0 pps
171.69.121.84   
171.69.121.45   eng-frmt12-pri.cisco.com  
     |     ^      ttl   2   
     v     |      hop -17  ms    -735/12 = --%      1 pps    0/1 = --%  0 pps
171.69.121.4    
171.69.5.27     eng-cc-4.cisco.com  
     |     ^      ttl   3   
     v     |      hop -21  ms    -678/23 = --%      2 pps    0/1 = --%  0 pps
171.69.5.21     
171.69.62.130   eng-ios-2.cisco.com  
     |     ^      ttl   4   
     v     |      hop 5    ms    605/639 = 95%      63 pps    1/1 = --%  0 pps
171.69.62.144   
171.69.58.65    eng-ios-f-5.cisco.com  
     |      \__   ttl   5   
     v         \  hop 0    ms        4         0 pps           0    0 pps
171.69.58.88    171.69.62.144   
  Receiver      Query Source

mrinfo

此命令可显示多播邻居路由器信息、路由器功能和代码版本、多播接口信息、TTL 阈值、度量值、协议和状态。当您需要验证多播邻居、确认双向邻接关系存在以及验证隧道是否在两个方向上都为启用状态时,此命令非常有用。

Router# mrinfo 
  192.1.7.37 (b.cisco.com) [version cisco 11.1] [flags: PMSA]: 
  192.1.7.37 -> 192.1.7.34 (s.cisco.com) [1/0/pim] 
  192.1.7.37 -> 192.1.7.47 (d.cisco.com) [1/0/pim] 
  192.1.7.37 -> 192.1.7.44 (d2.cisco.com) [1/0/pim] 
  131.9.26.10 -> 131.9.26.9 (su.bbnplanet.net) [1/32/pim]

输出中的标志表示:

  • P = 支持修剪

  • M = 支持 Mtrace

  • S = 支持 SNMP

  • A = 支持自动 RP

mtrace

此命令可显示从源到接收方的多播路径,并且跟踪网络中各点之间的路径,显示每个节点上的 TTL 阈值和延迟。在排除故障时,使用 mtrace 命令可查找多播数据流的终止点、验证多播数据流的路径并识别次优路径。

Router# mtrace 171.69.215.41 171.69.215.67 239.254.254.254 
Type escape sequence to abort. 
Mtrace from 171.69.215.41 to 171.69.215.67 via group 239.254.254.254 
From source (?) to destination (?) 
Querying full reverse path... 
0  171.69.215.67 
-1  171.69.215.67 PIM  thresh^ 0  0 ms 
-2  171.69.215.74 PIM  thresh^ 0  2 ms 
-3  171.69.215.57 PIM  thresh^ 0  894 ms 
-4  171.69.215.41 PIM  thresh^ 0  893 ms 
-5  171.69.215.12 PIM  thresh^ 0  894 ms 
-6  171.69.215.98 PIM  thresh^ 0  893 ms

ping

在排除故障时,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 

显示命令

此部分中的命令可帮助您在排除多播问题时收集有用信息。请参见 IP 多播命令参考指南获得有关这些 show 命令的更全面信息。

提示: 如果您的 show 命令响应缓慢,最可能的原因是路由器当前正在为 show 命令中的 IP 地址执行 IP 域名查找。您可以禁用 IP 域名查找。可在路由器全局配置模式下使用 no ip domain-lookup 命令禁用 IP 域名查找。这将终止 IP 域名查找并提高 show 命令输出速度。

show ip igmp groups

此命令显示哪些组播组直接地连接到路由器,并且哪些通过互联网组管理协议(IGMP)了解。使用此命令可验证源或接收方是否已实际加入路由器接口上的目标组。“前个申报人”列只显示一台 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

show ip igmp interface

请使用此命令显示关于接口的组播相关的信息,并且验证IGMP启用,正确版本运行,计时器,存活时间(TTL)阈值,并且IGMP查询者路由器适当地设置。不需要在接口上配置 IGMP。当您配置 ip pim dense-mode|sparse-mode|sparse-dense-mode 时,会默认启用 IGMP。

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)

show ip pim neighbor

请使用此命令列出思科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 消息为止)

  • Ver - 邻居接口上的 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> 接口命令设置 DR 优先级。默认 DR 优先级设为 1。为了互操作性,如果 PIM 邻居运行的是不支持 DR 优先级功能的较旧 Cisco IOS 版本,则“DR Prior”列显示为“N”。如果某个邻居是接口优先级显示为“N”的唯一路由器,则它将成为 DR,无论哪个路由器实际上具有最大的 IP 地址。如果此列下列出多个显示“N”的 PIM 邻居,则取具有最大 IP 地址的路由器。

  • Mode - 关于 DR 和其他 PIM 功能的信息。

    此列列出了 DR 以及 PIM 邻居支持的任何功能:

    DR -PIM邻居是指定路由器

    B - 支持双向 PIM (Bidir-PIM)

    S - 支持状态刷新(仅适用于密集模式)

排除故障时,使用此命令可验证所有邻居是否处于启用状态以及它们是否在使用适当的模式、版本和过期计时器。您还可以检查路由器配置,或者使用 show ip pim interface 命令验证模式(PIM 稀疏或 PIM 密集模式)。使用 debug ip pim 命令可观察 PIM 查询消息交换。

show ip pim interface

使用此命令可显示有关为 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

show ip mroute summary

使用此命令可显示 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
  (133.33.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

show ip mroute

使用此命令可显示 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

(133.33.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

show ip mroute active

使用此命令可显示超过阈值的活动数据流来源和组。当您排除故障时,请使用它验证有效的来源组,每源组的(S流量速率, G)对(您一定交换到最短路径结构树(SPT))和检查目标群组播数据流是否接收。如果未收到数据流,请寻找从源流向接收方的活动数据流。

R1# show ip mroute active
Active IP Multicast Sources - sending >= 4 kbps

Group: 239.255.0.1, (?)
   Source: 133.33.33.32 (?)
   Rate: 10 pps/115 kbps(1sec), 235 kbps(last 23 secs), 87 kbps(life avg)

show ip rpf

请使用此命令显示IP组播路由如何执行反向路径转发(RPF)。在排除故障时,使用该命令可验证 RPF 信息是否正确。如果不正确,请检查单播路由表中的源地址。并且,请在源地址上使用 ping 命令和 trace 命令验证单播路由是否正常工作。您也许需要使用距离矢量组播路由协议(DVMRP)路由或静态mroutes修复所有单播-组播不一致。

R1# show ip rpf 133.33.33.32
RPF information for ? (133.33.33.32)
  RPF interface: Ethernet0
  RPF neighbor: ? (192.168.10.2)
  RPF route/mask: 133.33.0.0/16
  RPF type: unicast (eigrp 1)
  RPF recursion count: 0
  Doing distance-preferred lookups across tables

show ip mcache

此命令可以验证 IP 多播快速交换缓存并调试快速交换 Bug。

R1# show ip mcache
IP Multicast Fast-Switching Cache
(133.33.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 count

使用此命令可验证已收到多播数据流并检查其速率和丢包数。如果未收到数据流,请在源和接收方之间查找,直至找到数据流的终止位置。使用此命令还可验证是否正在转发数据流。如果未转发,请使用 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: 133.33.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:

show ip route

使用此命令可检查单播路由表并修复 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    133.33.0.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

show ip pim rp mapping

使用此命令可按多播组范围查看 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 输出以及指出网络中存在故障的输出。有关这些 debug 命令的更全面信息,请参见 Cisco IOS debug 命令参考

debug ip igmp

使用 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

以上输出表示,路由器将 IGMP 版本 2 查询从多播地址 224.0.0.1 (此子网中的所有多播系统)上的接口 Ethernet 1 发送出去。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

使用 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=133.33.33.32 (Ethernet0) d=239.255.0.1 (Ethernet1) len 906, mforward

此命令可解码多播数据包并显示数据包被转发 (mforward) 还是丢弃。在调试网络中的数据包流问题时,若要查看 TTL 值和数据包丢失的原因,此命令非常有用。

警告 警告: 当您打开数据包级 debug 输出时,特别是当路由器的多播数据包负载较高时,请谨慎使用此命令。

debug ip mrouting

此命令对于路由表维护目的非常有用。使用它可验证 (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 (133.33.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

使用 debug ip pim 命令可显示收到和传输的 PIM 数据包,以及与 PIM 相关的事件。此命令的 no 形式可禁用 debug 输出。

本部分通过一个示例帮助您了解 PIM 稀疏模式的 debug 输出,并显示了一个典型的 debug 输出。

/image/gif/paws/13726/57a.gif

以下为 R1 上的 debug ip pim 命令的输出:

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 邻居连接。这些以“查询间隔”(秒)在 R1 (E0) 和 R2 (E0) 之间定期交换的 Hello 消息会持续跟踪 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.16.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 在其 mrouting 表中安装了 (*, 239.255.0.1) 后,便将收到加入/修减消息的接口添加到其传出接口列表,设为转发状态。然后,它在收到加入/修减消息的接口上返回 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 133.33.33.32, group 239.255.0.1 
8 PIM: Send Register to 192.168.7.2 for 133.33.33.32, group 239.255.0.1 
9 PIM: Received Join/Prune on Serial4/0 from 192.168.7.2 
10 PIM: Join-list: (133.33.33.32/32, 239.255.0.1), S-bit set 
11 PIM: Add Serial4/0/192.168.7.2 to (133.33.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 (133.33.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 (133.33.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 133.33.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 (133.33.33.32/32, 239.255.0.1), S-bit 
22 PIM: Send Join on Serial0 to 192.168.7.1 for (133.33.33.32/32, 239.255.0.1), S-bit 
23 PIM: Send Register-Stop to 192.168.7.1 for 133.33.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: (133.33.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 (133.33.33.32/32, 239.255.0.1) 
30 PIM: Join-list: (133.33.33.32/32, 239.255.0.1), S-bit set 
31 PIM: Add Ethernet0/192.168.10.1 to (133.33.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: 133.33.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 (133.33.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) (133.33.33.32, 239.255.0.1) 条目。

第 9 行到第 11 行表示,R3 从 R2 收到加入消息,在 mroute 表中安装 (S,G) (133.33.33.32,239.255.0.1) 条目,并将连接到 RP 的接口设为转发模式,以构建面向源的 (S,G) 多播 SPT 树。

在第 23 行,R2 开始接收沿着 SPT 传送的 (S,G) 数据流,并向源发送寄存器终止消息(和加入消息)。

第 12 行到第 15 行表示,R3 收到寄存器终止消息,清除寄存器标记,并且终止封装 (S,G) 数据流。

在 RP 和 R3 之间会定期交换加入/修减消息,以维护多播树。


相关信息


Document ID: 13726