组播知识 - IGMP

https://zhuanlan.zhihu.com/p/258619129

组播初识

一、为什么要启用组播?

1.节省不必要的数据发送

2.需要发送相同的数据去往多个不同的接收者

3.减少带宽的占用

4.优化网络设备的处理进程

5. 由于接收方单播地址未知,导致无法进行数据封装

二、广播和组播的区别 (broadcast&multicast)

1.广播无法跨网段发送数据

2.广播没有路由表,组播有组播路由表

3.默认情况下广播数据无法穿越路由器

4.no dhcp service--关闭DHCP服务

5.组播数据转发可以穿越路由器,依靠ip Mroute(组播路由表)

6.广播数据接收者,必须依靠上层或应用才能判断该数据是否需要处理

7.组播数据接收者,通过三层地址即可判断该数据是否需要处理

8.组播通过in和out方向来实现防环,也就是说会校验源和目的,一旦发现不对,将丢弃数据

9. 广播无法实现防环

三、单播和组播的区别

1.单播数据转发去往多个不同的接收者时,数据源需要被多次复制然后发送,效率低下

2.组播数据转发,发送者只需要发送单一数据包就可以

3.单播数据准发会因为接收者数量的增加,导致链路带宽占用增加

4.组播数据转发,通常不会因为接收者的数量影响带宽的占用

四、组播转发的优缺点

优点:

1.提高了转发效率,降低了网络设备资源消耗

2.优化了执行能力,删除了网络中不必要的流量

3.分布式应用服务,提供尽可能多的多用户应用

缺点:

1.组播数都基于UDP,UDP的缺点组播几乎都存在

2.尽力而为的转发,不一定可靠

3.没有拥塞避免机制,没有类似于TCP的滑窗机制

4.有可能导致数据冲突

5.交互过程中没有排序的概念,无序交互,需要依靠上层应用解决

五、组播的应用类型

1.一对多:一个单一的主机发送到两个或者多个接收者

2.多对多:,比如视频会议,发送到组播组的任意数量的主机(主机也是属于这个组播组的,也就是说,发送者等于接收者)

3.多对一:所有接收的数据都来自于同一个发送者(同一个源),可以使用单播也可以使用组播

六、IP Multicast L2&L3地址

1.组播地址用D类地址来表示Group Address

2.D类地址不对应某一具体设备,而是需要接收相同数据的同一组设备

3.D类地址段范围224.0.0.0-239.255.255.255,一共有2的28次方个组地址

4.保留的组播地址段:224.0.0.0-224.0.0.255

5.239.0.0.0-239.255.255.255作为私网组播地址,可以被用户任意分配和使用

6.保留的组播地址段都不需要依靠组播路由表转发数据,去往这也组地址的数据包都被局限于本组播域内发送

七、常见的保留组播地址及用途

1.224.0.0.1-子网内所有设备

2.224.0.0.2-子网内所有路由器

3.224.0.0.4-子网内所有DVMRP

4.224.0.0.13-子网内所有PIMv2

5.224.0.0.5-224.0.0.6子网内所有运行OSPF的路由器

6.224.0.0.9-子网内运行RIPv2路由器

7.224.0.0.10-子网内所有运行EIGRP的路由器

八、L2 MAC Address

1.组播的L3地址实际十个虚拟地址,对应的是一个Group标识,因此L2MAC Address同样是一个虚拟的MAC地址

2.2层的MAC地址是如何与3层的IP地址进行映射的呢?

3.通过将MAC地址的前25位强行规定为0100.5E,而后23位对应IP地址的后23位,而组播IP地址的前4位均相同如:

IP地址:1110yyyy.yxxxxxxx.xxxxxxx.xxxxxxxx

MAC地址:00000001.00000000.01011110.0xxxxxxx.xxxxxxx.xxxxxxxx

组播MAC地址的最高24bit为0X01005e,第25bit恒为0,记最高25bit为固定值,MAC地址的低23bit

