企業基礎架構ccie:組播中的igmp全系實驗

20.1 IGMP互聯網組管理協議

IGMP(internet group manage protocol)協議是主機跟路由器之間的控制協議,主機通過IGMP協議向組播路由器報告自己想加入的組,路由器通過IGMP協議查詢網段上是否還有特定組的成員,協議號爲2.
當前IGMP對IPv4有3個版本:
RFC1112—IGMPv1(參見RFC1112中IGMP的結構)
RFC2236—IGMPv2
RFC3376—IGMPv3
主機跟路由器之間的組控制協議稱之爲Multicast Listener Discover,對IPv6有2個版本:
MLD V1
MLD V2
加入組播組方法:當一個主機希望接收一個組播組的數據,則發送成員加入報告給組播組。而且由該網段的DR負責發送查詢如圖20-1所示:
企業基礎架構ccie:組播中的igmp全系實驗

圖20-1 路由器的查詢以及主機的報告功能
報告抑制功能:
組的其他成員監聽到報告後抑制自己的成員關係報告發送。即報告抑制機制,實驗證明V1抑制功能很低下,V2可以正常工作,而且增加了最大響應時間來指定延時值來規定所有主機的查詢響應延時的上限,此外最大響應時間在IGMP查詢器(選舉原則爲IP地址小的設備)上配置,只應用在成員關係查詢信息。如圖20-2所示:

企業基礎架構ccie:組播中的igmp全系實驗

圖20-2 IGMP查詢和抑制機制
組成員離開過程:
主機[必須是last report設備]向224.0.0.2發送離開組消息(報文中含有要離開的組地址224.1.1.1)
1秒鐘內沒有收到該組的報告,發送第二個特定組查詢。
二個查詢信息後未收到主機響應,組224.1.1.1超時,離開組。

20.2 IGMP實驗拓撲

圖中R3和R4爲組播網絡的最接近接收者(主機)的設備,兩臺主機由路由器模擬作爲接收者,即加組的設備
IP地址說明:每個節點都有一個loopback0,IP地址爲XX.1.1.1/32,例如其中R4的loopback0,IP地址爲44.1.1.1/32,本拓撲直連在同一網段,如R3的e0/0爲10.1.1.3/24。

企業基礎架構ccie:組播中的igmp全系實驗

圖20-3 IGMP實驗拓撲

20.3 IGMP實驗步驟

IGMPv1面臨淘汰,不在本書討論之列。本實驗着重研究IGMPv2。

20.3.1 基本的IGMP配置

R3和R4作爲最後一跳組播設備,PC1和PC2由路由器模擬加組設備。

R3、R4:
ip multicast-routing---作爲組播設備,開啓組播功能
interface Ethernet0/0
 ip address 10.1.1.3 255.255.255.0
ip pim sparse-mode---pim協議是最流行的組播協議,後續我們會着重介紹,對思科設備來說只要最後
一跳設備必須開啓PIM,那麼就自動使能了IGMP。
!
ip multicast-routing
interface Ethernet0/0
 ip address 10.1.1.4 255.255.255.0
 ip pim sparse-mode
PC1和PC2:
interface Ethernet0/0
 ip address 10.1.1.1 55.255.255.0
ip igmp join-group 224.1.1.1---加入組播組224.1.1.1
!
interface Ethernet0/0
ip address 10.1.1.2 255.255.255.0
 ip igmp join-group 224.1.1.1

驗證:
R4#show ip pim neighbor ---驗證PIM形成的鄰居
PIM Neighbor Table
Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,
S - State Refresh Capable
Neighbor Interface Uptime/Expires Ver DR
Address Prio/Mode
10.1.1.3 Ethernet0/0 00:00:11/00:01:33 v2 1 / S

