MLD查询器选举
使能了MLD协议的组播设备在网段中的角色有两个:
查询器
负责发送查询报文并接收主机反馈的加入报文和离开报文,以此来了解与该接口连接的网段上有哪些组播组存在接收者(即组成员)。
非查询器
只接收主机反馈的加入报文,了解与该接口连接的网段上有哪些组播组存在接收者,并根据网段中查询器的动作确定当前网段中有哪些组播组成员离开。
通常情况下一个网段只有一个查询器,因此组播设备之间需要用某些方式来选出查询器。查询器选举时采用以下的原则:
DeviceA使能MLD协议后,在MLD协议启动阶段会默认自己为当前网段中的查询器,向网段中发送查询报文。如果收到link-local地址比自己小的DeviceB发来的查询报文,则DeviceA由查询器转为非查询器,并启动“其他查询器存在定时器”,记录DeviceB为当前网段的查询器。
如果DeviceA在非查询器状态时收到查询器DeviceB发送的查询报文,则更新“其他查询器存在定时器”;如果此时收到的查询报文不是先前记录的查询器DeviceB发来的,而是新的DeviceC发来的,且DeviceC的link-local地址比DeviceB的小,则更新查询器为DeviceC,同时更新“其他查询器存在定时器”。
如果DeviceA在非查询器状态时,“其他查询器存在定时器”超时,则由非查询器转为查询器状态,承担起查询器的职责。
当前仅支持同网段上同版本的组播设备之间进行查询器选举。为了保证正常工作,需要在同网段所有设备上配置相同版本的MLD。