Multicast

1: 交換機的默認行爲是把多播幀向除源端口之外的所有端口擴散。Cisco執行專有的CGMP和非專有的IGMP Snooping,來協助管理網絡中的多播流量。

交換機洪泛多播流量的原因是在橋接表中沒有目的地址的表項。多播地址從不作爲源地址出現。

2:  默認情況下路由器不轉發多播流量,除非它們具有多播能力,並有一個多播路由選擇協議,例如DVMRPDistance Vector Multicast Routing Protocol)或PIM(Protocol-Independent Multicast)

 
一個網絡管理員爲一個應用分配一個多播第3層地址。接着從第3層多播地址中計算出第2層端口地址。配置一個多播應用時,NIC將端口地址加入它的有效MAC地址列表中。通常這個列表由內置的MAC地址和任何用戶配置的地址組成。只要工作站收到一個具有匹配的多播目的地址的幀時,接收者將幀發送給CPU

Layer 3 Multicast Address

<1>保留鏈路本地地址 (從不被Router轉發,且必須保持在本地的LAN網段上,並且一直以1的生存時間進行發送)

224.0.0.1    本子網中的所有系統

224.0.0.2    本子網中的所有路由器

224.0.0.5    OSPF DROther

224.0.0.6    OSPF DR

224.0.0.9    RIPv2 路由器

224.0.0.10   EIGRP路由器

224..0.0.12   DHCP Server/中繼代理

224.0.0.13   所有PIM路由器

224.0.0.22   IGMP

224.0.0.25   Router to SwitchSuch as:RGMP-路由器端口組管理協議)

<2>全球範圍地址 (用於組織間和跨越Internet的多播數據)

224.0.1.0 ~ 238.255.255.255

<3>受限範圍地址 (限制到一個本地組或組織)

239.0.0.0 ~ 239.255.255.255

<4>GLOP地址(保留給已有一個保留AS號的組織)

233.0.0.0 /8

域的AS號嵌入在233.0.0.8/8範圍的第2和第3個字節中。

例:AS 62010 被寫成16進制的F23A,分開兩個字節F23A的結果是十進制的24258,這提供給子網233.242.58.0,它全球保留給AS 62010使用.

Layer 2 Multicast Address

分配了一個第3層多播地址後,第2層多播地址會自動從這個IP地址中產生。

主機將IP地址後23比特複製到MAC地址的最後24位中,高比特爲0

MAC多播前3字節(24比特)是0x01-00-5E。這是爲多播保留的。
Layer3組播地址爲28 bits,Layer2組播地址爲23 bits,這樣layer3組播地址的5個bits被忽略。至使一個MAC多播對應32IP多播。即一個第2層多播地址對應32個第3層多播。
將layer3組播地址轉換爲layer2組播地址方式:
1>取出layer3組播地址的後23位
2>前邊加上layer2組播專用的 01.00.5e.
例:
224.0.0.1
1>後23位爲00.0001
2>前邊加上01.00.5e
3>結果爲:0100.5e00.0001


Layer 2 Multicast vs. Layer 3 Multicast Address
IP to MAC:
- write down 0100.5e and ignore the first (from the left) octet of the IP address
- If the second octet of the IP is > 128, then subtract 128 from it (to compensate for the ignored 24th bit)
- convert the three octets to hex and copy into the MAC address
MAC to IP
- Drop the 0100.5e
- Convert each pair of nybbles left into decimal
- The valid multicast groups are then {224-239}.{x1,y1}.x2.x3 where y1 = the first decimal number + 128

PC’s Multicast ProtocolIGMPv1,IGMPv2,IGMPv3

IGMP(主機成員協議)主要由多播主機使用,它通知本地多播路由器它們想加入一個特定多播組時並開始接收組流量。

使用通過IGMP獲得的信息,路由器基於每個接口維護一張多播組成員表。

Cisco IOS 11.3(2)T及以後的版本默認使用IGMPv2IGMPv3可用於Cisco IOS 12.0(15)S及以後的版本。

IGMPv1(隱式離開多播組)

IGMPv1消息類型:

²         主機成員查詢 (由路由器發起,默認爲60 s/t

²         主機成員報告

主機成員查詢消息在第3層中的目的地址:224.0.0.1;第2層地址:01-00-5E-00-00-01IGMP頭組地址:0.0.0.0,轉換爲網段上所有組的所有多播主機的查詢。IGMPv1不能針對特定組查詢

每個網段上只有一臺路由器發佈成員查詢消息。IGMPv1中,由DR發出查詢;IGMPv2中,該網段上有最低IP地址的多播路由器發出查詢。3個查詢後沒有特定多播組的成員報告,則路由器停止轉發這個組的多播分組。

每個網段上只有一臺主機發送主機成員報告。主機接收到成員查詢時,如果它想繼續接收這個多播組的多播幀,它等待一個10秒的隨機定時器過期後發送一個成員報告。如果在等待期間監控到同網段上另一個主機回覆了一個主機成員報告,則它取消定時器並抑制報告。這個行爲避免網段和路由器遭遇主機成員報告的洪泛。

IGMPv2(顯式離開多播組)

IGMPv2消息類型:

²         0x11 – 成員查詢 IGMPv2允許對一個特定組查詢)

