探究网关一种支持多播家庭网关设计与实现

更新时间:2024-02-27 点赞:6984 浏览:22883 作者:用户投稿原创标记本站原创

摘自:本科毕业论文结论www.618jyw.com
摘要: 现代的家庭网关的需求,除了基本上网功能,还要求具备播放IPTV等。这促成普通的家庭网关扩展成多播路由。通过简单地架设IGMP的方式实现了支持多播的家庭网关,并且在二层为了防止泛洪,实现了嗅探snooping功能。本文在最后给出了实验架构与测试的结果。
关键词: 家庭网关;多播;IGMP;泛洪;嗅探
:A
0引言
Internet群组管理协议,IGMP是IPv4协议栈中用来向相邻组播路由器报告群组关系的协议。IGMPv3增加了源地址过滤功能,也就是对指定源地址,或者对所有除了指定源地址才可以发送到特定的组播地址。组播路由协议可以通过这些信息来避免转发组播包到一些没有对组播数包感兴趣的接收端口的网络中。
IGMP snooping用来监控主机与组播路由器之间的IGMP流量。二层交换机用snooping学习到的信息来转发IGMP流量到连接有对这些流量感兴趣的接收器的接口上。
本文通过学习文献[1-5],给出了带有snooping功能的多播路由的IGMP的实现方案和实验结果。
1 IGMP介绍
IGMPv1主要基于查询和响应机制来完成对组播成员的管理。过程如下:

1. 主机主动发送IGMP成员关系报告报文申明加入,不必等待IGMP查询报文;

2. 多播路由器定期发送IGMP查询报文;

3. 在收到查询报文后,主机会发送各自的群组成员报告;

4. 经过以上查询和响应过程,组播路由器就知道本网段有哪些群组的组播成员,就会转发发往这些组的组播数据。
但是,IGMPv1没有专门定义离开组播组的报文。当运行IGMPv1的主机离开某组播组时,将不会向其要离开的组播组发送报告报文。当网段中不再存在该组播组的成员后,IGMP路由器将收不到任何发往该组播组的报告报文,于是IGMP路由器在一段时间之后便删除该组播组所对应的组播转发项。这就有后来的IGMPv2。
与IGMPv1相比,IGMPv2增加了离开组机制。在IGMPv1中,主机离开组播组时不会向组播路由器发出任何通知,导致组播路由器只能依靠组播组成员查询的响应超时来获知组播组成员的离开。而在IGMPv2中,当一个主机离开某组播组时:
(1)该主机向本地网段内的所有组播路由器发送离开组报文;
(2)当发送查询报文的路由器收到该报文后,向该主机所声明要离开的那个组播组发送特定组查询报文;
(3)如果该网段内还有该组播组的其它成员,则这些成员在收到特定组查询报文后,会在该报文中所设定的最大响应时间内发送成员关系报告报文;
(4)如果在最大响应时间内收到了该组播组其它成员发送的成员关系报告报文,组播路由器就会继续维护该组播组的成员关系;否则,组播路由器将认为该网段内已无该组播组的成员,于是不再维护这个组播组的成员关系。
IGMPv3[3]在兼容和继承IGMPv1和IGMPv2的基础上,进一步增强了主机的控制能力,并增强了查询和报告报文的功能。

1. 主机控制能力的增强

IGMPv3增加了针对组播源的过滤模式,使主机在加入某组播组G的同时,能够明确要求接收或拒绝来自某特定组播源S的组播信息。当主机加入组播组时:
INCLUDE:若要求只接收来自指定组播源如S1、S2、……的组播信息,则其报告报文中可以标记为INCLUDE Sources(S1,S2,……);
EXCLUDE:若拒绝接收来自指定组播源如S1、S2、……的组播信息,则其报告报文中可以标记为EXCLUDE Sources(S1,S2,……)。

2. 查询和报告报文功能的增强

(1)携带源地址的查询报文
IGMPv3不仅支持IGMPv1的普遍组查询和IGMPv2的特定组查询,而且还增加了对特定源组查询的支持。
(2)包含多组记录的报告报文
IGMPv3报告报文的目的地址为224.0.0.22,可以携带一个或多个组记录。在每个组记录中,包含有组播组地址和组播源地址列表。组记录可以分为如下六种类型:IS_IN、IS_EX、TO_IN、TO_EX、ALLOW和BLOCK。各种类型含义及转换关系请参阅文献[3]。
2 IGMP Proxy与snooping原理

2.1 IGMP Proxy