R3#show ip igmp interface ethernet 0/0---只要使能了PIM,自然即開啓了igmp協議
Ethernet0/0 is up, line protocol is up
Internet address is 10.1.1.3/24
IGMP is enabled on interface---使能PIM就自動使能了IGMP
Current IGMP host version is 2---默認的IGMPv2
Current IGMP router version is 2------默認的IGMPv2
IGMP query interval is 60 seconds---IGMP查詢間隔默認爲60s
IGMP querier timeout is 120 seconds---負責查詢的設備即查詢者,監控查詢者超時時間爲120s
IGMP max query response time is 10 seconds---默認最大響應時間爲10s,後續會進行調整
Last member query count is 2
Last member query response interval is 1000 ms
Inbound IGMP access group is not set
IGMP activity: 2 joins, 0 leaves
Multicast routing is enabled on interface
Multicast TTL threshold is 0
Multicast designated router (DR) is 10.1.1.4---此網段的DR爲R4
IGMP querying router is 10.1.1.3 (this system)---最後一跳有多個設備,那麼R3爲查詢者:在有多個最後一跳路由器的情況下,由查詢路由器發起IGMP的查詢(query)消息,IGMPv2和IGMPv3查詢路由器的選取原則:接口IP地址小的爲查詢路由器。
Multicast groups joined by this system (number of users):
224.0.1.40(1)

20.3.2 修改最後一跳位置的的DR設備

PIM的DR,即指定路由器作用和OSPF不同,其作用在於:在有多個第一跳路由器的情況下,由DR負責轉發組播源發出的組播流,並向RP發送註冊信息;在有多個最後一跳路由器的情況下,由DR負責向組播源或者RP發送PIM的join消息。
PIM的DR的選取原則:優選DR優先級高的爲DR,次選IP地址大的爲DR。
驗證R4:
R4#show ip igmp interface e0/0
Ethernet0/0 is up, line protocol is up
Internet address is 10.1.1.4/24
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: 2 joins, 0 leaves
Multicast routing is enabled on interface
Multicast TTL threshold is 0
Multicast designated router (DR) is 10.1.1.4 (this system)—DR爲R4
IGMP querying router is 10.1.1.3 ---查詢者爲R3
Multicast groups joined by this system (number of users):
224.0.1.40(1)
下面的配置使得R3成爲DR:
interface Ethernet0/0
ip address 10.1.1.3 255.255.255.0
ip pim dr-priority 10—把默認的優先級改爲10,使其成爲DR
驗證:
R4#show ip pim neighbor---驗證pim的鄰居時,可以看到dr的情況
PIM Neighbor Table
Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,
S - State Refresh Capable
Neighbor Interface Uptime/Expires Ver DR
Address Prio/Mode
10.1.1.3 Ethernet0/0 00:12:47/00:01:16 v2 10/ DR S

20.3.3 組播網絡的最後一跳的路由器同IGMP加組設備的關係

需要先了解一下基本的術語和概念:
last reporter設備,即最後發送report報文的設備。該設備和離開組有關係
通過下面的實驗讓我們來觀察report抑制功能以及報告抑制功能。
R3#debug ip igmp
IGMP debugging is on

R2#show ip igmp groups detail

Flags: L - Local, U - User, SG - Static Group, VG - Virtual Group,
SS - Static Source, VS - Virtual Source

Interface: Ethernet0/0
Group: 224.1.1.1
Flags: L U
Uptime: 00:18:32
Group mode: INCLUDE
Last reporter: 10.1.1.1---R2知道R1爲最後一個報告者,因爲它們在同一個網段內
Source list is empty
此時R3上觀察到:
Mar 1 00:42:00.475: IGMP(0): Send v2 general Query on Ethernet0/0---查詢者發送一個通用組查詢
Mar 1 00:43:09.107: IGMP(0): Received v2 Report on Ethernet0/0 from 10.1.1.1 for 224.1.1.1---收到
來自R1的IGMP report報文,沒有收到來自R2的report報文,是因爲report抑制功能的原因。R1
發送了有設備在該組中,爲了節省報文發送,R2收到該報文之後不再發送report。
Mar 1 00:43:09.111: IGMP(0): Received Group record for group 224.1.1.1, mode 2 from 10.1.1.1 for 0 sources
Mar 1 00:43:09.115: IGMP(0): Updating EXCLUDE group timer for 224.1.1.1
驗證R3:
R3#show ip igmp groups
IGMP Connected Group Membership
Group Address Interface Uptime Expires Last Reporter
224.1.1.1 Ethernet0/0 00:24:33 00:02:43 10.1.1.1
224.0.1.40 Ethernet0/0 00:28:55 00:02:43 10.1.1.3
R1爲last report,該角色是不斷髮生變化的,發送報告的設備即爲last report,而其他同組中的設備被抑制發送報告。
可以在R2查看:
R2#debug ip igmp
IGMP debugging is on
R2#
Mar 1 00:52:01.943: IGMP(0): Received v2 Query on Ethernet0/0 from 10.1.1.3---收到了來自R3(查
詢者)的查詢消息
Mar 1 00:52:01.947: IGMP(0): Set report delay time to 0.2 seconds for 224.1.1.1 on Ethernet0/0---發送
報告的時延設置爲0.2秒,該數字爲一個隨機值,隨機值小的爲報告者
Mar 1 00:52:02.147: IGMP(0): Send v2 Report for 224.1.1.1 on Ethernet0/0---此時R2發送了報告,
那麼R2爲last report,原因在於R2的隨機報告時延較小
R2#show ip igmp groups
IGMP Connected Group Membership
Group Address Interface Uptime Expires Last Reporter
224.1.1.1 Ethernet0/0 00:27:39 stopped 10.1.1.2
R2#show ip igmp groups detail

