PIM-SM故障诊断流程和处理步骤

  PIM-SM(Protocol Independent Multicast Sparse Mode)称为协议独立组播-稀疏模式,属于稀疏模式的组播路由协议,主要用于组播组成员分布相对分散、范围较广、规模较大的网络。稀疏模式默认所有主机都不需要接收组播包,只将组播包转发到有明确需求的主机。

  PIM-SM故障诊断相比于PIM-DM的故障诊断更为复杂,本文以PIM-SM故障诊断流流程引出其故障处理步骤,其中基本囊括了组播常见故障和处理方法。组播详细的故障处理步骤如下。

  1. 检查网络中所有路由器的所有接口是否使能组播

  在所有路由器上执行命令display current-configuration,检查是否配置了multicast routing-enable命令,只有配置了该命令,路由器才使能组播功能。

  2. 检查网络中所有路由器的所有非边界接口是否配置PIM-SM协议

  在定位PIM-SM问题时,必须保证网络中所有路由器的所有非边界接口配置PIM-SM协议。

  3. 检查组播源发送的数据的TTL是否足够到达客户端

  因为路由器在转发组播数据时,与转发单播报文一样,要将组播数据报文IP头的TTL值减1,重新计算Checksum。如果TTL值减1后,变为0,则丢弃该组播数据报文。笔者曾经在一个轨道交通项目中遇到客户的服务器发出的组播数据包到核心交换机后不见了,原因就是服务器发出的数据包TTL值为1,此时可抓取组播包进行TTL检查,也可以在交换机上debugging ip packet查看组播数据包的TTL值。另外组播测试常用软件VLC多个版本发出的组播数据包默认TTL值为1,需在软件的高级偏好设置中跳跃限制(TTL)值改大。

  4.检查网络中所有路由器对于组G是否映射到相同的RP

  在所有路由器上执行命令display pim rp-info,检查网络中所有路由器是否已经发现了组G的RP信息并且所有路由器关于组G的RP信息一致。如果某些路由器没有RP信息或者RP信息不一致,根据RP发现机制的不同,分别参见和BSR-RP故障诊断流程。

  静态RP故障诊断流程:静态RP需要在所有的路由器上进行配置,并且必须保证所有路由器的RP信息完全一致,对于某个特定的组G映射到相同的RP,否则将导致组播不正常。还需要注意以下二点:1、配置了静态RP的路由器是否有到静态RP的路由。2、网络中所有路由器是否配置了ACL限制静态RP为组G服务。

  和静态RP不同,BSR-RP通常不需要在所有的路由器上进行配置,可以只在一个路由器上进行配置,也可以在多个路由器上配置不同的BSR-RP。其故障诊断流程如下:检查网络中是否正确配置了BSR;检查网络中是否正确配置了RP;检查RP接口是否Up;检查是否在RP上配置了ACL并且拒绝为组G服务;检查BSR和RP之间互相学到信息并检查是否存在路由且可以互相ping通;检查RP是否配置了crp-policy命令限制。

  5. 检查网络中所有路由器都存在到达RP的路由

  在所有路由器上执行命令display multicast rpf-info,检查是否所有路由器都存在到达RP的路由。

  6. 检查以RP为根的共享树是否正确建立

  从直连客户端的路由器开始,沿着到达RP的RPF路径反向逐跳进行检查,直到RP为止。共享树故障诊断流程如下:检查是否存在到达RP的路由;检查到达RP的RPF接口是否使能PIM-SM协议;检查到达RP的RPF邻居是否是PIM邻居;检查入接口是否就是RPF接口,出接口列表是否正确。

  7. 检查RP是否已经加入以S为根的最短路径树

  从RP开始,沿着到达S的RPF路径反向逐跳进行检查,直到S为止。其故障诊断流程如下:检查是否存在到达组播源的路由;检查到达S的RPF邻居是否是PIM邻居;检查路由表是否存在(S,G)项。在RP上执行命令display pim routing-table检查(S,G)项是否存在。

  8. 检查直连客户端的路由器是否已经加入以S为根的最短路径树

  从直连客户端的路由器开始,沿着到达S的RPF路径反向逐跳进行检查,直到S为止。其故障诊断流程如下:检查到达S的RPF接口是否使能PIM-SM协议;检查到达S的RPF邻居是否是PIM邻居;用命令display pim routing-table检查(S,G)项是否存在;使用display multicast forwarding-table命令检查是否存在(S,G)转发项并且转发计数保持增长;确保从客户端到达组播源的沿途所有路由器都存在相应转发项。

  9. 检查直连客户端的路由器是否运行IGMP协议

  检查接口是否使能IGMP。检查接口上是否配置了ACL 策略,若显示信息中出现igmp group-policy acl-number 命令,表明该接口上设置了组播组过滤器,IGMP 将按指定的ACL 过滤组成员加入信息。检查该ACL 的所允许的组范围,如果G 在允许范围之外,请修改ACL,或取消该命令,确保IGMP 为组G 成员服务。


2016年01月