session 1 Multicast组播概念
一、优点:
1、带宽:unicast需要服务器发多份数据给相同多个的客户端
Multicast只需要服务器发一份数据到一个组地址就行,组中多个客户端在监听,由网络设备发给相同的组的客户端,减少带宽。
2、延迟:unicast发送给多个用户时,后发送的会比先发送的有延迟
Multicast发送给多个用户时,没有延迟。因为是向组中发送一份数据报文,故不存在先手顺序无延迟
缺点:只能基于udp,不属于端到端连接,没法使用tcp
二、内容
1、组播地址只能做目标地址
2、组播成员:接收组播流量的一组设备(沿途路由器只负责传递组播流量,可以不用加入组播组)
3、不支持组播的设备可以将流量以单播(复制多分)和广播的形式转发
三、组播地址
组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。
1、224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;
1、224.0.0.0~224.0.0.255
224.0.0.1 所有支持组播的设备都在该组中
224.0.0.2 组中的所有路由器使用的地址
224.0.0.5/6 ospf协议的更新信息组
224.0.0.13 PIMv2路由器协议使用地址
224.0.0.22 IGMPv3协议使用的地址
2、224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
3、224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;
4、239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。(组播中的私有地址)
5、233.0.0.0 ~ 233.255.255.255 全球可路由的组播地址BGP组播
四、组播ip与MAC地址的映射关系
组播ip与MAC的换算,举例:
一、组播ip:239.255.0.1
MAC地址:01-00-5E-7E-00-01
换算方法:组播ip地址都是/8的前缀,所以前8bit不用管固定的,也就是239,后面24bit是对应的MAC地址的。在48bitMAC地址中,前24bit是分配给厂家的也是固定的,也就是01-00-5E,后面24bit对应的是ip的24bit,但是第25bit是固定的0(特殊原因),所以只有23bit来对应ip的23bit,那么换算成2进制就是:
ip: 239.
11111111.00000000.00000001
mac:01-00-5e-
01111111.00000000.00000001 (ip的后23bit个可用做mac,前面25bit固定)
换算下来mac是:01-00-5e-7F-00-01 二进制换成16进制(8421原则),其中红色的就是固定为0的,不考虑,后面的23bit用于组播ip和mac的换算,
01111111=7F,00000000=00,00000001=01
同理,在换算一个组播地址:
二、ip:224.254.1.2
mac:01-00-5e-xx-xx-xx
换算结果为:224.254.1.2 对应 01-00-5e-7e-01-02
session 2 组播协议IGMPv2
IGMPv2用于组播成员与组播网关使用的组播通信协议,组播和ospf协议一样都是以接口为范围的。
组播网关配置:
R1(config)#ip multicast-routing 开启组播功能
R1(config-if)#ip pim dense-mode
使用PIM协议,共享模式无需RP
R1#show ip igmp interface s0/0 可以查看IGMP协议状况
Serial0/0 is up, line protocol is up
Internet protocol processing disabled
IGMP is enabled on interface
Current IGMP host version is 2
Current IGMP router version is 2
IGMP query interval is 60 seconds
IGMP querier timeout is 120 seconds
IGMP max query response time is 10 seconds
Last member query count is 2
Last member query response interval is 1000 ms
Inbound IGMP access group is not set
IGMP activity: 0 joins, 0 leaves
Multicast routing is enabled on interface
Multicast TTL threshold is 0
IGMP querying router is 0.0.0.0 (this system)
No multicast groups joined by this system
R1#
R1(config-if)#ip igmp join-group 224.1.1.1 将接口加入组224.1.1.1
R1#show ip igmp groups
224.1.1.1
查看当前组中有哪些终端
IGMP Connected Group Membership
Group Address
Interface
Uptime
Expires
Last Reporter
Group Accounted
224.1.1.1
Serial0/0
00:01:26
stopped
0.0.0.0
R1#
一、IGMP的抑制机制
IGMP的原理:
1、首先由组播网关设备每60秒发起一起query查询,IGMP的query查询报由网关发起,询问哪些成员需要加入组,初始源ip是网关接口ip,目的是组播组ip,IGMP头部中的组成员地址是0.0.0.0初始填充。
2、监听组播地址的终端接收组播网关的query查询,若要加入组,就会对网关产生回应report报文,并同时生成一个抑制计时器。
3、抑制(cancel report):计时器由终端生成且时间随机(每个终端的初始倒计时间都不一样),当某个终端的计时器到达0秒时候触发report响应抑制后,它会向同一个组中的其他终端成员发送抑制,让他们不要再发送report响应给组播网关设备了(因为自己已经先人一步发送了report响应给网关设备了,自己已经代表了其他监听该组地址的终端了,这样有限的减少了带宽的资源占用)等到网关设备过了60s再次发送query查询的时候,抑制会再次启动,再次由抑制计时器先到0的终端向组中的其他终端发起抑制
可以使用debug ip igmp查看每个组成员之间的report响应和cancel report响应抑制
4、IGMPv2离组
终端发起离组消息,网关收到后发送一次(cisco是2次)查询信息(在终端所在的组内,那个组的发送离开消息就向哪个组发送查询),在1s内(cisco是2s)没有收到终端回应,那么就认为该终端已经离组。
离组也有抑制,与加入组一样原理。
实验案例:
上图中R1是组播路由器,负责转发组播流量,而R2与R3扮演PC机较色,使用PIM动态组播路由协议以及IGMPv2协议来演示:
R1组播路由器的配置
R1#show run | include ip multicast
ip multicast-routing 开启组播路由功能
R1#
R1#show run interface f0/0
Building configuration...
Current configuration : 112 bytes
!
interface FastEthernet0/0
ip address 10.1.1.1 255.255.255.0
ip pim dense-mode 组播路由器启用pim协议,共享模式。R1并没有加入组中
duplex auto
speed auto
end
R1#
R1#show ip igmp groups 224.1.1.1 查看224.1.1.1组中的成员
IGMP Connected Group Membership
Group Address Interface Uptime Expires
Last Reporter Group Accounted
224.1.1.1 FastEthernet0/0 00:08:54 00:02:26
10.1.1.3
R1#
红色中看到组中最后一次发送
Reporter响应的是10.1.1.3即R3,因为R3的抑制计时器比R2快,后面可以看到
R2模拟客户端加入组的配置
R2#show run interface f0/0
Building configuration...
Current configuration : 142 bytes
!
interface FastEthernet0/0
ip address 10.1.1.2 255.255.255.0
no ip route-cache
ip igmp join-group 224.1.1.1 R2的接口模拟PC加入组224.1.1.1
duplex auto
speed auto
end
R2#
R3模拟客户端加入组的配置
R3#show run interface f0/0
Building configuration...
Current configuration : 142 bytes
!
interface FastEthernet0/0
ip address 10.1.1.3 255.255.255.0
no ip route-cache
ip igmp join-group 224.1.1.1 R3的接口模拟PC加入组224.1.1.1
duplex auto
speed auto
end
R3#
R1#show ip igmp interface f0/0
FastEthernet0/0 is up, line protocol is up
Internet address is 10.1.1.1/24
IGMP is enabled on interface
Current IGMP host version is 2 组播协议PIMv2
Current IGMP router version is 2
IGMP query interval is 60 seconds 组播路由器发起查询的间隔为60s一次
IGMP querier timeout is 120 seconds
IGMP max query response time is 10 seconds
Last member query count is 2
Last member query response interval is 1000 ms
Inbound IGMP access group is not set
IGMP activity: 4 joins, 2 leaves
Multicast routing is enabled on interface
Multicast TTL threshold is 0
Multicast designated router (DR) is 10.1.1.1 (this system) PIM中组播DR路由器是10.1.1.1
IGMP querying router is 10.1.1.1 (this system) 发送query的路由器是10.1.1.1
Multicast groups joined by this system (number of users):
224.0.1.40(1)
R1#
在R1、R2、R3开启debug ip igmp查看igmpv2的抑制机制(v3中没有)
R1#
*Mar 1 00:45:03.471: IGMP(0): Send v2 general Query on FastEthernet0/0
发送查询
*Mar 1 00:45:09.063: IGMP(0): Received v2 Report on FastEthernet0/0 from 10.1.1.2 for 224.1.1.1
从10.1.1.2收到了report响应,10.1.1.3被10.1.1.2抑制了所以没有发送响应
*Mar 1 00:45:09.067: IGMP(0): Received Group record for group 224.1.1.1, mode 2 from 10.1.1.2 for 0 sources
*Mar 1 00:45:09.067: IGMP(0): Updating EXCLUDE group timer for 224.1.1.1
*Mar 1 00:45:09.067: IGMP(0): MRT Add/Update FastEthernet0/0 for (*,224.1.1.1) by 0
R1#u all
All possible debugging has been turned off
R1#
R2#
*Mar 1 00:45:03.479: IGMP(0): Received v2 Query on FastEthernet0/0 from 10.1.1.1
收到R1发送的query查询
*Mar 1 00:45:03.479: IGMP(0): Set report delay time to 4.6 seconds for 224.1.1.1 on FastEthernet0/0
R2的report响应抑制计时器被随机设置为4.6s
R2#
*Mar 1 00:45:09.039: IGMP(0): Send v2 Report for 224.1.1.1 on FastEthernet0/0
因为R2的抑制计时器为4.6秒,小于R3的9.0s,所以R2向R3发送抑制,并自己发送了report给组播路由器R1,减少不必要的report在网络中传输
R2#
R3#
*Mar 1 00:45:03.499: IGMP(0): Received v2 Query on FastEthernet0/0 from 10.1.1.1
收到R1发送的query查询
*Mar 1 00:45:03.499: IGMP(0): Set report delay time to 9.0 seconds for 224.1.1.1 on FastEthernet0/0
R3的report响应抑制计时器被随机设置为4.6s
*Mar 1 00:45:09.079: IGMP(0): Received v2 Report on FastEthernet0/0 from 10.1.1.2 for 224.1.1.1
*Mar 1 00:45:09.079: IGMP(0): Received Group record for group 224.1.1.1, mode 2 from 10.1.1.2 for 0 sources
*Mar 1 00:45:09.079: IGMP(0): Cancel report for 224.1.1.1 on FastEthernet0/0
三条红色的收到信息是R3收到R2的report响应抑制信息,因为R2的抑制计时器时间为4.6s<自己的9.0s,所以R3不在向组播路由器R1发送report响应信息,这里没有看到R3向R1发送report响应信息
R3#
session 3 IGMPv3
一、IGMPv3使用组地址:224.0.0.22
在IGMPv3中没有抑制,集合switch的spooning也不需要抑制,由交换机处理,不会让网络中产生大量的repoer响应报文。
IGMPv3中比v2中多了源参数可选,可以指定只report响应某个源组播路由器发来的query查询信息
配置IGMPv3相关:
R1(config)#interface s0/0
R1(config-if)#ip igmp version 3
R1(config-if)#ip igmp join-group 224.1.1.1 加入组224.1.1.1,源随意,下面是对比命令
R1(config-if)#ip igmp join-group 224.1.1.1 source 10.1.1.1 只接受源为10.1.1.1的组播报文
不限定源的话,会在一个query查询报文中包括多个组(同时查询多个组)
修改igmp中的参数
R1(config-if)#ip igmp ?
access-group IGMP group access group 限制组范围
explicit-tracking Enable/Disable IGMP explicit-tracking
helper-address IGMP helper address
immediate-leave Leave groups immediately without sending last
member query, use for one host network only
join-group IGMP join multicast group 模拟加入组
last-member-query-count IGMP last member query count
last-member-query-interval IGMP last member query interval
limit IGMP limit
mroute-proxy Mroute to IGMP proxy
proxy-service Enable IGMP mroute proxy service
querier-timeout IGMP previous querier timeout
query-interval IGMP host query interval 修改查询时间间隔,默认60s
query-max-response-time IGMP max query response value 修改最大report响应时间
static-group IGMP static multicast group 静态组
unidirectional-link IGMP unidirectional link multicast routing
v3lite Enable/disable IGMPv3 Lite
version IGMP version 版本