远距离矢量多播选路协议( 八 )


想把多播超出它的本地网络的范围 , 那么它的数据报的TTL字段的值至少是阈值和到网络
边缘的距离的和 。必须有一个配置选项答应为物理接口和隧道指定阈值 。
当一个路由器启动时 , 它必须在它的每个虚拟接口上为所有的路由发送一个请求 。这个
请求是一个带有RDA命令的报文 , RDA命令的计数等于0 。
5.2接收路由报文
路由器必须知道路由报文到达的虚拟接口 。因为路由报文的地址可能是所有多播路由器
的IP地址 , 而且因为有隧道 , 接收接口不能仅仅通过检查报文的IP目的地址而被识别 。
对于在路由报文中表示的每条路由 , 以下必须出现:
IF为一个路由设置了度量:
THEN增加有报文到达的虚拟接口的度量 。
在路由表中查找路由的目的地址 。
IF路由没有出现在表中:
THEN试图在路由表中发现到相同网络的一条路由 。
IF那条路由出现在表中:
THENIF这条路由和被发现的路由来自相同的路由器:
THENCONTINUE下一条路由 。
IF路由没有一个无穷大的度量:
THEN在路由表中增加这条路由 。
CONTINUE下一条路由 。
IF这条路由和被发现的路由来自同一个路由器:
THEN清除路由定时器 。
IF收到一个路由 , 它与被发现的路由的度量不同:
THEN使用新的路由和无穷大来改变被发现的路由 。
IF度量与无穷大相等:
THEN置路由定时器的值为EXPIRATION_TIMEOUT.
CONTINUE下一条路由 。
IF接收到的无穷大与被发现的无穷大不同:
THEN将发现路由器无穷大改为接收到的无穷大 。
将被发现的路由的度量改为接收到的无穷大和发现路由度量的最小值 。
ELSEIF收到一个度量 , (它小于被发现路由的度量或(路由定时器的当前值至少接近
EXPIRATION_TIMEOUT的一半 , 而且被发现路由的度量等于接收到的度量 ,
这个度量小于接收到的无穷大)):
THEN使用接收到的路由改变路由表 。清除路由定时器 。
CONTINUE下一条路由 。
5.3邻居
必须有一个列表保存在每个附属的网络上的临近多播路由器 。信息可从接收到的
DVMRP路由报文中获得 。假如在NEIGHBOR_TIMEOUT秒中没有收到一个邻居的任何消
息 , 则认为它已经关机了 。
5.4本地组成员
像[2]所要求的那样 , 多播路由器必须跟踪附属于它的有多播能力的网络上的组成员 。
每过QUERY_RATE秒 , 在每个网络上 , 应由一个指定的路由器发送一个IGMP成员请求给
所有多播组地址(224.0.0.1) 。IGMP成员请求将使主机在一个短延迟内用IGMP成员报告作
为响应 。主机将为一个组发送一个报告声明这个组的多播地址 。
成员请求报文的IPTTL字段为1 。
在一个网络上的路由器选举或“指定”一个单一的路由器发出请求 。被指定的路由器是
网络中IP地址最小的路由器 。当启动时 , 路由器在获知(假设通过路由报文)还有一个更
低的地址的路由器之前 , 它认为自己就是被指定的路由器 。为了在启动时获知一个网络上出
现的组成员 , 路由器应该多播许多成员请求 , 每次请求之间有一个短的延时 。我们建议发送
三个请求 , 每次的间隔是四秒 。
多播路由器必须接收所有送到所有多播地址的数据报 。当从一个接口上收到有关一个组
的IGMP成员报告 , 它必须记录这个接口上这个组的存在性和时间 , 而且假如这个组已经被
记录 , 则更新时间 。被记录的组成员必须设置了超时时间 。假如过了
MEMBERSHIP_TIMEOUT秒后 , 没有收到一个被记录的组的组成员报告 , 则这个被记录的

推荐阅读