主机转发成员关系报告报文和响应查询报告,如加入,离开特定的群组。
概念上有一个上行接口和多个下行接口,如图1
所示:
Proxy除了维护所有LAN口IGMP客户端和转发Join/Lee包外,还需要维护多播路由,以便多播多播路由器。

2.2 IGMP Snooping

一般默认情况下,二层的Lan口Switch会广播多播包,如图2,也就是通常说的flood。
Snoop就是建立了端口与群组之间的映射关系,也就是通过学习建立端口与组播MAC地址之间的映射,从而仅仅需要向连接有该群组主机的端口转发数据包。如图3,仅需向Host A和Host B的端口转发数据,就防止了flood。
3 IGMP Proxy与Snooping的实现

3.1 IGMP在系统中的位置与启动

系统在图形用户接口GUI 上有两处配置项:

1. WAN配置页面上对应是否启动IGMP,可以看成是总开关;

2. 在高级-〉多播页面上,还设定有是否开启proxy与snooping,如图4所示。 配置在提交页面时生效。
3.

2. IGMP Proxy的实现

IGMP proxy实现为一个守护进程,用来处理来自Lan口的IGMP的报文,并且向Wan口汇报Lan口IGMP信息。事实上,proxy还有2.1中提到的另一个作用:维护组播路由来决定是否转发Wan口来的多播数据流到Lan口。Proxy的流程图5如下所示,
如图5所示,在守护进程进入主循环前,做一些登记pid、初始化多播路由、计时器及设置Wan口和Lan口的多播参数。最后进入消息处理主循环igmpv3_accept。消息处理函数igmpv3_accept进一步分解的流程图如图6所示,
从图6中看出对群组成员报告的消息处理中,Proxy完成了两项重要工作:向Wan口方向汇报了成员关系;添加了多播路由给内核使用。
除了用户层的守护进程,还需要kernel层的支持,图7是kernel层中IGMP报文处理流程图,

3. IGMP Snoop的实现

Snoop作为源于:论文例文www.618jyw.com
实现IGMP的一个新增功能:由用户态的配置与核心态的包处理和多播群组的维护构成。
配置部分包括:a)Enable 还是disable Snoop;
b)增加或删除静态组播群组。前者通过proc文件系统来决定是否使能IGMP Snoop;后者通过Ioctl来设定群组到kernel中,因为snoop工作在核心态。
当kernel从LAN口收到IGMP报文,就会解析并记录下收到报文的端口,并维护多播组与端口的映射关系。
当多播组要转发给LAN口时,就通过Snoop模块来按照多播组和端口的映射关系,转发给合适的LAN口。
4 实验结果与分析

4.1 环境搭建

实验中,我们搭建了图8所示的简单拓扑图,图中,群组中仅有两个成员,一个作为IPTV的服务器端,另一个作为客户端来播放网路视频流。

4.2 测试步骤与实验结果

4.

2.1 测试步骤

1.在PC2上用VLC media player在向导的帮助下运行多播服务器,播放视频。

2.在PC1上用VLC media player作为客户端,播放网络视频流。

注意事项:上面步骤中,两者的多播地址设置必须一致,而且是D类非保留IP,如228.

1.

2.3。

4.2 测试结果 在PC1上能顺利的播放PC2上播放的视频,说明多播路由成功实现。图9是关闭客户端lee包截图:
5 结论
通过在一般路由器上添加IGMP proxy成功地实现了组播路由器。这对于研究和学习IGMP协议有重要的实践意义,也为将IGMP协议实现在其他类似设备上提供了指导方向。
参考文献(References)
S.E. Deering,http://www.cse.ohio-state.edu/cgi-bin/ rfc/rfc111

2.html

W. Fenner,http://www.cse.ohio-state.edu/cgi-bin/rfc /rfc223

6.html

[3] B. Cain, S. Deering, I. Kouvelas, B. Fenner, A. Thyagarajan, http://www.cse.ohio-state.edu/cgi-bin/rfc/ rfc337

6.html

[4]Douglas E.Comer, 用TCP/IP进行网际互联 第一卷[M]. 电子工业出版社,2001,5 (第一版) : 221~243.
[5] Douglas E.Comer, 用TCP/IP进行网际互联 第二卷[M]. 电子工业出版社,2001,4 (第一版) : 119~137.
作者简介
束国伟(1981-),男,江苏盐城人,本科,助教,无锡南洋职业技术学院信息系,研究方向为软件技术、信息安全;
苏亚娟(1978-),女,青海西宁人,硕士,讲师,无锡南洋职业技术学院信息系,研究方向为网络与信息安全、嵌入式设备。
相关文章
推荐阅读

 发表评论

共有3000条评论 快来参与吧~