Flags: L - Local, U - User, SG - Static Group, VG - Virtual Group,
SS - Static Source, VS - Virtual Source

Interface: Ethernet0/0
Group: 224.1.1.1
Flags: L U
Uptime: 00:27:41
Group mode: INCLUDE
Last reporter: 10.1.1.2
Source list is empty
爲了觀察到此過程,以及爲了加速發送加組、離開組,需要多次取消和鍵入加組命令。
爲了控制加組設備設置的報告實驗,IGMPv2可以設置該時間的最大值,在查詢者R3上做如下設置:

interface Ethernet0/0
ip address 10.1.1.3 255.255.255.0
ip igmp query-max-response-time 5---設置最大響應時間爲5秒
我們觀察新一輪的完整的報告過程:
R3#
*Mar  1 01:06:01.019: IGMP(0): Send v2 general Query on Ethernet0/0---查詢者發送一個通用組查詢
*Mar  1 01:06:01.019: IGMP(0): Set report delay time to 3.4 seconds for 224.0.1.40 on Ethernet0/0---本
設備針對224.0.1.40的report delay,不用關心該組
R3#
*Mar  1 01:06:04.167: IGMP(0): Received v2 Report on Ethernet0/0 from 10.1.1.2 for 224.1.1.1---從R2
收到報告消息
*Mar  1 01:06:04.171: IGMP(0): Received Group record for group 224.1.1.1, mode 2 from 10.1.1.2 for 0 sources

R1#
*Mar  1 01:06:03.683: IGMP(0): Received v2 Query on Ethernet0/0 from 10.1.1.3---從查詢者R3收到
查詢消息
*Mar  1 01:06:03.687: IGMP(0): Set report delay time to 4.4 seconds for 224.1.1.1 on Ethernet0/0---本設
備設置一個隨機發送報告的時延4.4秒,該值應該大於R2的報告時延,同時該時間小於querier(R3)
上設置的時間

R1#
Mar 1 01:06:06.843: IGMP(0): Received v2 Report on Ethernet0/0 from 10.1.1.2 for 224.1.1.1---從R2
收到了R2發送的報告消息
Mar 1 01:06:06.847: IGMP(0): Received Group record for group 224.1.1.1, mode 2 from 10.1.1.2 for 0 sources
*Mar 1 01:06:06.851: IGMP(0): Cancel report for 224.1.1.1 on Ethernet0/0---R1取消了發送報告,R1
的報告被抑制

R2#
Mar 1 01:06:02.275: IGMP(0): Received v2 Query on Ethernet0/0 from 10.1.1.3
Mar 1 01:06:02.279: IGMP(0): Set report delay time to 2.4 seconds for 224.1.1.1 on Ethernet0/0---本端
設置的一個隨機報告時延爲2.4秒
R2#
*Mar 1 01:06:05.411: IGMP(0): Send v2 Report for 224.1.1.1 on Ethernet0/0---本設備發送了報告,會
抑制R1的報告
R2#

20.3.4 觀察IGMPv2的離開組播組

