主机扩展用于IP多点传送( 四 )


为无效的组地址或接口标识符而出错 。JoinHostGroup操作可能由于缺少本地资源而失败 。
LeaveHostGroup可能因为本主机不属于在给定接口上的某一组而失败 。LeaveHostGroup如
果成功,组成员关系可能还存在,因为可能有多个高层协议是同一个组的成员 。
7.2IP模块的扩展
为了能够接收多播IP数据报,必须扩展IP模块,维持一个与每个网络接口相关的主机
组成员列表 。在到来的数据报中,目的地属于这些组地址中某一个的数据报的处理方式与目
的地属于主机的单播地址中某一个数据报的处理方式相同 。
假如主机接收到目的地址是组地址的数据报,而该主机不属于该组,则这个数据报将被
丢弃而不生成任何错误或日志记录 。在有多个网络接口的主机上,假如目的地属于某一组的
数据报经由一个接口到达,而该主机只在另一个网络接口上属于这个组,则这个数据报将被
毫无声息的丢弃 。(出现这种情况的唯一原因是本地网络模块的多播地址过滤功能不完
善 。)
假如到来的数据报的IP生存时间(TTL)为1,则该数据报不会被拒收(即,假如到来
的数据报不会再被转发,则它的生存时间字段不会自动减少) 。假如到来的数据报的源地址
字段出现了IP主机组地址,则该数据报将被毫无声息的丢弃 。ICMP出错信息(目的主机
不可达,超时,参数问题,源站被抑制,重定向)不会因为目的地为IP主机组的数据报而
产生 。
主机组成员列表根据高层协议的JoinHostGroup和LeaveHostGroup操作要求而更新 。每
个成员应该有一个相应的参照数或其它同样的机制,来处理加入和离开同一组的多个要求 。
当第一个要求加入和最后一个要求离开在给定接口上的某个组时,那个接口的网络模块就被
告知,去更新它的多播接收过滤器(参看7.3部分) 。
IP模块也必须扩展,实现在附录1中说明的IGMP协议 。IGMP是用来让邻近的多播路
由器获知在一个特定的本地网络中出现的主机组成员 。为了支持IGMP,每个2级主机必须
在初始化时加入“所有主机”组(地址为224.0.0.1),而且只要主机是开着的,它都要是这
个组的成员 。
(地址是所有主机组的数据报会被多播路由器当成一个非凡情况,不管它的生存时间是
多少,它不会被传递出单一的网络 。因此,所有主机地址不用于互联网范围上的广播地址 。
为了达到IGMP的目的,属于所有主机组的这项要求仅仅在主机属于至少一个其它组时才真
正是必须的 。然而,要求主机在任何时候是一个所有主机组的成员的原因是(1)简单,(2)接
收不必要的IGMP请求的频率应足够的低,以使开销可以忽略不计 。(3)所有主机地址可以
用于其它面向路由选路的目的,例如通知网关的存在或解析本地地址)
7.3对本地网络服务接口的扩展
把到来的本地网络多播分组传递给IP模块使用的方式与处理本地网络单播分组时一
样,都是使用“ReceiveLocal”操作 。为了答应IP模块通知本地网络模块它要接收哪种多
播分组,必须扩展本地网络服务接口,以提供以下两个新操作:
JoinLocalGroup(group-address)
LeaveLocalGroup(group-address)
“group-address”是IP主机组地址,JoinLocalGroup操作要求本地网络模块接收和向上传递
目的地为给定IP主机组地址的分组 。LeaveLocalGroup操作要求本地网络模块停止向上递交
目的地为给定IP主机组地址的分组 。本地网络模块应该能够映射IP主机组地址到本地网络
地址,

推荐阅读