文章目錄
複習回顧
- D類地址:224.0.0.0-239.255.255.255
- 所有設備的組播地址:224.0.0.1
- 路由器的組播地址:224.0.0.2
- OSPF使用的組播地址:224.0.0.5
- OSPF的DR、BDR使用:224.0.0.6
- RIP使用的組播地址:224.0.0.9
- PIM使用的組播地址:224.0.0.13
IP組播基礎
- 網絡中部署點到多點通信應用時
- 採用單播方式,網絡中傳輸的信息量與需要該信息的用戶量成正比,多份相同內容的信息發送給不同的用戶,對信源和網絡帶寬造成壓力
- 採用廣播方式,無需接受信息的主機也將會收到該信息,信息安全得不到保障,且會造成同一網段中信息氾濫
- 組播源只發送一份數據,數據在網絡節點間被複制、分發,且只發送給需要該信息的接收者
點到多點的應用
傳統點到多點
- 服務提供端以單個用戶爲單位提供服務
- 不同用戶與服務提供端的通信數據存在差異
新型點到多點
- 服務提供端以一組用戶爲單位提供服務
- 同組用戶與服務提供端的通信數據無差異
單播部署點到多點存在的問題
- 重複流量過多
- 消耗設備和了鏈路帶寬資源
- 難以保證傳輸質量
廣播部署點到多點存在的問題
- 地域範圍限制
- 安全性無法保障
- 有償性無法保障
組播部署點到多點的優勢
- 無重複流量
- 節省設備與帶寬資源
- 安全性高
- 有償性有保障
組播基本架構
- 組播源到路由器
- 組播源到第一跳(源端)路由器——組播數據的生成
- 第一跳(源端)路由器到最後一跳(接收端)路由器(組播網絡)
- 組播數據的轉發
- 最後一跳路由器到接收端
- 組播數據的接收
- 組播源IP和源MAC地址爲自身的IP和MAC
- 組播的目的IP爲組播地址(224.0.0.0-239.255.255.255)
- 組播的目的MAC爲
- MAC地址第8位(第一字節的最後一位)爲0則爲單播地址
- MAC地址第8位爲1爲組播地址
- MAC地址全F爲廣播地址
組播地址結構組成
組播IP地址
- 一個組播IP地址並不表示具體的某臺主機,而是一組主機的集合,主機聲明加入某組播組即標識自己需要接受目的地址爲該組播地址的數據
- IP組播常見模型爲ASM模型(任意源組播)和SSM(特定源組播)模型
範圍 | 含義 |
---|---|
224.0.0.0—224.0.0.255 | 爲路由協議預留的永久組地址 |
224.0.1.0—231.255.255.255 233.0.0.0—238.255.255.255 | Any-Source臨時組播地址(任意源組播) |
232.0.0.0—232.255.255.255 | Source-Specific臨時組播組地址(特定源組播) |
239.0.0.0—239.255.255.255 | 本地管理的Any-Source臨時組播組地址 |
224.0.1.0—238.255.255.255
相當於公網地址239.0.0.0—239.255.255.255
相當於私網地址
組播MAC地址
- IPv4組播MAC地址的高24位爲0x01005e,第25位爲0
組播IP與MAC的映射
- 需要組播地址與組播MAC地址的自動映射
- MAC地址的低23bit爲組播IP地址的低23bit
- D類(組播)IP地址的前四位固定爲1110,IP地址的後23位直接轉換爲組播的MAC地址
- IP地址位32位,除去固定的四位不變的IP地址和23位轉換爲組播MAC的地址,剩餘5位,所以有25=32個IP地址對應爲同一個組播MAC地址
IGMP協議原理及配置
- IGMP(Internet Group Management Protocol)因特網組管理協議,TCP/IP協議族中負責IP組播成員管理的協議。用來在接收者和與其直接相鄰的組播路由器之間建立、維護組播組成員關係
- 運行在最後一跳路由器到接收端之間
- IGMP協議作用:
- 主機側:通過IGMP協議向路由器通告組成員關係
- 路由器側:通過IGMP協議維護組成員關係
IGMPv1
- 普遍組查詢與響應
- 接收端向外發送IGMP成員關係報告,表明自己要加入的組播組
- 路由器週期性(60s)向子網內所有的主機(224.0.0.1)普遍組查詢報文,以確定需要哪些組播數據
- 接收端繼續回覆IGMP成員關係報告,表明還需要接受相關組的數據
- 響應抑制機制
- 普遍組查詢報文發送後會有最大響應時間(10s)
- 子網內的主機收到普遍查詢報文後,會隨機取一個0-10s的值
- 時間到期後,主機會向外發送成員關係報告
- 成員關係報告不僅會發給路由器,子網內的主機也會收到
- 其他需要加入相同組的主機收到其他主機的成員關係報告後,不會再發送成員關係報告
IGMPv1問題:組成員離開
- 靜默離開
- 當子網內的組成員離開後,路由器發送普遍組查詢報文,10s內沒有收到指定組的成員關係報告,路由器會停止接受相應組的數據報文
- 路由器不會刪除相應組的表項,保留130s
- 130s後仍然沒有收到子網內主機的需要該組的成員關係報告,就會刪除該組的表項
IGMPv1問題:查詢器選舉
- 查詢器選舉依賴於組播路由協議(PIM),IGMPv1沒有查詢器
- 普遍組查詢由查詢器發送
- PIM協議會在多臺路由器中選取DR
- DR設備成爲查詢器
- DR選舉:
- 優先級大的爲DR
- IP大的爲DR
IGMPv2
- IGMPv2的改進:組成員離開
- 當子網中的主機要離組時,會向224.0.0.2發送離開組消息報文
- 路由器收到離開組報文後,會向該組地址發送特定組查詢(會發送2次,間隔1s)
- 子網內該組的主機收到特定組報文後,發送成員關係報告
- 路由器如果沒有收到該組的成員關係報告,就會刪除該組的表項
- 普遍組查詢是查詢所有的組
- 特定組查詢只查詢特定的組
- IGMPv2的改進:查詢器選舉
- IGMPv2有獨立的查詢器選舉機制
- IP地址小的爲查詢器
- 非查詢器也會收到查詢器的普遍組查詢報文
- 非查詢器125s沒有收到查詢器的普遍組查詢,自身就會成爲查詢器
IGMPv3
- 指定源。只接受特定源發送的組播數據
- 接受端發送成員關係報告,指出希望加入或拒絕的某些組播源發送的數據
總結
- IGMP各版本之間的差異
機制 | IGMPv1 | IGMPv2 | IGMPv3 |
---|---|---|---|
查詢器選舉 | 依靠其他協議 | 自己選舉 | 自己選舉 |
成員離開方式 | 靜默離開 | 主動發送離開報文 | 主動發送離開報文 |
特定組查詢 | 不支持 | 支持 | 支持 |
指定源、組 | 不支持 | 不支持 | 支持 |
IGMP配置
實驗:如下拓撲:
- R1配置
----------------------------------------------
# 基礎配置
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip ad 192.168.1.254 24
----------------------------------------------
# 配置組播
[R1]multicast routing-enable //開啓組播功能
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]igmp enable //默認版本v2
[R1-GigabitEthernet0/0/0]igmp version 1 //修改版本
- PC端配置
IP:192.168.1.1
NETMASK:255.255.255.0
GATEWAY:192.168.1.254
- 配置IGMPv1
- PC加入組播,使用IGMPv1,輸入需要並加入的組播(目的)IP,目的MAC(不用計算,直接點擊即可)
undo stp enable
交換機關閉生成樹,方便抓包分析
- 報文分析
- 在R1上查看組,可以看到192.168.1.1請求加入239.1.1.1組
IGMPv1沒有普遍組查詢
- 在R1上配置pim,查看報文
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]undo igmp enable //關閉IGMP
[R1-GigabitEthernet0/0/0]pim dm //配置pim
[R1-GigabitEthernet0/0/0]igmp enable //開啓IGMP
[R1-GigabitEthernet0/0/0]igmp version 1 //使用IGMPv1
- 配置pim前需要先關閉igmp
- 通過運行pim,路由器會成爲查詢器,發送普遍組查詢報文
- 配置IGMPv2
# 關閉pim
[R1-GigabitEthernet0/0/0]undo igmp enable
[R1-GigabitEthernet0/0/0]undo pim dm
# 使用IGMPv2
[R1-GigabitEthernet0/0/0]igmp enable
[R1-GigabitEthernet0/0/0]igmp version 2
- 查看運行IGMP的接口信息
IGMPv2不需要運行pim,就會有查詢器
- PC使用v2版本,加入239.1.11.1組,查看IGMP組即相關報文
- 加組後在PC上離組,查看報文
- 配置IGMPv3
- PC端配置v3
類型 | 說明 |
---|---|
MODE_IS_INCLUDE | 增加 |
MODE_IS_EXCLUDE | 排除 |
CHANGE_TO_INCLUDE | 改變爲增加 |
CHANGE_IS_EXCLUDE | 改變爲排除 |
ALLOW_NEW_SOURCE | 允許新的源 |
BLOCK_OLD_SOURCE | 刪除某源 |
- IGMP路由表項
- (S,G)表項:特定的源發往特定的組
- (*,G)表項:任意源發往特定的組
IGMP Snooping
-
二層中組播數據轉發的問題:
- 組播數據在二層被泛洪
- 網絡資源浪費
- 存在安全隱患
-
IGMP Snooping原理:
- 通過偵聽組播路由器與主機之間交互的IGMP報文建立組播數據報文的二層轉發表項,從而管理和控制組播數據報文在二層網絡中的轉發
- 主機發送成員關係報告報文,交換機會將發送相同目的MAC報文的端口劃分到同一組
- 交換機接收到來自目的MAC的數據報文,直接轉發給相應的端口,其他的端口不會收到該數據報文
- 路由器有0接口,交換機也有,但是交換機的0口留給CPU
- 運行IGMP Snooping後,不會存在響應抑制機制
以上內容均屬原創,如有不詳或錯誤,敬請指出。