断言(Assert)
当一个网段内有多个相连的PIM路由器RPF检查通过向该网段转发组播报文时,则需要通过断言机制来保证只有一个PIM路由器向该网段转发组播报文。PIM路由器在接收到邻居路由器发送的相同组播报文后,会以组播的方式向本网段的所有PIM路由器发送Assert报文,其中目的地址为永久组地址224.0.0.13。其它PIM路由器在接收到Assert报文后,将自身参数与对方报文中携带的参数做比较,进行Assert竞选。竞选规则如下:
- 单播路由协议优先级较高者获胜。
- 如果优先级相同,则到组播源的开销较小者获胜。
- 如果以上都相同,则下游接口IP地址最大者获胜。
根据Assert竞选结果,路由器将执行不同的操作:
-
获胜一方的下游接口称为Assert Winner,将负责后续对该网段组播报文的转发。
-
落败一方的下游接口称为Assert Loser,后续不会对该网段转发组播报文,PIM路由器也会将其从(S,G)表项下游接口列表中删除。
Assert竞选结束后,该网段上只存在一个下游接口,只传输一份组播报文。所有Assert Loser可以周期性地恢复组播报文转发,从而引发周期性的Assert竞选。
断言过程如下:
-
RouterB和RouterC从各自下游接口接收到对方发来的组播报文,RPF检查都失败,报文被丢弃。同时,RouterB和RouterC分别向该网段发送Assert报文。
-
RouterB将自身的路由信息与RouterC发来的Assert报文中携带的路由信息进行比较,由于自身到组播源的开销较小而获胜。于是后续组播报文仍然向该网段转发,RouterC在接收到组播报文后仍然由于RPF检查失败而丢弃。
-
RouterC将自身的路由信息与RouterB发来的Assert报文中携带的路由信息进行比较,由于自身到组播源的开销较大而落败。于是禁止相应下游接口向该网段转发组播报文,将其从(S,G)表项的下游接口列表中删除。