²         0x12 – 版本1成員報告

²         0x16 – 版本2成員報告

²         0x17 – 離開組

路由器收到特定網段上的主機的離開組消息,不會立刻停止對該網段轉發多播分組。因爲它保存了一張活動在子網上的惟一組成員列表,而不是成員的個別主機,所以在收到主機離開組消息後,它會發送對該網段的一個特定多播組查詢,如果有其它機還想接收,它們會回覆一個成員報告;否則路由器會超時這個查詢分組,並停止轉發多播分組到這個網段上。

IGMPv1IGMPv2互操作:

²         路由器使用IGMPv1,主機混合使用IGMPv1IGMPv2,則主機必須使用IGMPv1。因爲IGMPv1路由器不理解IGMPv2的成員離開消息。

²         路由器使用IGMPv2,主機混合使用IGMPv1IGMPv2,則路由器只發送IGMPv1。因爲IGMPv1主機不理解特定組的成員查詢消息。如果IGMPv2主機發送了成員離開消息,路由器必須忽略它,因爲它必須仍然發佈常規的查詢以防IGMPv1的成員仍在網段中。

²         IGMPv1IGMPv2路由器在同一網段中出現,IGMPv2路由器必須被配置爲IGMPv1,且IGMPv1路由器不會發覺到IGMPv2路由器的存在。

IGMPv3(源過濾支持)

它允許多播主機通知路由器它想接收哪個組的多播分組,以及期望這個分組來自哪個源,進而達到保留帶寬的目的。

IGMPv3支持明確定義主機希望接收的分組源,可以使用以下2種模式通知作爲一個多播組的成員:

²         Include Mode:主機宣佈作爲一個多播組的成員,並指定它想要接收的分組源地址列表。

²         Exclude Mode:主機宣佈作爲一個多播組的成員,並指定它不想接收的分組源地址列表。爲了接收所有源的多播分組(IGMPv2默認),可以使用一個空Exclude Mode列表。

Switch’s Multicast Protocol

²         IGMP SnoopingLAN交換機檢查或“嗅探”主機和路由器之間的IGMP分組中的一些第3層信息。將加入的主機的端口號放到交換機的多播表項,離開的主機從表中移除。

²         CGMPCisco專有的協議,CGMP基於客戶/服務器模型。路由器被認爲一個CGMP服務器,交換機則是客戶。IP多播路由器查看所有IGMP分組,因此當特定主機加入或離開多播組時可以通知交換機。交換機於是使用這個信息來構建一個轉發表。

IGMP Snooping

IGMP控制消息作爲多播分組發送,不能從第2層多播數據中區分出多播數據與多播控制消息,所以交換機必須檢查每個多播分組來確定其是不是控制消息。當數據高速傳輸時,在低端交換機上啓動IGMP Snooping會嚴重影響性能。

IGMP Snooping默認是全局啓動的,它也可以基於每個VLAN啓動或關閉。

IGMP Snooping Configuration

Swtich(config)#ip igmp snooping                                      //全局開啓IGMP Snooping

Switch(config)#no ip igmp snooping vlan 2                             //關閉VLAN上的IGMP Snooping

Switch(config)#ip igmp snooping vlan 1 mrouter serial 0/1              //指定到多播路由器的下一跳接口

在端口上檢測到IGMPv2的離開消息後,無需發送特定多播組查詢,立即從IP多播組中刪除該端口

Switch(config)#ip igmp snooping vlan 1 immediate-leave              

Switch#show ip igmp snooping

Switch#show mac-address-table multicast [vlan vlan-id] [user | igmp-snooping] [count]



Multicast Packet Management

多播地址標識一個特定的傳輸會話,而非一個特定的物理目的。

分發樹(Distribution Tree):指定源子網和包含多播組成員的每個子網間的一條惟一轉發路徑。

