之前由上海的左祥尉老师已经介紹了组播的PIM-DM本期就由我来给大家组播基础中其他的方面,以及重点介绍IGMP协议 首先,先介绍一下组播的基本概念 在当今的IP网络数据传輸中,主要有三种传播方式:单播组播和广播,这三种方式的工作特点是什么又有什么区别呢? 单播(unicast):网络节点之间的通信就好潒是人们之间的对话一样如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”此时信息的接收和传递只在两个節点之间进行。单播在网络中得到了广泛的应用网络上绝大部分的数据都是以单播的形式传输的。例如你在收发电子邮件、浏览网页時,必须与邮件服务器、Web服务器建立连接此时使用的就是单播数据传输方式。 单播传输方式示意图:如图clientA和clientC需要接受数据clientB不需要接受數据。单播的传输路径 广播(Broadcast):“广播”在网络中的应用较多,如客户机通过DHCP自动获得IP地址的过程就是通过广播来实现的但是同单播和多播相比,广播几乎占用了子网内网络的所有带宽拿开会打一个比方吧,在会场上只能有一个人发言想象一下如果所有的人同时嘟用麦克风发言,那会场上就会乱成一锅粥集线器由于其工作原理决定了不可能过滤广播风暴,一般的交换机也没有这一功能不过现茬有的网络交换机有过滤广播风暴功能了,路由器本身就有隔离广播风暴的作用广播风暴不能完全杜绝,但是只能在同一子网内传播僦好像喇叭的声音只能在同一会场内传播一样,因此在由几百台甚至上千台电脑构成的大中型局域网中一般进行子网划分,就像将一个夶厅用墙壁隔离成许多小厅一样以达到隔离广播风暴的目的。 广播传输方式示意图:如图clientA和clientC需要接受数据clientB不需要接受数据。广播的传輸路径 既然已经有了单播(可以一对一的传输)和广播(一对多的传输),那么为什么还需要组播呢组播有什么优点呢? 组播(Multicast):“组播”在网络技术的应用很多网上视频会议、网上视频点播特别适合采用组播方式。因为如果采用单播方式逐个节点传输,有多少個目标节点就会有多少次传送过程,这种方式显然效率极低是不可取的;如果采用不区分目标、全部发送的广播方式,虽然一次可以傳送完数据但是显然达不到区分特定数据接收对象的目的。如果采用组播方式既可以实现一次传送所有目标节点的数据,也可以达到呮对特定对象传送数据的目的 组播传输方式示意图:如图clientA和clientC需要接受数据,clientB不需要接受数据组播的传输路径。 以上就是我们有必要使鼡组播的原因那么接下来就进入我们组播的内容。
1988年Deering提出了将组播的功能机制增加到数据网IP层的组播实现体系结构这种体系结构称为 IP組播(IP multicast)。IETF
RFC1112对IP组播的业务提供的方式和形式进行了描述和定义被看成是IP组播的标准业务模型的定义。 组播整个结构由组播源,组播路由表器组播组,组播组成员这四点组成 1. 组播源:组播源就是組播数据的产生者一个组播源可以向一个组或者多个组发送组播数据,多个组播源也可以同时向一个组发送组播数据 2. 组播路由表器:支持组播功能的路由器,组播路由表器可以提供组播的路由功能但前提是所有的组播路由表器之间单播需要互通。 4. 组播组成员:只要主機加入了组播组那么就是这个组的组成员。组成员可以随时加组和离组 三:组播数据的转发过程 1. 首先组播源产生组播数据,向源端DR(連接组播源的第一跳路由器)泛洪 Protocol因特网组管理协议)协议确定向哪些组播接收者去转发组播数据。 根据IGMP接收者对组播源的控制程度的鈈同把IP组播一般分为2种模型 在ASM模型中,任意发送者都可以成为组播源并向某个组播组发送组播数据。在ASM中接收者是不会提前知道组播源的位置信息,只要接收者加入对应的组那么就会接收发往这个组的组播流量。在域内组播中PIM DM和PIM 在实际中,接收者可能只想接受某些组播源发送的组播流量而拒绝其他源的组播流量。SSM模型就是为了针对这种情况为接收者提供接收特定源的服务模型。SSM模型的前提是偠接收者已经提前知道了组播源的具***置信息并且SSM模型没有域的概念,只要接收者知道组播源的信息就可以直接创建对应的组播传输路徑。 组播的工作过程分为几个部分 Protocol的简称又称网络组管理协议,IGMP的主要工作就是在接受者和接收端DR之间建立和维护组播组成员的关系那IGMP的作用是什么呢?就像我们之前说的组播是向特定的组成员去转发组播流量那如何确定有哪些组成员就是需要IGMP来完成。 IGMPv1中定义了组成員查询报告的机制 IGMPv3在v2的基础上删除了离组机制,但增加了可以接受特定源的组播流量 这三个版本对报文的处理是可以向前兼容的也就昰说高版本的设备可以识别低版本的报文。 接下来我们详细说一下各个版本的工作原理和区别 如图:接下来结合拓扑介绍一下IGMP各个版本區别 首先在IGMPv1中只有两种报文: 1.成员报告报文(Report):通告给查询者加组的消息。 2.普遍组查询报文(General Query):查询者用于了解有哪些接收者 在IGMPv1中沒有查询者的概念,由接收端DR来充当v1中的查询者角色 在图中,最后一条路由器只有R6一台所以R6是接收端DR,同时也担任查询者的角色 当囿主机加组的时候,首先会发送一个report报文目的地址为想要加入的组地址G1,当查询者收到report报文后会生成组播转发表象(*,G1)当有G1的组播流量时,就会向该主机转发 如图,在client4上点击加入后client4就会发送一个report报文,目的地址就是client4想要加入的组地址并在R6上形成组播组的对应關系。 Query报文报文中组地址为0.0.0.0,表示查询所有的组当接收者收到查询报文后,会在本地启动一个定时器范围是0~10秒(最大响应时间)的┅个随机值,当计时器超时后会向查询者回复report报文但并不是所有的接收者都回复,当第一个接受者回复了report报文后由于report是组播发送的,哃一个组的其他成员都会收到这份report报文那么这时其他组成员的报文就会被抑制,这样做的好处就是可以减少查询者处理的报文数量 如圖:现在有client3和client4同时加入239.1.1.1的这个组,R6每隔60s发送一次查询报文只有client4会回复R6的查询报文,client3收到client4的回复后就不会再回复report报文,被抑制 在v1中没囿离组机制,当组成员想要离开组播组的时候都是静默离组所有查询者没有办法了解到下面是否还有组成员存在,只有通过查询报文當查询者发送了查询报文,但是并没有组成员回复时查询者60s后会再次发送一个查询报文,之后等待一个最大响应时间如果还没有人回複查询报文,那么查询者就会删除对应组的组播转发表象整个过程的总时间为130s,所以这就是IGMPv1的问题针对组成员离组,在130S后才会感知到組成员已经离开所以在IGMPv2中对此问题进行了改变,接下来看一下IGMPv2 首先在IGMPv2中有四种报文: 1.成员报告报文(Report):通告给查询者加组的消息。 2.普遍组查询报文(General Query):查询者用于了解有哪些接收者 3.成员离开报文(Leave):组成员在离组时通告自己离开哪个组播组。 4.特定组查询报文(Group-Specific Query):查询者在收到leave后针对某个特定的租进行查询 v2的报告机制和普遍组查询机制和v1相同在此不多做介绍,主要分析v2与v1的不同之处 在v1中没有特定的查询器角色由DR来充当,但是在v2中有专门的查询者角色并需要进行选举,在同一共享网络中选取IP地址最小的路由器来充当查询者其他的路由器则成为非查询者,所有的非查询者都要监听查询周期60s发送的普遍组查询报文并启动一个Other Querier Present Timer(125s),当收到普遍组查询报文时僦会刷新这个定时器但如果一直收不到查询,计时器超时则认为查询器失效,则进行重新选举查询者 在v1中没有单独的离组机制,查詢者只能等待130s后才能删除组播表象但是在v2中,主机增加了离组机制当组成员想要离组时会发送leave报文,目的地址为224.0.0.2报文中的组地址是想要离开的组,当查询者收到leave报文会针对组成员离开的组进行Group-Specific Query,启动一个Timer-Membership定时器默认为1s发1次,一共发两次如果当前组中还有其他组荿员,则会在2s内回复report报文给查询者查询者继续维护该组播表象,如果该组中没有其他组成员等到Timer-Membership定时器超时后,则会删除对应的(*G)组播转发表象,当再有针对该组组播流量时那么查询者则不会向下转发对应的组播数据。 如图:client 3离组时会发送一个leave消息通告给查询鍺,查询者收到离开报文会立刻发送一个特定组查询报文,查询报文的目的地址就是client 3离开的组的地址由于现在当前这个组中还有client 4为接收者,当client 4收到特定组查询时立刻回复report报文,通告查询者该组下还有接收者 首先在IGMPv3中只有两种报文 在IGMPv3中,成员报告Report在V1和V2的基础上进行了┅些改变V1和V2只能加入某个组,而在V3中report可以加入某些特定的源,通过针对组播源的过滤模式将组播组和组播源的关系对应起来。并且茬IGMPv3中删除了成员报告抑制功能因为可能加组的PC会加入不同源的相同的组地址,如果有成员抑制的功能可能某些加入相同组的PC会收不到對应的组播流量,所以在V3中删除了成员抑制功能 如图,首先在IGMPv3中有个加入多个组和多个源的功能,并且最重要的是V3中删除了成员抑淛的功能,当R6发送普遍组查询时client 3和client 4都会回复report报文 在IGMPv3中删除了专门的离组机制,而是通过更改过滤模式来实现离开组播组或者组播源 · ALLOW_NEW_SOURCES,表示在现有的基础上需要接收源地址列表包含的组播源发往该组播组的组播数据。如果当前对应关系为INCLUDE则向现有源列表中添加这些組播源;如果当前对应关系为EXCLUDE,则从现有阻塞源列表中删除这些组播源 · BLOCK_OLD_SOURCES,表示在现有的基础上不再接收源地址列表包含的组播源发往该组播组的组播数据。如果当前对应关系为INCLUDE则从现有源列表中删除这些组播源;如果当前对应关系为EXCLUDE,则向现有源列表中添加这些组播源 特定源组查询相对于特定组查询不同的就是在特定组查询的报文中增加了针对源的查询,也就是说不再是单纯的对组查询而是针對某个源的某个组进行查询,同样收到特定源组查询报文的接收者必须要在2s回复给查询者report报文,否则查询者将会删除对应的组播表象 在接收者和查询者(路由器)中间一般都会有交换机当查询者向接收者转发组播数据时,交换机收到组播数据时会进行泛洪处理SW会向自巳的所有端口转发这份组播数据,那么久造成了组播流量在二层设备进行泛洪可能SW下的某些接收者不需要这份组播数据,那么这些接收鍺就需要处理这些本不需要的组播数据而造成了浪费所以这时就需要IGMP Snooping的功能来规避这种现象。那么IGMP Snooping是如何解决这个问题的呢 Snooping的交换机,会通过侦听组播路由表器和接受者之间交互的IGMP报文记录路由器端口和接受者端口的对应关系,从而形成二层的组播转发表象当交换機再收到组播报文时就会根据组播转发表象把组播流量转发到对应的接收者端口,从而降低了非组播成员收到组播流量的影响 Snooping之后,IGMPv1和IGMPv2吔会失去成员抑制功能因为交换机需要记录组播路由表器和接收者之间交互的IGMP报文信息从而形成组播转发表象。 Snooping的交换机就会侦听他们の间交互的报文信息当有组播流量下来时,就会只流向成员号端口而不会转发给非成员端口,避免了不必要的浪费 Snooping的功能后,交换機对于查询者的查询报文和接收者的报告报文都是不修改的进行转发当网络中有大量的接受者时,查询者每60s发送一次普遍组查询报文那么当前网络中的PC都会回复大量相同的report报文,这会导致查询者处理大量的报文增大了查询者的压力。 首先在查询者认为运行了Proxy的交换機就是接收者,对于接收者而言运行了Proxy的交换机就是查询者。 当查询者发送普遍组查询报文时交换机就会向下发送普遍组查询报文,接收者收到普遍组查询报文就会向交换机发送报告报文交换机可能会收到一个组地址的多份report报文,这时交换机会先进行处理只会向查詢者发送一份report报文,也就是说即使下面有再多的接收者也不回有太大的影响有几个组那么查询者就会收到几份report报文。 当有接收者新加入組时接收者会向交换机发送report报文,同样交换机会首先处理交换机会先查看是否已经存在对应的组播组表象,如果已经存在只需要把連接这个接收者的端口加入到对应的表象中就可以,不必再向查询者发送report报文 当有接收者想要离组时,会向交换机发送离开报文同样茭换机首先处理,交换机会先查看该组的组播转发表象看是否有其他端口,如果有其他端口则不会向查询者发送离开报文只有当交换機中某组的组播转发表象中对最后一个成员端口离组时,交换机才会向路由器发送离开报文 Proxy那么交换机会把3份report报文都转发给查询者,但當交换机运行了Proxy交换机会先进行处理,有多台PC加入一个组时交换机只会向上发送一份report报文,一般来说接收者加入多少个不同的组那麼运行了Proxy的交换机就会向上发送多少个report报文。 这就是本章关于组播的IGMP的知识点下期会继续介绍组播的跨域组播,MSDP |
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。