为组播ip地址的前4bit即1110,代表组播标识,而后28bit中只有23bit被映射表到MAC地址

这样IP地址中就有5bit信息丢失,导致的结果是出现了32个组播地址映射到同一个mac地址上

例如:组播IP地址224.215.145.230应该映射到下列哪个组播MAC地址?( )

   (A) 01-00-5e-57-91-e6   (B) 01-00-5e-d7-91-e6

   (C) 01-00-5e-5b-91-e6   (D) 01-00-5e-55-91-e6

用二进制来换算,将215.145.230换算成1101,0111,1001,0001,1110,0110

取最后23位放到MAC地址中的23位可以计算得出答案是A

4.显然有32个IP地址(有5个y可以不一样,2的5次方)对应一个MAC地址

5.所以要避免在同一网络中使用的多个组播IP地址对应一个MAC地址

6.在同一组播域内,有可能出现数据冲突和交叠,需要依靠上层端口或应用来判断

7.组管理协议一共三个版本,默认是IGMPv2版本

8.路由器之间运行PIM协议,路由器和接收者之间运行IGMP协议

9.ICMPV3版本可以控制接收谁发来的组播数据(控制源)

10.IGMPV1版本下,当接收者脱离组播组以后不告知上有路由器

九、IP Multicast转发模型

1.每个组播组都用一个D类地址来进行标识

2.接收者需要加入或者离开某一个组是,需要告知上游的组播路由器

3.离接收者最近的组播路由器称之为最末跳路由器(Last hop Router),也称之为叶路由器(Leaf Router)

4.路由器通过对应的组播协议负责管理本地连接的所有组成员信息

5.组播源发送数据不依赖于任何设备或者协议

6.离组播源最近的路由器称之为第一跳路由器(First hop Router),并负责转发组播源的数据

7.从第一跳到最末跳路由器之间的所有组播路由器通过组播路由协议构建组播路由表

8.利用构建号的组播路由表转发组播数据到达组成员

9.利用组播路由协议维护当前组播网络,以适应拓扑的变更

10.从第一条路由器到末跳路由器之间形成的转发路径称之组播的分布树(Distribution Tree)

11.如果组播发送源有多条到达叶路由器的路径,会选择出一跳最优的路径,这条路径叫做SPF路径

或SPT路径(shortest path first&shortest path tree)

十.IP Muiticast Protocol介绍

1.组播源与第一跳路由器之间不需要任何协议

2.叶路由器和组成员之间通过IGMP完成信息交互

3.组播路由器之间通过组播路由协议(DNVRP、MOSPF、CBT、PIM)来完成信息交互并构建组播路由表

4.如果两个AS之间需要传播组播数据,可能需要通过MBGP(multicast address-family)和MSDP来协助组播数据转发

十一.IGMP协议

1.ip multicast-routing-开启路由器的组播路由功能

2.进入接口下,show ip igmp interface 查看接口的IGMP版本

3.接口下更改IGMP版本,ip igmp version+版本号

4.全局开启组播协议以后,还需要接口下开启组播,ip pim dense-mode/sparse-dense-mode/sparse-mode

5.工作在最末跳路由器和组成员之间

6.组成员利用IGMP向最末跳路由器报告对某一个组的加入或者离开

7.叶路由器利用IGMP协议维护所有组成员的信息,用于判断需要转发哪些组的数据

8.IGMP被封装在IP报头后,协议号为2,并且IP报头中TTL=1,因此IGMP只能在本广播域内转发

9.IGMPv2可以看作十IGMPv1Plus,而IGMPv3专门用于针对特殊的组播转发模型(SSM)

10.终端要加入到某一个组播组里面,接口下ip igmp join-group +组播地址

11.一旦一台终端设备加入到一个组里面,会发送一个report信息,当叶路由器收到组播数据以后才会

将数据推送到终端设备上,如果终端设备没有加入,叶路由器收到数据以后会修剪掉该组播数据(可以理解为丢弃)