下面描述一個接收者離開組播組224.1.1.1的過程:
主機(作爲last report的加組者)向224.0.0.2發送離開組消息(該報文中含有準備要離開的組播組地址224.1.1.1);
查詢者如果在1秒鐘內沒有收到關於224.1.1.1的報告,那麼它將發送第二個關於224.1.1.1的查詢;
在2個查詢信息後,查詢者未收到主機響應,那麼組224.1.1.1超時,即所有的接收者都離開了該組。
先來觀察last report是哪臺設備
R3#show ip igmp groups
IGMP Connected Group Membership
Group Address Interface Uptime Expires Last Reporter
224.1.1.1 Ethernet0/0 01:45:51 00:02:27 10.1.1.1
224.0.1.40 Ethernet0/0 01:50:13 00:02:27 10.1.1.4
讓R1離開組:
R1(config)#int e0/0
R1(config-if)#no ip igmp join-group 224.1.1.1
R1(config-if)#
Mar 1 02:10:51.855: IGMP(0): IGMP delete group 224.1.1.1 on Ethernet0/0
Mar 1 02:10:51.859: IGMP(0): Send Leave for 224.1.1.1 on Ethernet0/0---R1發送了離開組的leaver
消息,這點和V1不同,V1是默默的離開
R3#
Mar 1 02:10:49.191: IGMP(0): Received Leave from 10.1.1.1 (Ethernet0/0) for 224.1.1.1---查詢者從
R1收到了離開組的消息
Mar 1 02:10:49.195: IGMP(0): Received Group record for group 224.1.1.1, mode 3 from 10.1.1.1 for 0 sources
Mar 1 02:10:49.199: IGMP(0): Lower expiration timer to 2000 msec for 224.1.1.1 on Ethernet0/0
Mar 1 02:10:49.203: IGMP(0): Send v2 Query on Ethernet0/0 for group 224.1.1.1
R3#
Mar 1 02:10:50.203: IGMP(0): Send v2 Query on Ethernet0/0 for group 224.1.1.1---連續發送兩次查
詢,而且是專門針對該組的查詢,而非通用查詢,發送次數可以設置
Mar 1 02:10:50.227: IGMP(0): Received v2 Report on Ethernet0/0 from 10.1.1.2 for 224.1.1.1---R2收
到R2的查詢,發送了報告,即該子網下還有組播接收者
Mar 1 02:10:50.231: IGMP(0): Received Group record for group 224.1.1.1, mode 2 from 10.1.1.2 for 0 sources
Mar 1 02:10:50.235: IGMP(0): Updating EXCLUDE group timer for 224.1.1.1
Mar 1 02:10:50.235: IGMP(0): MRT Add/Update Ethernet0/0 for (,224.1.1.1) by 0
總結:
當last reporter離開一個組的時候,要發送leave報文通知最後一跳路由器,然後路由器連續發送兩個查詢報文,查詢是否還有該組的接收者存在,此時的查詢報文是針對特定組的查詢。對於非last reporter離開組,不需要發送leave報文,因爲這個時候路由器記錄的組播接收者不是該設備。

20.3.5 在最後一跳設備上實現加組的控制

可以在最後一跳設備上限制加入某些組播組,配置如下:
R3:

access-list 10 permit 224.1.1.1
access-list 10 permit 224.1.1.2
interface Ethernet0/0
 ip address 10.1.1.3 255.255.255.0
 ip pim dr-priority 10
 ip pim sparse-mode
 ip igmp query-max-response-time 5
 ip igmp access-group 10---ACL 10 匹配的組才能加入

