UDP组播的基本步骤:创建udp socket、bind、加入组播组、发送/接收数据、close。
组播传输:数据发送者(源数据)将同一数据发送到多个接受者(组播组成员)。无论有多少个接受者,在整个网络链路上,只有一份该数据(在特殊场合,可以节省带宽,减少主干网络阻塞)。
在网络中,主机间可以用三种不同的地址进行通信:单播地址(unicast):即在子网中主机的唯一地址(接口)。如IP地址MAC地址:
80:C0:F6:A0:4A:B1。
广播地址:这种类型的地址用来向子网内的所有主机(接口)发送数据。如广播IP地址是
,MAC广播地址:FF:FF:FF:FF:FF。
组播地址:通过该地址向子网内的多个主机即主机群(接口)发送数据。
如果只是向子网内的部分主机发送报文,组播地址就很有用处了;在需要向多个主机发送多媒体信息
(如实时音频、视频)的情况下,考虑到其所需的带宽,分别向每一客户端主机发送数据并不是个好办法,如
果发送主机与某些接收端的客户主机不在子网之内,采用广播方式也不是一个好的解决方案。
MLD(multicast listener discover)组播侦听者发现协议,主要是ipv6路由器在其直连网段上发现组播侦听者。
路由器使用 IPv6单播链路本地地址作为源地址 发送MLD报文。MLD使用ICMPv6(Internet Control Message Protocol for IPv6,针对IPv6的互联网控制报文协议)报文类型。和IGMP协议一样,所有的MLD报文被限制在本地链路上,跳数为1。解释一下:单播链路本地地址前缀为FE80::/64,这个概念类似于ipv4中,当DHCP分配失败时自动生成的169.254.XXX.XXX这样的地址,凡是源地址或目的地址中含有link-local address的报文,路由器都不应当转发它。这样的报文只能在一个LAN中互通。
简单介绍一下MLD两个版本:MLDv1和MLDv2,详见百度。
MLDv1协议是从IGMPv2协议中派生出来的,其运行机制和IGMPv2协议相同,专门用于IPv6组播群组的管理,其主要是应用于ASM(Any Specific Multicast)模式组播路由协议的组管理工作。主要功能有查询路由器的选举、查询报文、响应抑制、报告报文、离开报文、特定组查询报文、快速离开。
MLDv2从IGMPv3中发展过来,和MLDv1相比,增加了源过滤功能,不仅能够支持ASM模式组播路由协议,而且还能够支持基于IPv6的SSM(Source Specific Multieast)模式组播路由协议。
重点介绍一下如何测试MLD Snooping?针对我们自研的RTK switch
MLDv1测试环境搭建——采用vlc
vlc的一些版本支持ipv6组播服务器的搭建与点播,步骤和ipv4组播服务器的搭建一样,只需要将ipv4的组播地址改成ipv6组播地址,在客户端上输入的网络url格式为rtp://@[ff1e::1]:5004这样的即可。
这里涉及到ipv6的组播地址,要想了解ipv6组播地址更多内容请参见文章《IPv6的组播地址(掌握IPv6通信原理的关键知识点)》http://blog.51cto.com/7658423/1337745
上图这套环境看着像我们的RTK switch是个proxy,实际不然。因为我们的RTK switch现在不支持MLD Query,所以只好借助于H3C带有MLD Query功能的交换机来搭vlc的环境,让RTK Switch可以转发query报文。并且我们的RTK Switch也不支持proxy功能。
MLDv1测试环境搭建——采用TSC
1、MLD Querier device建立
2、MLD客户端device建立
3、在MLD Querier device端口上建立一条绑定流
4、开启device,开始发流吧
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)