十二、IGMP的开启与关闭

1.实验环境中,会用到在路由器的接口下模拟组成员的存在(ip igmp join-group(address)

2.如果该命令存在,即便没有开启组播路由协议,此IGMP也会开启(半开)

3.但是没有组播路由协议存在,该接口不具备IGMP的查询功能,从理论上来说,也是不具备转发数据的功能的

4.此时路由器本身也可以看作一个组成员,因此针对测试数据包可以响应

十三、IGMP Message

IGMP Message分为两大类

1.Host:Membership Report and Leave Message(注册消息/加入组消息和离开消息)

2.Router:Query Message(Gennel&Specific)查询消息分为通用组查询和特定组查询消息

3.通用组查询消息,每60s查询一次,周期性发送

4.特定组查询消息,一旦叶路由器接收到组成员发来的leave消息,会发送特定组查询消息测试组成员是否还在该组播组内

转自: https://zhuanlan.zhihu.com/p/267041223

一、IGMP Message

1.组成员一旦开启IGMP,会自动发送Membership Report消息到叶路由器

2.IGMPv2版本,组成员退出组会发送leave消息,IGMPv1不会

3.也就是说,IGMPv1版本只有Membership Report Message,没有Leave Message

4.对于叶路由器,如果运行IGMPv1版本,那么它是没有Specific消息的(特定组查询消息)

只有60s/次的周期性查询消息(即general Message-通用性查询消息)

5.叶路由器会周期性的每60s向组成员发送周期性查询消息,组成员收到以后,必须回应membership

Report消息

6.特定组查询消息只在V2版本中才会产生

7.当某一组成员向叶路由器发送了leave message以后,叶路由器会马上向下发送一个spcific message

查询这个组中是否还有组成员(整个广播域内发送),如果还有该组中还有组成员存在,那么其他组成员

将以membership report消息回复叶路由器;如果该组中不再存在任何组成员,那么叶路由器收到来自

组播的数据将不再往下推送

Host Report Message

1.该消息用于组成员向叶路由器报告自身需要加入的组地址

2.报头中的目的ip地址为自身想要加入的组地址,这样做是为了完成再本组内Report Message的Suppress(抑制)

因为路由器不关心这个组内有多少组成员,只关心有或者是没有,因此所有组成员只要有一个发起就好

3.那么其他组成员如何知道不需要发送Report Message呢,因为每一个组成员发送消息的目的ip为组播地址

4.Report Message产生的原因有两个:再组成员第一次加入该组时,或是在收到路由器发出的Query Message以后

需要产生响应

5.针对第一种可能,RFC2236建议在第一次加入该组时,每一个组成员都以10s为间隔发送1-2次membership Report

message,为了保证叶路由器可以收到该消息,这个时候就不考虑Suppress的问题

6.针对第二种情况,Report会周期性的回复,回复频率取决于路由器Query Message的查询频率

7.一旦有某一个组成员发送了Membership Report消息以后,其他组成员将不再发送

8.IGMPv2的Leave Message,当组成员离开时用于通告也路由器,发送该消息的目标ip地址位224.0.0.2

也就是发送到组内的所有路由器

二、组成员的Leave Message消息

为什么要发送到224.0.0.2?

1.因为某一单一组成员的离开不需要告诉组内的其他组成员,这样只有叶路由器可以收到

2..其次,会出现双网关(多叶路由器)的情况,那么为了能够将消息发送到所有的叶路由器的同时也要保证组内其它

组成员不收到该消息,所以将此消息发送到目标地址224.0.0.2

三、叶路由器的通用组查询消息,General Query Message

为什么发送到224.0.0.1?

1.当存在多台叶路由器的时候,叶路由器发送通用组查询消息是发送到所有的设备,那么在这过程中

所有的组成员能收到,所有的叶路由器也能收到

2.当存在多个叶路由器的时候,会在多个叶路由器中选举出一个叶路由器发送特定组查询消息

该消息用于叶路由器查询该接口下的所有组成员的信息,无论组成员需要加入哪一个组(可能存在

多个不同的组)都需要做出响应,叶路由器每60s向下发送一次查询,可以通过命令ip igmp query-interval

【seconds】进行修改(接口下)

3.IP包头内目的地址设置位224.0.0.1,对应本广播域内的所有设备,包括叶路由器,这样做是为了在同一子网

有多台路由器时,选择查询者,而非查询者将停止发送所有查询消息

4.查询者的选择比较接口的ip地址,地址越小的成为查询者,如果120s(可以通过ip igmp querier-timeout【second】

修改)内非查询者都没有收到查询者的Query消息,那么宣告当前查询者失效,由非查询者接替原查询者的工作

周期性的向组成员发送通用查询组消息

5.消息中设置了组成员的最大响应时间为10s,要求组成员在收到该消息后,必须10s内响应,组成员 同时启用1-10s随机计时器,来完成响应

(第一次General Query消息中设置的最大响应时间是正常值得1/4)可以使用命令ip igmp query-max-response-time【seconds】来修改该参数

6.消息中把查询得组地址设置为0.0.0.0,用于对应所有组地址

四、Router Specific Query

1.该消息是针对组成员得Leave Message而产生的特定组查询消息

2.ip包头内目的地址为要查询的组地址,表示该消息只需要指定的组的组成员响应

3.要求组成员响应的最大等待时间为1s,但是为了防止组成员来不及响应,cisco路由器上会以1s为间隔,连续发送2次该查询消息

4.可以通过命令:

ip igmp last-member-quary-interval[m seconds]和ip igmp lasst-member-query-count【num】来修改

五、IGMPv1和IGMPv2的区别

1.IGMPv1没有定义Leave Message,因此最末跳路由器不会产生specific Query Message,并且在判断是否还有组成员时必须

要通过连续3次(180s)General Query得不到响应以后才能判定,所以IGMPv1中从最后一个组成员离开,到路由器停止转发数据的

延时比IGMPv2要更长。

2.IGMPv1的查询消息中没有设定最大响应时间,而是靠组成员自己来定义

3.IGMPv1不具备查询者选择功能,只能依靠组播路由协议选择的指定路由器(DR)来作为查询者

4.当同一子网内既存在IGMPv1,也存在IGMPv2时,按照向后兼容的原则工作

六、L2 Muiticast Frame Switching

组播数据转发对一台交换机的影响

1.以太交换机在L2转发数据时,依赖于本地的CAM表,也就是MAC地址表

2.交换机通过对收到的数据帧的源mac地址与接收端口相绑定的方式来完成自动学习,从而形成mac地址表

3.组播的组地址永远都是存在于目的地址字段,因此交换机是永远无法自动学习到组播的mac地址的

4.因此,当一个组播的数据经过交换机时,交换机会把这个数据当作未知单播数据帧再本广播域内Flooding

七、CGMP协议(Cisco Group Management Protocol)--cisco私有

1.运行在Router和Switch之间的一种协议

2.CGMP Message是由Router向Switch发起

3.组成员通过IGMP向路由器报告自身需要到达组地址224.X.X.X

4.IGMP在穿越交换机时,交换机无法识别(因为该消息在IP包头内)

5.但是交换机会将该主机的单播mac地址和自身接收到该数据的接口相绑定

6.路由器收到报告后,会通过CGMP向交换机 发起join消息,告诉交换机有一个单播MAC(组成员的mac)和组地址(组播地址的mac)要求加入

7.交换机收到该消息后,首先查询单播的mac地址表,确认该组成员单播mac地址是在该接口上,然后建立组播mac地址表,将组播mac地址和组成员连接

交换机的接口绑定,完成对组播mac地址的学习

八、IGMP Snooping

1.单独运行在Switch

2.要求该Switch必须是多层交换机

3.运行IGMP Snooping后,交换机会监听经过自己的所有IGMP的消息,并且自动判断哪些单播mac地址需要接收哪些组播Mac地址的流量

4.对应单播的mac地址表完成组播MAC地址表的建立

九、RGMP,和CGMP工作原理类似,公有协议

十、GMRP【GARP(Genneral Attribute Registration Protocol Multicast)

Resgistration Protocol

1.运行在组成员(主机)和交换机之间的协议,要求组成员(主机)安装相对应的协议

十一、单播路由与组播路由的主要区别

1.单播路由关心数据包要去哪里(Destination)

2.组播路由关心数据包从哪里来(Source)

3.单播路由依靠路由协议对目的地址的检测来防止环路

4.组播路由无法对目的地址检测,因为组成员可能在任何一个节点

因此组播路由需要依靠对源地址的检测来防止环路的发生

1.对源地址的检测方法称之为RPF(Reverse Path Forwarding)

2.RPF针对的是所有组播路由协议,所以RPF是组播数据转发的依赖

------------show ip rpf 100.1.1.0--查看rpf的源是怎么过来的

配置-dense mode-推送模式

ip multicast-routing--开启组播路由功能

ip pim dense-mode-开启pim推送模式

ip igmp join-group +组播地址--PC加入某一个组

show ip igmp interface F0/0--查看接口IGMP协议运行状态

show ip mroute--查看组播路由表

Show ip pim neighbor-查看pim邻居

网络拓扑:

拓扑

1.如图规划ip地址,SER设备网关地址为100.1.1.1,PC1设置GW网关地址为150.1.1.1

2.GW1和GW2上打开组播路由功能

3.进入接口下,启用pim协议,这里设置pim模式为推送模式(dense-mode)

4.GW1,GW2上运行底层协议,以获得单播路由(组播是基于单播的)

5.PC1进入接口,将接口加入到组播组224.1.2.3(组播地址自定义)中

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
    尽管讲解概念如果同学们是初初相识,真有点晦涩难懂,本人讲解概念的同时,尽量结合实操来讲,这样即加固了概念,同时让同学不会感觉到太烦闷,其实对这些重要基础概念的理解,正是学习过《计算机网络原理》,与直接上手做事的人的区别所在。     古人云,腹有诗书气自华,只要先搞懂了原理,学有所成,今后和别人讨论网络底层问题的时候,才能够抑扬顿挫底气十足,不怯场!# 网络层首部     初探十二段内容介绍     ipv4和ipv6 版本号表示;首部长度     区分服务,给数据包添加标识 QoS     总长度 Total Length;标识Identification;标志Flags     生存时间 TTL     协议号;首部校验和     实训抓包验证诸项内容# ICMP 差错报告报文格式     数据包类型(详解列表:类型值和代码)     TTL耗尽报告-1     主机不可到达(Destination unreachable)-2     路由重定向(Redirect)-3     给应用程序返回差错报告-4     实例讲解:使用ping命令测试网络判断出问题范围     跟踪数据包路径主要命令介绍:tracert和pathping# ARP 协议     arp 协议本网段与跨网段的工作原理     arp 欺骗的两个目的,阻断连接或截获数据包     arp 欺骗的工作原理阐述,创建阻断连接的实验环境     arp 欺骗演示工具,网络执法官     arp 欺骗防止或阻止措施:         手工绑定两端通信主机的mac地址 -a         同时修改mac地址和ip地址;安装运行wireshark工具 -b         在路由器中绑定通信主机mac地址 -c# 搭建流媒体服务     提供点对点服务:采用TCP协议,而非IGMP协议     提供多播视频:根据多播地址切换频道(IGMP协议-UDP)     根据多播IP地址,参照预定规则,合成多播MAC地址     阐述IGMP跨网段运行方式,与创建跨网段环境     启用多播路由:实现流媒体跨网段转发视频,同时抓包查看ICMP数据包特性# 习题详解    网络层协议

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值