驗證:
R3#show ip igmp interface e0/0
Ethernet0/0 is up, line protocol is up
Internet address is 10.1.1.3/24
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 5 seconds
Last member query count is 2
Last member query response interval is 1000 ms
Inbound IGMP access group is 10
IGMP activity: 2 joins, 0 leaves
Multicast routing is enabled on interface
Multicast TTL threshold is 0
Multicast designated router (DR) is 10.1.1.3 (this system)
IGMP querying router is 10.1.1.3 (this system)
Multicast groups joined by this system (number of users):
224.0.1.40(1)
R1加組:
R1(config)#interface e0/0
R1(config-if)#ip igmp join-group 224.1.1.3
R1(config-if)#ip igmp join-group 224.1.1.2
查看R3:
Mar 1 02:27:25.451: IGMP(0): Received v2 Report on Ethernet0/0 from 10.1.1.1 for 224.1.1.3
Mar 1 02:27:25.455: IGMP(*): Group 224.1.1.3 access denied on Ethernet0/0---加入該組224.1.1.3的
信息被拒絕,因爲該組沒有被ACL允許
R3#show ip igmp groups ---R3上沒有收到224.1.1.3的加組信息
IGMP Connected Group Membership
Group Address Interface Uptime Expires Last Reporter
224.1.1.1 Ethernet0/0 02:03:29 00:02:52 10.1.1.2
224.0.1.40 Ethernet0/0 02:07:51 stopped 10.1.1.3
R3#show access-lists
Standard IP access list 10
10 permit 224.1.1.1 (213 matches)
20 permit 224.1.1.2 (2 matches
最後做一個ping的測試:
R3#ping 224.1.1.1

Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

Reply to request 0 from 10.1.1.2, 32 ms
R3#ping 224.1.1.2

Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 224.1.1.2, timeout is 2 seconds:

Reply to request 0 from 10.1.1.1, 16 ms

20.3.6 IGMPv3

IGMPv3是最新的關於IGMP的版本
IGMPv3可以和IGMPv1、V2實現互操作,它特定服務於Source Specific Multicast(SSM)模型,默認的組播組爲232.0.0.0/8。
IGMPv3允許主機指定組播源,只接收特定組播源發出的組播數據,相比以前的版本,加強了主機的控制能力,不僅可以指定組播組,還能指定組播的源。
IGMPv3增強了接收者對源的控制,可以顯式的指定它期望的源,有兩種模式:INCLUDE和EXCLUDE。
INCLUDE模式中,接收者通告組成員關係,提供一個INCLUDE列表,其中包含它想接收的流量。即主機只接收除了EXCLUDE LIST中列出的源的流量,通常爲空。
IGMPv3專門爲SSM設計,主機發送成員關係報告到224.0.0.22,所有的IGMPv3路由器偵聽該地址,主機不會偵聽或者響應224.0.0.22,IGMPv3也不存在報告抑制功能,因爲IGMPv3主機不偵聽其他主機。
修改查詢者R3爲IGMPv3,配置如下:

interface Ethernet0/0
 ip address 10.1.1.3 255.255.255.0
ip igmp version 3

R3#show ip igmp interface e0/0
Ethernet0/0 is up, line protocol is up
Internet address is 10.1.1.3/24
IGMP is enabled on interface
Current IGMP host version is 3
Current IGMP router version is 3
IGMP query interval is 60 seconds
IGMP querier timeout is 120 seconds
IGMP max query response time is 5 seconds
Last member query count is 2
Last member query response interval is 1000 ms
Inbound IGMP access group is 10
IGMP activity: 3 joins, 0 leaves
Multicast routing is enabled on interface
Multicast TTL threshold is 0
Multicast designated router (DR) is 10.1.1.3 (this system)
IGMP querying router is 10.1.1.3 (this system)
Multicast groups joined by this system (number of users):
224.0.1.40(1)
R1加入232.1.1.1而且指定源
interface Ethernet0/0
ip address 10.1.1.1 255.255.255.0
ip igmp join-group 224.1.1.2
ip igmp join-group 232.1.1.1 source 10.1.1.3---指定可以從特性組播10.1.1.3源收的流量
驗證:
R1#show ip igmp groups detail
Flags: L - Local, U - User, SG - Static Group, VG - Virtual Group,
SS - Static Source, VS - Virtual Source
Interface: Ethernet0/0
Group: 232.1.1.1
Flags: L
Uptime: 00:05:36
Group mode: INCLUDE---加入了232.1.1.1,而且模式爲include模式
Last reporter: 10.1.1.1
Group source list: (C - Cisco Src Report, U - URD, R - Remote, S - Static,
V - Virtual, Ac - Accounted towards access control limit,
M - SSM Mapping, L - Local)
Source Address Uptime v3 Exp CSR Exp Fwd Flags
10.1.1.3 00:05:36 stopped stopped Yes L
Interface: Ethernet0/0
Group: 224.1.1.2---加入了普通組
Flags: L U
Uptime: 00:56:57
Group mode: INCLUDE---include
Last reporter: 10.1.1.1
Source list is empty---沒有指定源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章