组播侦听发现协议是ipv6才有的协议,他的原理是当源主机发送一份数据到一个组播地址,所有加入了这个组播地址的成员都可以收到一份数据的拷贝。并且只有组播成员才可以接收到数据。路由器通过MLD协议,可以了解自己的直连网段上是否有IPv6组播组的侦听者,并在数据库里做相应记录。同时,路由器还维护与这些IPv6组播地址相关的定时器信息。
优点:
相对单播来说,如果一份数据要发送到多个主机,单播必须发送多份数据,即每个主机都发一份数据。而多播则只要发送一份,当数据量很大,接收主机很多时,采用组播就减小了网络的负担,提高了网络服务质量。
MLD协议:
mld是ICMPV6的一个子协议。现在有二种版本,MLDV1和MLDV2。MLDV1有三类消息类型:查询消息,报告消息和DONE消息。MLDv2有二类消息类型:查询消息和报告消息。不过它是支持MLDv1的DONE消息的。
(1)查询消息(type=130)
① 一般查询消息。用于发现在直连的链路上哪些组播地址有组播征听者。
② 特定组播地址查询消息(Multicast AddresSpecific Query)。用于判断一个特定的组播地址在本地链路上是否有组播听者。在MLDv2中还有一征类消息即特定源组播查询消息(Multicast Addresand Source Specific Query),用于判断一个特定源的组播地址在本地链路上是否有组播征听者。
(2)组播征昕者报告消息(Type=131)
The Source Address:
1、link-local address which the query is being sent
2、If the MLDv2 Multicast Listener Report message is for a solicitednode
multicast address corresponding to a unicast address for which duplicate address
detection is not yet complete,the source address is set to the unspecified address(::)
The Destination Address:
FF02::16
(3)组播征听者Done消息(Type=132)
The Source Address:
link-local address which the query is being sent
The Destination Address:
FF02::2
交互过程:
第一种交互方式是由路由器发起的。路由器作为询问者向与其相连接的所有主机发送一个GeneralQueries报文。其目的地址是FF02::1。主机收到此消息后,应答一个包含当前组播地址状态记录的报文消息,此报文告诉路由器此主机希望接收哪个组播组或者哪些源发来的数据。
第二种交互方式是由主机发起的。当一个主机离开一个组播组时,它就要向路由器发送组播征听者完成消息,该消息包括一个状态改变记录。路由器收到此消息后,向其相连的链路上发送一个特定组播地址查询消息。询问是否还有主机加人了此特定的组播地址。在MLDv2中,如果指定了源,路由器向所有主机发送一个特定源组播查询消息.询问是否有主机加入此有源组播。
参考文章:http://www.h3c.com.cn/Products___Technology/Technology/Group_Management/Other_technology/Technology_recommend/200805/605839_30003_0.htm