²         源樹(SPT):根是多播流量的源,分支形成一棵到接收者的最短路徑樹。專用符號:(S,G

²         共享樹(CBT):根在網絡中某個選定的匯合點(RP)的公共根。專用符號:(*,G

多播TTL門限:

多播TTL字段控制分組的生存時間。TTL功能防止分組由於路由選擇的錯誤而永遠循環下去。

啓用多播的路由器爲每個接口分配一個TTL門限,默認爲0,即轉發所有的多播分組。比較分組TTL值和接口門限,TTL值大於接口門限的分組被轉發,路由器在將分組從接口發送出去時將分組的TTL值減1TTL值等於或小於門限的分組被丟棄。

TTL接口門限可配置的範圍:0 255

反向路徑轉發(Reverse Path Forwarding):對照單播路由表檢查來源是否正確

<1>路由器在單播路由選擇表中查找源地址來決定它是否在位於正確的接口上到達。

<2>如果分組位於的接口上到達,RPF檢查成功,轉發分組。

<3>如果RPF檢查失敗,則丟棄分組。

在多臺路由器與一個LAN網段相連的多層交換網絡中,只有一臺PIM指定路由器將來自信源的多播數據包轉發到與出站接口相連的接收方。

Router’s Multicast Protocol

PIM不依賴與任何的IP路由選擇協議,不維護獨立的多播路由表,只使用已有的路由表執行RPF檢查。

協議無關多播密集模式(Protocol-Independent Multicast Dense-Mode):

PIM-DM假定多組成員密集分佈在整個網絡中並且帶寬充足,且大多數主機都屬於這個組。通過在網絡中每3分一次的洪泛與剪枝來建立和維護分發樹。Dense-Mode使用SPT以“推原則”來發送(SG)多播分組。即不管你是否需要,先發送給你,在你不要時,進行剪枝。

協議無關多播稀疏模式(Protocol-Independent Multicast Sparse-Mode):

PIM-SM被認爲是更有效的多播解決方案,它是部署Auto-RP時推薦使用的模式。

PIM-SM假定多播成員稀疏分佈在整個網絡中,並帶寬不太充裕。注意:稀疏並不意味着成員少,而是它們的分佈廣泛。這時洪泛會嚴重的浪費帶寬,進而可能引發其它的性能問題。Sparse-Mode使用CBT從一棵空樹開始,以一種“拉原則”來發送(*G)多播分組。即你需要時才發送給你,前提必須註冊

PIM-SM模式下,發送者首先把數據發送到RP(匯合點),當一個接收者想接收數據時,到RP去註冊。當數據流從發送者到RP再到接收者時,路徑上的路由器會自動優化路徑爲SPT來移去不必要的跳。

PIM DR

如果在兩臺PIM路由器之間有一條直接連接,則它們是鄰居。

DR選舉僅在BMA網絡中,P2P鏈路上不需要,因爲所連接的路由器是直連主機系統的有效DR

DR的選舉過程對於PIM-DMPIM-SM是一樣的。連接到BMA網絡上的每臺PIM路由器發佈週期的PIM路由器查詢到LAN上,具有最高IP地址的PIM路由器成爲LANDR

BMA 網絡上,DR用來輪詢LAN的主機組成員,但是所有的PIM路由器都收到來自主機的應答。

Auto-RP

大型網絡中手式配置多個多播匯合點可能導致不一致的RP配置,並引起連接問題。Auto-RP默認關閉。

Auto-RPCisco私有的協議,它在一個運行PIM-SM網絡中自動發佈組到RP的映射。它也允許根據組參與者的位置在不同RP之間進行負載均衡和RP分配。

RP Candidate發送的CISCO-RP-ANNOUNCE通告消息到RP映射代理(224.0.1.39),然後RP映射代理髮送CISCO-RP-DISCOVERY發現消息(包括一致的組到RP的映射關係)到所有DR224.0.1.40)。這種方法允許所有DR自動發現使用哪一個RP連接接收者與發送者。

Multicast Routing Protocol Configuration

注意:正常使用多播並完成RPF檢查,必須在每個接口啓動多播。

全局啓用ip多播路由選擇:

Router(config)#ip multicast-routing

在接口上啓動PIM

Router(config)#interface serial 0/1

Router(config-if)#ip pim sparse-mode

Router(config-if)#ip pim dense-mode

Router(config-if)#ip pim sparse-dense-mode

更改IGMP版本:

Router(config-if)#ip igmp version { 3 | 2 | 1 }

定義接口TTL門限:

Router(config-if)#ip multicast ttl-threshold ttl

手動指定RP地址:

Router(config)#ip pim rp-address rp-address

啓動Auto-RP,並做爲RP Candidate

Router(config)#ip pim send-rp-announce type number Scope ttl group-list access-list-number

配置爲RP映射代理:

Router(config)#ip pim send-rp-discovery scope ttl

讓路由器加入一個多播組,使其響應一個多播分組:

Router(config)#ip igmp join-group group-address

顯示PIM鄰居:

Router(config)#show ip pim neighbor

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