【转】采用二层交换机搭建局域网组播环境

上一篇 / 下一篇  2013-02-01 04:37:47 / 个人分类:网络

本文要介绍的是局域网组播,不考虑跨网段的组播实现,因此组播路由协议与本文要介绍的内容无关。局域网组播环境,也就是一个最小的组播环境涉及到的要素有三个,分别是组播源、支持组播的交换机以及接收组播数据的终端。首先介绍组播协议,组播地址,然后对组播源,交换机和终端在组播环境中的功能进行介绍,最后给出一个实际的局域网组播环境。

组播协议 - IGMP

下图所示是IGMP v2协议的数据包格式。其中Type的取值有三种可能,分别是组成员查询(0x11),组成员报告(0x16)和离开组(0x17)。其中查询又有两种子类型,分别是General Query和Group-Specific Query,二者的区别是,前者的Group Address是224.0.0.1,而后者的Group Address是特定的组播地址。

采用二层交换机搭建局域网组播环境

组播地址

D类IP地址是组播IP地址,D类组播地址范围是224.0.0.0~239.255.255.255。其中224.0.0.0~224.0.0.255地址段中预留的组播地址,地址224.0.0.0 保留不做分配,其它地址供路由协议使用。224.0.0.1指的是所有主机,224.0.0.2指的是所有路由器。

224.0.1.0~231.255.255.255和233.0.0.0~238.255.255.255地址段是ASM(Any-Source Multicast,任意源组播模型)组播地址。

232.0.0.0~232.255.255.255地址段是SSM(Source-Specific Multicast,指定源组播模型)组播组地址。

239.0.0.0~239.255.255.255地址段是本地管理组播地址,仅在特定的本地范围内有效。

IANA规定,组播MAC地址的高24bit为0x01005e,MAC地址的低23bit为组播IP地址的低23bit,映射关系如下图:

采用二层交换机搭建局域网组播环境

组播源

顾名思义,就是组播数据的源头。与普通的UDP推送相比,区别在于组播IP地址和组播MAC地址的特殊性。

组播交换机

并非随便一个交换机就能用于组播环境的搭建,条件是交换机要支持IGMP Snooping。对于支持IGMP Snooping的交换机来说,配置组播环境通常需要做两件事,第一就是对IGMP Snooping的支持进行配置,第二就是启动查询器。

IGMP snooping运行在二层交换设备上,管理组播组与端口的映射关系。IGMP snooping根据收到的IGMP报文的内容维护组播组与端口的映射,比如从某个端口收到IGMP加入一个组播组的报文的时候,则添加向该端口发送目的为相应组播组的表项。

查询器用来发送IGMP查询,并根据对于查询的响应来维护组播组与端口的映射表。下图是一个普遍组查询的抓包:

采用二层交换机搭建局域网组播环境

具体的内容应该参见交换机的文档。

有的交换机不支持查询器,可以实现一个软件的查询器,下面就是一个python代码,功能是发送一个普遍组查询:

import socket
import struct

def IGMP_general_query_send ():
    igmp_general_query_packet = struct.pack("bbBBbbbb", 0x11, 0x64, 0xee, 0x9b, 0, 0, 0, 0)
    sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IGMP)
    sock.sendto(igmp_general_query_packet, ("224.0.0.1", 0))

IGMP_general_query_send()

组播接收终端

就是IGMP协议的支持。我们采用IGMP v2,因此先来介绍一下IGMP v2协议。有三种类型的IGMP查询消息,分别是成员查询,成员报告,离开组播组。

局域网组播实践


局域网组播是小型IPTV解决方案中直播的较好选择。经过一番研究发现,采用可管理的二层交换机实现局域网组播是可行的。下面就描述一下采用H3C S5100-24P-SI二层交换机如何搭建这样的环境。

涉及到的设备有:
  1. 支持组播的实时编码器,就采用本人的Rainbow好了。
  2. 支持IGMP Snooping的可管理交换机,采用H3C S5100-24P-SI。
  3. 终端播放器,采用VLC播放器。
实现步骤有三部,分别是配置交换机、配置实时编码器以及用VLC接收组播,并通过Wireshark抓包验证组播实现的正确性。

配置交换机需要通过Console来完成,通过Web界面是实现不了的。怎么登陆终端这里就不再赘述了。登陆到终端以后运行如下命令使能IGMP Snooping:
system-view
igmp-snooping enable
vlan vlan-id
igmp-snooping enable
然后使能查询器,命令如下:
igmp-snooping querier

配置Rainbow,推送组播流到239.1.1.1:12345

配置WindowXP的IGMP版本为2,因为我的VLC是安装在WindowsXP下的,而且我采用IGMP V2,因为中兴的V600V4A盒子是IGMP V2。做法就是修改注册表,增加或者修改[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]下的表项"IGMPVersion"并设置值为dword:00000003,然后重新启动。

用vlc打开udp://239.1.1.1:12345,然后点播放和停止按钮,并用wireshark抓包证实正确性。

采用二层交换机搭建局域网组播环境

TAG:

 

评分:0

我来说两句

Open Toolbar