




免费预览已结束,剩余42页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 IGMPIGMP SnoopingSnooping 组播协议开发组播协议开发 摘摘 要要 随着网络技术的发展,传统的 Internet 点对点传输的单播方式面对大量的信息交互传输 已经显得力不从心。组播技术则正是为解决此类问题应运而生的。目前以太网交换机等二层 网络设备在构建网络时己得到越来越广泛的应用,在以太网二层上实现组播已显得十分必要。 本文主要探讨在以太网二层上的一种组播协议:组播侦听协议1。 本文首先分析了组播技术和以太网设备的发展形势和用户需求,介绍了国内外几种组播 技术的特点,强调在以太网二层上实现组播技术的必要性;然后,详细讨论了二层设备上组播 侦听协议的实现技术,并对所实现的组播控制功能提出了自己的测试方法,给出了几种测试 实例;最后,通过阐述当前以太网二层的组播技术实现的方法和动向,为今后在以太网二层 上组播技术的进一步完善和发展给与启示。 本文设计实现的组播侦听协议代码量很小,与底层协议平台的结合度也非常小,此外还 具有很强的可伸缩性,并提供了方便的配置接口。因此,本实现不仅适用于而二层网络设备, 而且可以非常轻易的移植到其它更高级的网络设备如三层交换机。测试的结果证明了软件实 现的正确性和完整性。 关键词:关键词:因特网组管理协议 因特网组管理协议监听 组播; 2 3 Abstract With the development of Network technology, Conventional unicast of point to point on internet has not enough capability to support the exchange of information. The technology multicast just can resolve these problems. Ethernet switches have been used widely in constructing networks now. And it is very necessary to realize multicast on Ethernet 2 layer. In this paper, the multicast protocol (IGMP Snooping) on Ethernet 2 layer is discussed. The paper firstly describes the development position and the users requirement of the multicast and the Ethernet devices, introduces several foreign multicast technologies, and emphasizes the necessity of Implementing the multicast to the Ethernet 2 layer. Secondly, it discusses how to carry out IGMP Snooping on the layer 2 devices in detail. And gives the testing method and several examples. Finally, Through deep analysis, it can gasp the current methods and directions of realization multicast on Ethernet 2 layer devices,and give some inspire for more consummation for technology of multicast on Ethernet 2 layer. The IGMP Snooping of this design,its code size is little, and also has the features of little coupling with the lower protocol flat, good scalability,and convenient configuration interface. So, it applies not only the 2 layer network devices, but also can be porting to other network devices,eg.Layer3 switch easily. The result of the testing proves its correctness and integrity. Key words: Internet Group Management Protocol IGMP Snooping Multicast 4 5 目录目录 第一章 引论10 1.1 网络组播技术的需求与发展.10 1.2 国内外同类产品综述11 1.3 本文的主要工作12 第二章 IP 组播技术.13 2.1 组播概述.13 2.2 组播地址.13 2.2.1 IP D 类地址13 2.2.2 组播地址分配14 2.3.3 组播 MAC 地址14 2.3 IGMP 协议简介14 2.3.1 IGMP 报文14 2.3.2 IGMPv3 的源过滤机制16 2.4 IGMP Snooping 简介.16 2.4.1 IGMP Snooping 的含义16 2.4.2 IGMP Snooping 的作用17 第三章 IGMP Snooping 的总体设计描述.19 3.1 开发环境说明.19 3.2 IGMP Snooping 在网络协议栈中的位置.19 3.3 IGMP Snooping 的实现原理.19 3.4 IGMP Snooping 的总体模块设计.20 3.5 接口说明20 3.5.1 用户接口.20 3.5.2 外部接口.20 3.6 模块的运行视图20 3.6.1 数据报判断和处理模块流程21 3.6.2 数据转发模块和数据结构操作模块流程21 3.7 IGMP 报文和 IGMP 定时器设计.21 3.7.1 IGMP 报文22 6 3.7.2 IGMP 定时器22 第四章 IGMP Snooping 的详细设计描述23 4.1 组播转发链表的实现.23 4.2 IGMP Snooping 处理数据包的流程.24 4.3 对 IGMP 报文的处理.25 4.3.1 对 IGMP 组成员关系查询报文的处理25 4.3.2 对 IGMP 组成员离开报告的处理25 4.3.3 对 IGMP 第一版本成员关系报告的处理25 4.3.4 对 IGMP 第二版本成员关系报告的处理25 4.3.5 对 IGMP 第三版本成员关系报告的处理25 4.4 对组播转发链表的操作27 4.4.1 查找一个组播转发项27 4.4.2 更新转发项的时间戳28 4.4.3 增加一个组播转发项28 4.4.4 删除一个组播转发项28 4.5 定时器的实现.28 4.6 各模块中接口函数的实现.29 4.6.1 网桥转发数据包模块详细设计说明29 4.6.2 网桥组播转发链表操作详细设计说明32 4.6.3 数据报判断和处理详细设计说明36 第五章 功能测试的方法38 5.1 测试目的.38 5.2 测试环境和测试拓扑图.38 5.3 测试过程及结果.38 5.3.1 报文处理和组播数据转发功能的测试38 5.3.2 定时器功能的测试40 5.4 测试小结.40 第六章 结论42 致谢语43 参考文献44 附 录45 7 Contents Chapter 1 Model-based Diagnosis.9 1.1 Multicast network technology needs and development.9 1.2 Summary of similar products at home and abroad 10 1.3 The main work of this paper11 Chapter 2 IP Mutilcast Technology.12 2.1 Multicast summarize12 2.2 Multicast Address 12 2.2.1 IP Address of kind D12 2.2.2 Multicast Address Distribution13 2.3.3 Multicast MAC Address 13 2.3 IGMP Introduction.13 2.3.1 IGMP Report13 2.3.2 IGMPv3 source filtering mechanisms15 2.4 IGMP Snooping Introduction 15 2.4.1 The meaning of IGMP Snooping.15 2.4.2 The effect of IGMP Snooping16 Chapter 3 Describes the overall design IGMP Snooping 18 3.1 Development environment Note18 3.2 IGMP Snooping in the network protocol stack in the position18 3.3 IGMP Snooping the principle of achieving.18 3.4 IGMP Snooping the overall modular design .19 3.5 interface Note.19 3.5.1 user interface19 3.5.2 external interfaces 19 3.6 The operation of Module view.19 3.6.1 data reported judgement and processing module processes.20 3.6.2 modules and data transmitted data structure operation module processes.20 3.7 IGMP Report Design and IGMP timer20 8 3.7.1 IGMP Report21 3.7.2 IGMP timer 21 Chapter 4 IGMP Snooping describe the detailed design.22 4.1 Multicast forwarding the chain to achieve.22 4.2 The data process of IGMP Snooping.23 4.3 IGMP report processing.24 4.3.1 the handling of IGMP_HOST_MEMBERSHIP_QUERY 24 4.3.2 the handling of IGMP_HOST_LEAVE_MESSAGE 24 4.3.3 the handling of IGMPV1_HOST_MEMBERSHIP_REPORT24 4.3.4 the handling of IGMPV2_HOST_MEMBERSHIP_REPORT24 4.3.5 the handling of IGMPV3_HOST_MEMBERSHIP_REPORT24 4.4 Multicast forwarding chain operations 26 4.4.1 find a multicast forwarding entry.26 4.4.2 update forward entry of the timestamp 27 4.4.3 add a multicast forwarding entry27 4.4.4 delete a multicast forwarding entry27 4.5 Timer to achieve 27 4.6 Module interfaces Function of the realization.28 4.6.1 Bridge transmitted data packets module detailed design Note 28 4.6.2 Bridge Multicast forwarding chain operations that the detailed31 4.6.3 judgement and processing data on the detailed design note 35 Chapter 5 Functional test methods.37 5.1 The purpose of testing37 5.2 Test environment and test topology.37 5.3 Testing process and results 37 5.3.1 multicast report processing and data forwarding test.37 5.3.2 timer function tests.39 5.4 Summary test .39 Chapter 6 Conclusion.41 Acknowledgement .42 References43 Supplement 44 9 第一章第一章 引论引论 1.11.1 网络组播技术的需求与发展网络组播技术的需求与发展 近年来,随着网络技术的发展,使得各种单一媒体相继成为网络传输中的数据,进而各 种媒体的融合使得网络多媒体运用层出不穷。目前,在Internet 上产生了许多新的应用,其 中不少是高带宽的多媒体应用,譬如网络视频会议(可视化IP 电话会议系统) 、网络音频 视频广播、多媒体远程教育、远程会诊,而传统网络最初是为数据传输而设计的,是典型的 点点通信模式,是为保证数据可靠传输而设计的,所用的传输协议多为点到点的协议。其所 具有的特点将增加网络发送负载,带来网络延时。这就带来了带宽的急剧消耗和网络拥挤问 题。为了缓解网络瓶颈,人们提出各种方案:增加互连带宽,改变网络流量结构,1P 组播 技术等等,其中,IP 组播技术有其独特的优越性在组播网络中,即使用户数量成倍增 长,主干带宽也不需要随之增加2。 图图 1.1 组播网络模型组播网络模型 组播技术可形象的描述如下: 假设一个企业分布于各地的子公司(两个以上)之间需要通过Internet 进行实时的交换 10 信息(数据,声音,图像) ,他们的计算机可能不属于同一物理网络,甚至不属于同一自 治系统,这种通信的特点是“多点”式的。子公司发出的数据希望其他子公司都能收到, 而总部发出的指示全体子公司都应收到。这种多点通信方式为组内广播,即组播技术,也 称多播技术,多目网关技术。组播技术是TCP / IP 传送方式的一种。TCP / IP 传送方式有 三种:单播,广播,组播。 单播 ( Unicast)传输:在发送者和每一接收者之间需要单独的数据信道。如果一台主机同 时给很少量的接收者传输数据,一般没有什么问题。但如果有大量主机希望获得数据包的同 一份拷贝时却很难实现。这将导致发送者负担沉重、延迟长、网络拥塞,为保证一定的服务 质量需增加硬件和带宽。 组播 (Multicast)传输:它提高了数据传送效率。减少了主干网上出现拥塞的可能性。组 播组中的主机可以是在同一个物理网络, 也可以来自不同的物理网络(如果有组播路由器的 支持)。 广播 (Broadcast)传输:是指在IP子网内广播数据包,所有在子网内部的主机都将收到这 些数据包。广播意味着网络向子网主机都投递一份数据包,不论这些主机是否乐于接收该数 据包。然而广播的使用范围非常小, 只在本地子网内有效,因为路由器会封锁广播通信。 广播传输增加非接收者的开销。 随着Internet的飞速发展,利用Internet进行协作开发的项目越来越多。对某些应用而言, 如分布式数据库开发,一个开发工作组有很多人需在不同的地点协作并经常交换情况。在组 的规模比较小的情况下,只需点对点交换信息即可。如果组的规模比较大,点对点交换信息 不管对网络还是对信息发送者,都是一种负担,代价昂贵。有时虽可用广播的方式进行处理, 但如果在一个上百万节点的网络上向数千台主机进行广播是很低效的甚至是不大可能的。一 则绝大部分机器对此不感兴趣,造成信息垃圾。更糟糕的是,部分主机虽需要此信息但可能 被误认为对此信息不感兴趣而收不到此项信息。因此,我们需要一种办法使本身规模较大而 相对互连网又较小的工作组能相互方便、快捷地传递信息。为此,我们引进了IP组播的概念。 1.21.2 国内外同类产品综述国内外同类产品综述 众多网络设备供应商看到了 Internet 组播的迫切性和潜力,纷纷推出了自己的带有组播 功能的以太网交换设备。其中较有影响力的几乎都是国外的产品。如 CISCO 公司 Catalyst 系列交换机和 3Com 公司的以太网交换设备。这些公司产品实现的组播的技术不尽相同。其 11 中主要的技术除了 IGMP Snooping 外,GMRP 和 CGMP 也能够在二层实现多播,IGMP Snooping 和 GMRP 是标准的协议,而 CGMP 则是 CISCO 私有的协议。IGMP Snooping 由于 其实现的简单性,已越来越多的被交换机制造商所采用。并且它能很好的兼容当前的硬件版 本。因为目前大多数主机配备的网卡和绝大多数路由器设备都支持 IGMP 协议,所以不存在 硬件版本的升级问题,可以减少以太网交换机的部分制造成本。由于没有统一的国际规范, 通过灵活的设计思路,可以很好的达到以太网交换机上实现组播的功能2。 1.31.3 本文的主要工作本文的主要工作 本文主要研究内容为如何在交换式以太网中实现基于 IGMP Snooping 的二层组播协议。 具体解决了如下的内容: IGMP Snooping 的基本数据类型; IGMP Snooping 的实现(包括:定时器超时的处理、收到报文的处理): 对 IGMP 各版本的兼容性问题。 12 第二章第二章 IPIP 组播技术组播技术 2.12.1 组播概述组播概述 传统因特网的大部分应用都是基于点到点的单播传输和点到多点的广播传输,但是近年 来,随着网络技木飞速发展,网络带宽的不断增加,许多新的多媒体应用开始涌现,例如音 频、视频会议,视频点播等等,这些应用的基础就是IP组播技术。IP 组播技术虽然己经出 现了很长时间,但这仅仅是IP组播时代的开始,并且可以肯定IP组播是从www技术推广后出 现的最激动人心的网络技术之一。随着骨干网带宽的增加,因特网视频音频的广泛应用成为 可能。随着小区网络中视/音频应用的不断丰富,以及种种依赖于组播技术才能实现的应用 的出现,越来越多的设备供应商在其产品中增加了对组播技术的支持。 IP组播是利用一种协议将IP数据包从一个源传送到多个目的地,将信息的拷贝发送到一 组地址,到达所有想要接收它的接收者处。IP组播是将IP数据包“尽最大努力”传输到一个 构成组播群组的主机集合,群组的各个成员可以分布于各个独立的物理网络上。IP组播群组 中成员的关系是动态的,主机可以随时加入和退出群组,群组的成员关系决定了主机是否接 收送给该群组的组播数据包,不是某群组的成员主机也能向该群组发送组播数据包。 相对于单播和广播,IP组播能够有效地节省网络带宽和资源,管理网络的增容和控制 开销,大大减轻发送服务器的负荷,从而高性能地发送信息。另外,组播传送的信息能同时 到达用户端,时延小,且网络中的服务器不需要知道每个客户机的地址。所有的接收者使用 一个网络组播地址,可实现匿名服务,并且IP组播具有可升级性,与新的IP业务能相兼容3。 2.22.2 组播地址组播地址 不像单播IP地唯一地识别单个IP主机,组播1P地址指定一任意的IP主机组,其IP主机为 己经加入组并希望接收发往该组的信息的客户端。 .1 IPIP D D 类地址类地址 IANA已经把旧的D类地址空间分配给1P组播地址。该空间的地址用二进制表示并且第 一个八位数的前4位川1110表示,如下所示。 D 类 地 址: 13 1110xxxx xxxxxxxx xxxxxxxx xxxxxxxx 因此,IP组播地址的范围为:-554。 .2 组播地址分配组播地址分配 IANA控制着IP组播地址的分配。IANA倾向于为特定网络协议的使用确定单独的IP组 播地址。整个因特网必须以动态的、合作的方式共享剩余的还没有被分配的IP组播地址段。 在此情形下,在需要时可动态地分配或者租用组播地址当不再使用时释放该地址。 IANA己为组播地址分配划分了3个地址段: 2 24 .0.0 .0-55,用于局域网段的网络协议。 2 24 .0. 1.0-55,用于全球范围的网络协议或网络应用。 2 39 .0. 0.055,作为私人组播领域的管理权限地址4。 .3 组播组播 MACMAC 地址地址 以太网而言,就是地址映射问题,为了和IP组播体系相结合,数据链路层首先要解决的 就是地址映射问题。以太网需要将D类地址映射为MAC地址,映射规则是将组播IP地址的最 后23位复制到专门用于组播的MAC址:01-00-5E-00-00-00的最后23位。 IP组播地址中的高9位不参与映射,其中D类地址最高的4位始终为1110 所以实际只要5 位不参与映射,这带来一个问题,有32个IP组播地址被映射到了一个以太网组播地址,地址 的映射不存在唯一性。因此需要在设计组播应用时,尽量避免在同一个局域网内采用可能产 生冲突的组播IP地址4。 2.3 IGMP 协议简介协议简介 IGMP是Internet Group Management Protocol的缩写,即Internet组管理协议(其介绍可参考 rfc1122,rfc2236,rfc3376),它的功能是在三层实现多播,路由器或三层交换机通过与主机之 间进行IGMP报文交换动态地在路由器或三层交换机上建立IP多播地址表,这样多播流在三 层就只向IP多播成员转发了。 2.3.1 IGMP 报文报文 IGMP主要有三种报文类型,如下所示: 14 IGMP Query: 此报文由路由器发出,用于查询与路由器相连的网络中主机加入的组播 组的情况; IGMP Report: 由主机发出,当主机想主动加入某一多播组或对路由器的查询给予响应 是产生此种报文,目前支持IGMP v1,IGMP v2和IGMPv3三种报告报文; IGMP Leave: 由主机发出,当主机想离开某一多播组时产生此种报文,此报文特属于 IGMPv2。 各版本报文格式如下图2.1至图2.4所示5: 图图 2.1 IGMPv1 报文报文 图图 2.2 IGMPv2 报文报文 图图 2.3 IGMPv3 报文报文 15 图图 2.4 IGMPv1 报文报文 .2 IGMPv3IGMPv3 的源过滤机制的源过滤机制 IGMPv3中增加了对组播数据源进行过滤的机制,所谓源过滤,就是主机可以选择性的 接收或拒绝它所加入的某个组播组中来自某些特定的源的组播数据。运行IGMPv3的主机成 员都实现以下的两种过滤模式中的一种。 INCLUDE:在INCLUDE模式下,只有来自某些指定的源地址的并发往一个特定的组播 地址的数据报才会被主机接收。 EXCLUDE:在 EXCLUDE 模式下,来自某些指定的源地址,并发往一个特定的组播地 址的数据报会被该主机拒绝12。 2.42.4 IGMPIGMP SnoopingSnooping 简介简介 目前以太网交换机在组网时己得到越来越广泛的应用。在网络运行环境中,当路由器将 组播报文转发下来之后,处于接入层边缘的以太网交换机负责将组播报文转发给组播用户。 传统的以太网交换机是将组播报文广播出去,这样不但浪费了大量的网络带宽,引起广播风 暴,而且也影响了正常的业务。所以迫切需要在以太网交换机上实现组播,最简单的方法就 是通过手工配置,但这种方式不灵活,因为组播是动态变化的,所以通过手工配置是不能适 应这种变化的。这就需要以太网交换机能根据组播用户的动态加入和离开组播组而动态地维 护组播组。IGMP Snooping 正好可以解决上述问题。下面通过分析 IGMP Snooping,对其原 理进行了的阐述,更主要的是介绍了一种较为高效的实现方法6。 16 .1 IGMPIGMP SnoopingSnooping 的含义的含义 IGMP Snooping即IGMP侦听,其主要作用是在交换机上完成二层组播的动态注册。它使 用的是IGMP报文,IGMP报文格式可以在RFC1122(IGMP版本1),RFC2236 (IGMP版本2)和 RFC3376 (IGMP版本3)中找到。在较早的组网环境中,并没有以太网交换机的参与,路由器 一般直接和主机相连,它们之间通过标准的IGMP协议来实现组播功能。而目前IGMP Snooping则不同,它的实现需要主机,交换机和路由器的共同参与,其运行环境如下图2.5所 示: 路由器,运行 IGMP协议 以太网交换机,运行 IGMP Snooping协议 IGMP报文 IGMP报文 PC,运行 IGMP 协议 IGMP报文 IGMP报文 图图 2.5 路由器,交换机,路由器,交换机,PC 与与 IGMP Snooping 的关系的关系 通过 IGMP Snooping实现二层组播时需要在主机和路由器上实现IGMP,交换机只是通 过侦听主机和路由器传送的不同类型的工GMP报文来动态维护二层组播组,并且在本交换 机上的组播注册一般不会传播到其它交换机上。IGMP Snooping的实现和标准的IGMP协议的 实现有相似之处,但IGMP Snooping其实并没有统一的国际标准,所以设计实现起来可以更 加灵活高效。这一点,可以在后面的定时器超时处理和接收报文处理中得到体现。 由于 IGMP Snooping使用的是IP组播地址,所以要将IP组播地址映射到MAC组播地址, 同时还存在多个IP组播地址对应一个MAC组播地址的情况。IGMP Snooping除了维护一般的 组成员端口外,还要维护路由器端口。这里的路由器端口指的是交换机上和路由器相连的端 口。 .2 IGMPIGMP SnoopingSnooping 的作用的作用 没有运行 IGMP Snooping时,组播数据将在二层广播,这样,不需要接收这些组播数据 17 的PC也会收到这些组播信息。一方面对网络带宽的利用造成浪费,另一方面不需接收组播 信息的PC机增加了额外的负担7。如下图2.6所示: 非组播组成员非组播组成员 组播路由器 二层以太网交换机 组播数据 组播数据 组播数据 组播组成员 组播数据 组播数据 组播数据 图图 2.6 未开启未开启 IGMP Snooping 时的组播转发时的组播转发 引入IGMP Snooping后,Snooping能在与交换机相连的所有主机中找出属于该组播组的 主机,并使组播数据只发往加入该组播组的主机,如图2.7所示: 非组播组成员非组播组成员 组播路由器 二层以太网交换机 组播数据 组播组成员 组播数据 组播数据 图图 2.7 开启开启 IGMP Snooping 时的组播转发时的组播转发 18 第三章第三章 IGMPIGMP SnoopingSnooping 的总体设计描述的总体设计描述 3.13.1 开发环境说明开发环境说明 本模块的开发环境是在 Linux 操作系统下,主要使用的工具有 vim 和 Broadcom Router 编译器 3.23.2 IGMPIGMP SnoopingSnooping 在网络协议栈中的位置在网络协议栈中的位置 IGMP Snooping 运行于二层网络设备的操作系统内核的中,它在 TCP/IP 协议栈的关系 如下图 3.1 所示: IGMP Snooping在在协协议议栈栈中中的的位位置置 应应用用层层 传传输输层层 数数据据链链路路层层 网网络络层层 物物理理层层 应应用用层层 传传输输层层 数数据据链链路路层层 网网络络层层 物物理理层层 IGMP SnoopingIGMP Snooping 图图 3.1 IGMP Snooping 在协议栈中的位置在协议栈中的位置 3.33.3 IGMPIGMP SnoopingSnooping 的实现原理的实现原理 IGMP Snooping 将与交换机相连的每台主机和他们所属的组播组映射为一个组播转 发链表,在收到组播数据后,根据组播地址进行查表就可以知道有哪些主机属于这个组 播组8。其结构如下图 3.2 所示: 19 主机1 组播组2 端口1 主机2 组播组1 端口2 主机2 组播组2 端口2 主机3 组播组4 端口3 主机1 组播组1 端口1 主机3 组播组3 端口3 图图 3.2 转发链表的结构转发链表的结构 在找到该主机后,就将组播数据发往该主机在交换机上所连接的端口。 3.43.4 IGMPIGMP SnoopingSnooping 的总体模块设计的总体模块设计 IGMP Snooping 分为三个模块: 1、数据报判断和处理模块:负责对接收到的数据报进行判断,根据数据报的种类对数据进 行转发或者对转发链表进行修改。 2、转发函数模块:提供数据转发时需要的函数。 3、转发链表操作模块:提供修改转发链表结构时需要的函数以及定时器定义函数。 三个模块之间的关系如下图 3.3: 数据报判断和处理 模块 转发函数模块转发链表操作模块 调用调用 图图 3.3 三个模块间的关系三个模块间的关系 3.53.5 接口说明接口说明 .1 用户接口用户接口 本模块在内核内自动运行,无需用户干涉。 20 .2 外部接口外部接口 发送接口:模块调用 dev_queue_xmit()函数最终会调用 dev-hard_start_xmit ()函数把数 据发送出去. 接收接口:模块调用网桥接受数据的函数 br_handle_frame()作为数据的入口,最后在 br_handle_frame_finish()函数中实现功能。 3.63.6 模块的运行视图模块的运行视图 如图 3.4 所示: br_handle_framebr_handle_frame_finish br_dev_queue_push _xmit 数据报判断和处理 模块 dev_queue_xmit 转发函数模块转发链表操作模块 调用调用 图图 3.4 三个模块间的关系三个模块间的关系 3.6.1 数据报判断和处理模块流程数据报判断和处理模块流程 流程如下图 3.5 所示: 21 是否组播数据 帧 查找网桥CAM表 否 是 找到对应的项 进行转发 对数据进行广播 是 否 执行主模块 进行组播转发 转发成功 对数据进行广播 否 开始 结束是 结束 图图 3.5 数据报判断和处理模块流程数据报判断和处理模块流程 3.6.2 数据转发模块和数据结构操作模块流程数据转发模块和数据结构操作模块流程 这两个模块并不具有独立的流程,而是为主模块提供一系列的函数。在主模块执行的过程 中,不断调用这两个模块所提供的函数对数据进行转发和对数据结构进行修改 3.73.7 IGMPIGMP 报文和报文和 IGMPIGMP 定时器设计定时器设计 IGMP Snooping的运行和标准IGMP协议一样,运行在一个虚拟状态机上。虚拟状态的运 行通常需要以下两种事件的驱动:定时器超时、收到报文。对于每一 种事件的发生,都会触 发IGMP Snooping各自产生相应的处理步骤。定时器超时和收发报文相互触发,形成一个有 机整体。 .1 IGMPIGMP 报文报文 将 IGMP 报文分为以下五种: 1、IGMP_HOST_MEMBERSHIP_QUERY IGMP 组成员关系查询报告 2、IGMP_HOST_LEAVE_MESSAGE IGMP 组成员离开报告。 3、IGMP_HOST_MEMBERSHIP_REPORT IGMP 第一版本成员关系报告 4、IGMPV2_HOST_MEMBERSHIP_REPORT IGMP 第二版本成员关系报告 5、IGMPV3_HOST_MEMBERSHIP_REPORT IGMP 第三版本成员关系报告 22 .2 IGMPIGMP 定时器定时器 由于网络中或主机会发生某些突发事件,如主机异常关闭,网络异常中断等,会造 成网络中某台主机在没有任何通知的情况下离开某个组播组,如果没有定时器,该主机 会在链表中一直存在,这显然是不合适的。因此,我们为组播组设置一个定时器,来处 理链表中很久都没有发生响应事件的主机。 定时器有一个超时时间 T 和一个超时后触发事件 E。当定时器启动后,经过了 T 时 间后,就执行事件 E。 我们为每个主机都设置一个生存时间(代表这台主机在链表中能存在了多久) 。组播 组的定时器超时后,检查该组每台主机的在链表中存在的时间,如果某台主机在链表中 存在的时间已经大于它的生存时间,则认为该主机已经离开了这个组播组。于是将该主 机从转发链表中删除。 组播组的定时器的启动是在该组的第一个成员加入该组播组时。主机生存时间的更 新发生在收到 IGMP 组成员关系报告报文时,若收到报告往链表中加入该成员时时,该 组成员已经存在于链表中,说明该成员在它的生存时间内做出了响应,则应该延长该主 机的生存时间10。 23 第四章第四章 IGMP Snooping 的详细设计描述的详细设计描述 4.14.1 组播转发链表的实现组播转发链表的实现 网桥组播转发链表为一个循环双向链表结构,利用 list_head 结构体将每个组播转发项构 成链表,并在网桥结构中加入 mc_list 变量来确定该链表的头指针。处理组播数据时,先遍 历查询链表找到应的组播转发项,之后将组播数据朝该项指定的端口进行转发或者对组播转 发链表进行修改。设计链表时将每一个转发项都当作一个 IGMPv3 成员。其结构如图 4.1: net_bridge_mc_fdb_entry net_bridge mc_list 图图 4.1 组播转发链表的实现组播转发链表的实现 其中每个 struct net_bridge_mc_fdb_entry 为: struct net_bridge_mc_fdb_entry struct net_bridge_port*dst; /转发时发送数据的端口 mac_addraddr; /组播组 mac 地址 mac_addrhost; /源 mac 地址 struct net_bridge_mc_src_entry src_entry; /源过滤项 unsigned charis_local; /是否本地 unsigned charis_static; /是否静态 unsigned longtstamp; /时间戳 24 struct list_head list; /组播转发链表 ; 其中结构体 struct net_bridge_mc_src_entry 为: struct net_bridge_mc_src_entry struct in_addrsrc; /源过滤地址 unsigned longtstamp; /时间戳 intfilt_mode; /过滤模式 ; 4.24.2 IGMPIGMP SnoopingSnooping 处理数据包的流程处理数据包的流程 流程如图 4.2: 收到数据包 是否组播数据 帧 查找网桥CAM表 将数据传给上层协 议 网卡是否为混 杂模式? 是 否 否是 找到对应的项 进行转发 对数据进行广播 是 否 进行组播转发 转发成功 对数据进行广播 否 开始 结束是 结束 图图 4.2 处理数据包的流程处理数据包的流程 对组播转发的流程,如图 4.3 是否igmp报文进行报文处理 转发组播数据 否 是开始收到组播数据 返回转发失败否 结束返回转发成功 转发成功 是 是 图图 4.3 组播转发的流程组播转发的流程 25 4.34.3 对对 IGMPIGMP 报文的处理报文的处理 .1 对对 IGMPIGMP 组成员关系查询报文的处理组成员关系查询报文的处理 在判断收到的报文为对 IGMP 组成员关系查询报文后,采用广播的方式将报文转发出去。 .2 对对 IGMPIGMP 组成员离开报告的处理组成员离开报告的处理 对于 IGMP 组成员离开报告,先取出报文中所报告的组播 ip 地址,将其转换为 mac 地 址之后遍历查询组播转发链表找到该项,再将其从链表中删除。之后对报文进行广播。 .3 对对 IGMPIGMP 第一版本成员关系报告的处理第一版本成员关系报告的处理 对 IGMP 第一版本成员关系报告处理时,先将其源过滤模式指定为 EXCLUDE,源过滤 地址指定为 0,再将报告的成员加入组播转发链表。之后对报文进行广播。 .4 对对 IGMPIGMP 第二版本成员关系报告的处理第二版本成员关系报告的处理 在对 IGMP 第二版本成员关系报告进行处理时,先将其源过滤模式解释为 EXCLUDE, 源过滤地址解释为 0,再将报告的成员加入组播转发链表。之后对报文进行广播。 .5 对对 IGMPIGMP 第三版本成员关系报告的处理第三版本成员关系报告的处理 在 IGMP 第三版本成员关系报告报文中, Record Type(组记录类型)字段表示报文所 传达的组成员源过滤模式信息,分为以下几种 : MODE_IS_INCLUDE-表明主机对于某一指定组播地址的过滤模式为 INCLUDE。 。 MODE_IS_EXCLUDE-表明主机对于某一指定组播地址的过滤模式为 EXCLUDE。 CHANGE_TO_INCLUDE_MODE,表明主机对于某一指定的组播地址的过滤模式改变到 INCLUDE。 CHANGE_TO_EXCLUDE_MODE,表明主机对于某一指定的组播地址的过滤模式改变到 EXCLUDE。 ALLOW_NEW_SOURCE,表明主机对于某一指定的组播地址,允许接收来自某些源地 址的信息。 BLOCK_OLD_SOURCE,表明主机对于某一指定的组播地址,不允许接收来自某些源地 址的信息。 26 在处理 IGMP 第三版本成员关系报告报文时,对于不同的 Record Type,使用一个嵌套 循环,外层循环为 Group Record,内层循环为每个 Group Record 所带的 Source Address。对 于每个 Group Record 中的各个 Source Address,在网桥组播转发链表中查找相对应的项,对 组播转发链表做出相应的处理,处理后对报文进行广播。 对于 INCLUDE 模式的处理,如图 4.4: 开始 取第一个组记录 取该组记录的第一 个源地址 对网桥组播转发链 表进行查找 找到匹配项且 该项过滤模式 为EXCLUDE 修改过滤模式为 INCLUDE,更新 时间戳 将报告的成员加入 向链表中 否 是 组纪录的源地 址数为0? 否 找到?是寻找匹配项删除该项是 源地址已取 完? 组记录已取 完? 是 结束 是 否取下一个源地址 取下一个组记录否 结束 图图 4.4 INCLUDE 模式的处理模式的处理 对于 EXCLUDE 模式的处理,如图 4.5: 27 开始 取第一个组记录 取该组记录的第一 个源地址 对网桥组播转发链 表进行查找 找到匹配项且 该项过滤模式 为INCLUDE 修改过滤模式为 EXCLUDE,更新 时间戳 将报告的成员加入 向链表中 否 是 组纪录的源地 址数为0? 否 是 将报告的成员加入 向链表中 源地址已取 完? 组记录已取 完? 是 结束 是 否取下一个源地址 取下一个组记录否 结束 图图 4.5 EXCLUDE 模式的处理模式的处理 4.44.4 对组播转发链表的操作对组播转发链表的操作 收到 IGMP 报文时,模块根据收到的信息对组播转发链表进行修改。主要的修改分 为: 1、查找一个组播转发项 2、更新转发项的时间戳 3、增加一个组播转发项 4、删除一个组播转发项 .1 查找一个组播转发项查找一个组播转发项 查找组播转发项时,遍历网桥的组播转发链表,当某个转发项的端口、组播 mac 地 址,源 mac 地址,源过滤地址,过滤模式这五个变量与数据包相应的变量相等时,则该 项为所要查找的转发项。 28 .2 更新转发项的时间戳更新转发项的时间戳 更新时间戳操作发生在接受到组成员报告报文之后,在添加该成员之前,模块先检 查该项是否已经存在,若存在,则执行更新时间戳操作。 net_bridge_mc_fdb_entry - tstamp = jiffies + QUERY_TIMEOUT*HZ; .3 增加一个组播转发项增加一个组播转发项 增加组播转发项时,先确定该项是否已经存在,若存在则更新该项的时间戳,若不 存在则新建一个组播转发项结构体,初始化端口、组播 mac 地址,源 mac 地址,源过滤 地址,过滤模式和时间戳这六个结构体变量,再将该项加入链表。 .4 删除一个组播转发项删除一个组播转发项 删除一个组播转发项时,先通过查找获得需删除的项,再将其从链表中删去。 4.54.5 定时器的实现定时器的实现 定时器的实现使用 Linux 的 API 中提供的 timer_list 结构,在网桥结构体中添加一 个 igmp_timer 定时器,该定时器的超时时间设为 jiffies + TIMER_CHECK_TIMEOUT*HZ 若该定时器超时,则检查该网桥组播转发链表的每一个转发项,若转发项的时间戳小于 系统当前时间 jiffies,则删除该项。 定时器的初始化开始于组播转发项的添加之时,当有一个新的项加入网桥组播转发 链表时,检查该网桥的 igmp_time
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国广电宜春市2025秋招网申填写模板含开放题范文
- 神农架林区中储粮2025秋招购销统计岗高频笔试题库含答案
- 国家能源张家口市2025秋招交通运输类面试追问及参考回答
- 中国移动昆明市2025秋招笔试行测题库及答案技能类
- 公路定额类考试题及答案
- 甘南藏族自治州中石油2025秋招笔试综合知识专练题库及答案
- 大唐电力临汾市2025秋招面试专业追问及参考计算机与信息岗位
- 中国移动广安市2025秋招笔试行测题库及答案综合管理类
- 中国广电济源市2025秋招网络优化与维护类专业追问清单及参考回答
- 中国联通儋州市2025秋招笔试行测经典题及答案
- 小小科学家体验活动-物理三年级(物理)试题含答案
- 多肽药物分析方法开发研究
- 花园小学少先队知识竞赛题
- 2023-2024学年上海市杨浦区六年级上学期期中考试语文试卷含详解
- 农行超级柜台业务知识考试题库(含答案)
- AMC数学竞赛真题答案2023
- 【华帝厨电应收账款现状及其风险分析(论文10000字)】
- 新标准大学英语(第三版)综合教程3(智慧版)课件 Unit6 Path to prosperity
- 部编版语文七年级上册第1课《春》阅读理解题(含解析)
- 短波通信系统和超短波通信系统
- 野外地质调查安全手册
评论
0/150
提交评论