IP多播技術介紹(二)

2、MOSPF(Multicast OSPF)

開放式組播最短路徑優先(MOSPF)由FRC1584爲OSPF組播的擴展,是OSPFV2單播路由協議的一個擴展。

組播擴展 OSPF(MOSPF)在原 OSPF 第二版本的基礎上作了增強使之支持 IP 組播路由。這種改進具有向後兼容性,當轉發一般的(單播)IP 數據通信量時,具有組播能力的路由器可以和無組播能力 OSPF 路由器互操作。

MOSPF 是通過在 OSPF 鏈接狀態通告中包含組播信息而工作的。一個 MOSPF 路由器學到哪個局域網(LAN)上的哪個組播組在活動。MOSPF 爲每對源/組建立一個分配樹並且爲發送到組的活動源確定一個樹。樹的狀態被緩存,並且當鏈接狀態發生變化或高速緩存器超時的情況,必須重新確定樹。

MOSPF 提供了通過因特網路由器在兩個 IP 網絡之間轉發組播數據包的能力。MOSPF 轉發一個組播數據包是建立在該數據包的源和目的地址兩方面的基礎上。OSPF 鏈路狀態數據庫提供了一套關於自治系統(AS)拓樸的完整描述。通過加入新的鏈路狀態通告類型,即組成員(LSA),在該數據庫中可以查到所有組播組成員的位置。如此,再通過建立以數據包源爲根的最短路徑樹,可以計算出組播數據包的路徑。樹上所有不包含組播的分支都被剪除。當接收到第一個數據包時,也就初步形成了剪除過的最短路徑樹。最短路徑的計算結果被緩存起來以供具有相同源和終端的後續數據包使用。

MOSPF 被用於單個自治系統內部。當需要在整個因特網上支持 IP 組播時,MOSPF 就得與用於自治系統間的組播路由協議如 DVMRP 共同使用。

運行 MOSPF 的路由器只能工作於使用 MOSPF 的 internet 網絡中,但可以與非組播 OSPF 路由器混合使用。當轉發一般的(單播)IP 數據庫通信量時,兩種類型的路由器可以交互操作。在 MOSPF 中,與基本的 OSPF 協議中一樣,數據包(組播或單播)被原樣發送 ,當它們經過自治系統時,不再進行封裝或解裝。

組成員關係LSA攜帶標準的LSA頭部,其類型號爲6,只在MOSPF指定路由器纔會發送組成員關係LSA。

clip_image002

鏈路狀態ID(link state ID):攜帶被宣告多播組的地址

宣告路由器(Advertising Router):是多路訪問網絡中MOSPF指定路由器的路由器ID,因爲只有指定路由器才能產生類型6的LSA

頂點類型(vertex type):定義了目的地是一個路由器(類型=1),還是一個轉接的網絡(類型=2),如果發起路由器正在運行的某些應用程序需要其成爲多播組成員,那麼就指定類型1,轉接網絡指的是發起路由器直連的網絡,只有穿越該網絡,多播包才能到達所連接的組成員。

頂點ID(Vertex ID):發起路由器的路由器ID

經擴展、支持MOSPF的路由器LSA(類型1)的格式,與OSPF基本相同,只是Rtype項目中有一個W比特由區域間多播轉發路由器和AS間的多播轉發路由器進行設置,以便向區域中的其它MOSPF路由器指示其爲萬能多播轉發路由器。

clip_image003

l bit B ― B 即指邊界。將路由器設置爲一個區域邊界路由器。這些路由器在 OSPF 區域內轉發單播數據流量。

l bit E ― E 即指外部。將路由器設置爲一個 AS 邊界路由器。這些路由器在自治系統間轉發單播數據流量。

l bit V ― V 即指虛擬。將路由器設置爲活動虛擬鏈路的終端,而將區域當作 Transit 區域使用。

l bit W ― 將路由器設置爲 Wild-Card 組播接收端。這些路由器接收所有組播數據報,而不管目的地是什麼。在某些時候,區域內組播轉發者和 AS 內組播轉發者就是 Wild-Card 組播接收端。

MOSPF 數據包格式與 OSPF 第二版相同,但在 OSPF Hello 數據包、Database Description 數據包以及所有鏈路狀態廣告中另加了 Option 字段。該新選項指出了路由器或網絡的組播容量。但所有非組播路由器忽略該新選項。

clip_image005

l T-bit ― 描述路由器的 TOS 容量。

l E-bit ― 由於外部鏈路廣告沒有被擴散到 OSPF 子區域,E-bit 確保所有 Stub 區域的會員在區域配置上達成一致。

l MC-bit ― 描述 OSPF 路由選擇域的不同部分的組播容量。

3、CBT(Core-Based-Trees)

CBT(Core-Based-Trees)核心樹,是和種與協議無關的、稀疏模式的共享樹。DVNRP與MOSPF有兩個共同的侷限:

l 都是密集模式的協議,不能在稀疏拓撲中有很好的擴展性。當網絡中組員的數量相對總的主機數要少很多,且組員分佈於整個網絡中,DVMRP和MOSPF都會消耗大量的網絡資源才能到達組員。很多資源消耗在用於計算的開銷和爲每一個以多播源爲根的樹保持狀態。

l 兩個均受限於以單播的路由協議來判斷多播樹——DVMRP是基於RIP的協議,而MOSP是基於OSPF的。

CBT可以用於下層任何路由協議,而不是爲了多播加一個新的協議,從而減少了開銷。CBT樹根植於一個核心CBT路由器,而非源網絡,這個核心可以被放置在網絡中的任何位置,許多個組的樹都可以根植在一個核心上,以使協議更適於稀疏多播拓撲。

目前CBT有3個版本,CBTv2在RFC2189中描述。CBTv2代替CBTv1,CBTv3正處於提議狀態。這3個版本的CBT都試驗性的,沒有一個被廣泛使用。CBTv2和CBTv3都不能與CBTv1版本兼容。

CBT使用了以下9種類型消息。

l JOIN_REQUEST

l JOIN_ACK

l ECHO_REQUEST

l ECHO_REPLY

l QUIT_NOTIFICATION

l FLUSH_TREE

l Candidate Core Advertisement

l Bootstrap

l HELLO

CBT消息以IP頭封裝,它的協議是7,包傳送的目的地址爲224.0.0.15(除了在單播特殊情況下),TTL設爲1。如下圖爲CBT消息的報頭。

消息報頭

clip_image006

版本(Version):指定CBG版本號

類型(type):消息類型,具體如下表所示

Type

Message

0

HELLO

1

JOIN_REQUEST

2

JOIN_ACK

3

QUIT_NOTIFICATION

4

ECHO_REQUEST

5

ECHO_REPLY

6

FLUSH_TREE

7

Bootstrap

8

Candidate Core Advertisement

地址長度(address length):定義了屬地海戰上包含的單播或多播的地址長度,以字節爲單位

檢驗和(chechsum):採用標準算法

HELLO消息

HELLO消息用於選舉多播網絡中的指定路由器,它們也由DR每隔60s發送一次,以保持存活。

clip_image007

優先權(preference):取值爲0~255,1~254表示由發起路由器變爲DR的合格程序,優先權值越低就越合格。值爲0表示這個HELLO消息由DR產生。

可選項(option type):定義了可選項值中的可選類型。BR產生的HELLO消息的可選類型爲0.

選項長度(option length):可選項值的長度,以字節計

可選項值(option value):可變長,用於承載可選項值,由BR產生的HELLO消息的可選項爲0。

JOIN_REQUEST消息類型

當路由器想要嫁接到CBT樹中時發送的信息。

clip_image009

組地址(group address):要加入的組的多播地址

目標路由器(target router):這個組的核心路由器地址

發起路由器(originating router):爲產生這個消息的路由器的地址

可選項類型(option type)、可選長度(option length)、可選項值(option value)與HELLO消息中定義相同。

JOIN_ACK消息

核心路由器或嫁接多播樹的路由器以JOIN_ACK消息來響應JOIN_REQUEST消息。

clip_image010

組播地址(group address):加入組的多播地址

目標路由器(target router):爲JOIN_ACK發向的那個路由器的地址

可選項類型(option type)、可選長度(option length)、可選項值(option value)與HELLO消息中定義相同。

QUIT_NOTIFICATION消息

此消息是向父路由器發送的,以請求從一個特定的多播樹剪除。

clip_image011

組地址(group address):退出的組的多播地址

發起子路由器(originating child router):發起這個消息的路由器的地址

ECHO_REQUEST消息

子路由器有義務維護父路由器的鏈路狀態,子路由器每隔60s發送ECHO_REQUEST消息來完成這個任務。

clip_image012

ECHO_REPLY消息

父路由器以ECHO_REPLY消息來響應子路由器的ECHO_REQUEST消息

clip_image013

發起父路由器(originating parent router):消息發起的地下

組地下(group address):一個或多個列出地址的項父路由器爲子路由器轉發這些組的包。

FLUSH_TREE消息

當路由器失去與父路由器連接,它向下遊子路由器發送這個消息,子路由器收到FLUSH_TREE消息後,將清除所有列在這個消息中的多播組的相關信息。

clip_image015

與支持SPT的協議相比,從路由器創建的組播狀態的數量來看,CBT的最大優點是效率更高。在具有大量源和組的網絡中能把組狀態最小化爲O(G)。然而,在網絡延遲存在時,這種高效率導致對SPT的支持不夠。在CBTV2中維護的簡單(*,G)狀態不能很好處理非成員發送或域間邊界路由器。

4、PIM協議(Protocol Independent Multicast)

DVMRP同單播的距離向量協議有共同的特徵,那就是很容易實現——所需要的工作僅僅是把它啓動,但其簡單性將帶很的開銷,除了在小型的、寬帶的網絡中有較密集的組員的情況下,這個協議都存在擴展性的問題。

MOSFP把鏈路狀態的優點帶入了路由表中,不過代價是設計複雜性的增加.MOSPF基於源樹使用協議不適於稀疏的拓撲,由於這個侷限,許多網絡設計者不願意在MOSPF較爲複雜的拓撲需求上花費很多。

MOSFP是一個單播協議的擴展,所以不需要單獨的單播協議,它不能獨立於OSFP運行。

CBT與協議真正無關,它通過查詢單播的路由表找到單播的目的地址,而不關心什麼單播協議來維護這個路由表,CBT在稀疏拓撲中可以擴展,因爲它還不成熟,所以實際應用對它的興趣很有限。

PIMv2消息格式

PIMV2消息封裝在IP包頭中,協議號103,除了某些情況下用單播的消息外,PIMV2的IP目的地址是保留的多播地址224.0.0.13,TTL值設爲1。

PIMV1也很常見,這個版本的IP協議號爲2,使其成爲IGMP協議的一個子集。版本1使用多播地址224.0.0.2。

PIMV2消息頭

所有PIM消息均有標準的包頭,如下圖所示:

clip_image016

版本號(version):定義版本號

類型(type):定義了包頭後的PIM消息類型,如下表所示:

Type

Message

0

Hello

1

Register (used in PIM-SM only)

2

Register-Stop (used in PIM-SM only)

3

Join/Prune

4

Bootstrap (used in PIM-SM only)

5

Assert

6

Graft (used in PIM-DM only)

7

Graft-Ack (used in PIM-DM only)

8

Candidate-RP-Advertisement (used in PIM-SM only)

校驗和(chechsum):一個標準IP風格的檢驗和

保留(reserved):全爲0,接收時忽略

HELLO消息格式

用於對鄰居的發現和鄰居的生存保持,這個消息默認爲每30秒發送一個。
clip_image018

可選類型(option type):定義了可選項值中的可選項類型,當前,只有可選項類型1,它定義可選項類型爲保持時間,2~16是保留的。

可選項長度(option length):定義了可選項值的長度,以字節爲單位。當可選項值爲保持時間(可選類型爲1)時,可選值長度爲2

可選項值(option value):可變長度的項,能裝下可選項類型中定義的任何值。保持時間(可選項類型=1,可選長度=2)爲路由器在宣佈鄰居無效前,等待從它發出的HELLO消息的時間,保持時間爲HELLO間隔的3.5倍。

下圖爲採集到的HELLO報文。

clip_image020

Register(註冊)消息格式

這個消息只用於PIM-SM,是從源DR向RP用單播發送的一個消息,它承載着從源發出的初始多播包。就是說,在還沒有建立從源DR到RP的SPT之前,用Register消息把多播流量從源傳送到RP。

clip_image021

校驗和(checksum):在register消息裏,只計算消息頭,而不包括數據部分

B爲邊界比特,如果消息發起者爲一個直連着源的DR,那麼這個比特設爲0,如果源爲PIM多播邊界路由器(PMBR),則這個比特設爲1。

N爲空註冊比特。DR在註冊抑制計時器超時前查找RP時設置這個比特爲1。

多播數據包爲來自源的一個多播包,它通過register消息傳到RP。

Register Stop(註冊終止)消息格式

這個消息用於RP響應DR產生的Register消息,此消息在兩種情況下使用

RP通過SPT收到多播,而不再需要收到register消息封裝的多播消息

沒有直連的,或連到SPT、RPT上的組員等待RP轉發這個包。

clip_image022

經編碼的多播地址(encoded group address):是多播組的IP地址,對於這個地址,接收者要停止發送register消息

經編碼的單播地址(encoded unicast source address):爲多播源的IP地址,這頂也可以被(*,G)路由條目定義爲全0,作爲通配的源地址。

JOIN/PRUNE(加入/剪除)消息格式

這個消息將向上遊RP或多播源發送,用於加入或退出RPT或SPT,這個消息由多播地址列表組成。對於每一個多播地址,有一個或多個源地址列表,這些列表共同定義了要加入和退出的(S,G)與(*,G)路由條目。

clip_image023

經編碼的單播上游鄰居地址(encoded unicast upstream neighbor address):是RPF或上游鄰居的地址,這個消息將發送到這個地址上。

多播組數目(number of groups)定義了這個消息裏面包含的多播組的數目。

經編碼的多播組地址(encoded multicast groups address):定義了多播組的IP地址。

加入的多播組的數目(number of joined sources):定義了在這個多播組地址中列出的“經編碼的加入多播源地址”的數目。

剪除的多播源的數目(number of pruned sources):定義了這個多播地址中列出的“經編碼的剪除的多播源地址”的數目。

經編碼的加入多播地址(encoded joined source address):定義(S,G)對的源地址或(*,G)對的通配置地址。(*,*,RP)三元組的兩個通配符也可在此定義。除了源地址外,這一項中還規定了3個標識。

S爲稀疏標識比特,這個比特設爲1表示PIM-SM,用於與版本1的兼容

W爲通配(WC)比特。這個比特設爲1,則經編碼的加入多播源地址代表(*,G)或(*,*,RP)路由條目中的通配符。當它設爲0時,經編碼的加入多播源地址代表(S,G)路由條目中的源地址,當向RP發送了JOIN消息,W比特必須設爲1.

R爲RPT比特,當這個比特設爲1時,將向RP發送一個JOIN消息。當這個比特爲0地,向多播源發送JOIN消息。

經編碼的剪除的多播源地址(encoded pruned source address):定義了被剪除的多播源地址。這個編碼與經編碼的加入多播源地址相同,S、W、R比特同樣與加入的地址一樣,適用於被剪除的地址。

下圖爲採集到的報文。

clip_image025

Bootstrap(引導)消息格式

它由自舉路由器(BSR)每60秒產生一個,擴散到PIM-SM域中,以保證一個組的所有路由器判斷的RP相同,這個消息包含了一個或多個多播地址的列表,對於每一個組地址,都有一個候選RP及它們的優先權的列表,這個列表爲這個組的RP集。收到消息的路由器用同樣的算法從C-CP列表中算出這個組的RP。這個算法保證了PIM域中的路由器能得出相同的RP地址。

clip_image026

分段標籤(fragment tag):用於bootstrap消息必須分爲多個部分的情況。這個標籤爲一個隨機產生的數,相同消息的片段分配同一個標籤。

HASH掩碼長度(hash mask length):用於hash算法的掩碼的長度。

BSR優先權(BSR Priority):取值0~255,它定義了發出這個消息的BSR的優先權。有最高優先樹的C-BSR會成爲BSR。

經編碼的單播BSR地址(encoded unicast BSR address):這個域的BSR的地址

RP計數(RP count):定義了對一個多播組列出的C-RP的總數,也就是RP集的大小。對RP集大小的描述很重要。因爲如果bootstrap消息是分段的,一個分段丟失了,那麼在PIM域中對RP的判斷可能會不一致,因此,如果收到的RP集中的RP數目與RP數目不符,則整個RP集會被丟棄。

分段RP計數(fragment RP count):定義了對於某個組在這個分段中的C-RP的數目。

經編碼的單播RP地址(encoded unicast RP address):爲C-RP的IP地址。

RP保持時間(RPm holdtime):一個BSR在把一個C-RP從RP集中刪除前等待C-RP發出Candidate-RP-Advertisement消息的時間,這個保持時間爲150s。

RP優先權(PRm priority):取值0~255,用於選擇RP的算法中,最高的優先權爲0。

Assert(聲明)消息格式

這個消息用於在多路訪問網絡中選舉一個指定的轉發路由器,PIM路由器在它的輸出接口上收到多播包之後,會認定該數據鏈路層層上連接了另一臺正在轉發該多播組流量的路由器,因而該PIM路由器會發送一條Assert消息,以便讓共享該多路接入網絡的其它路由器能確定由誰負責轉發該多播組的流量。

clip_image027

已編碼的組地址(encoded group address):這個包的多播IP地址,這個地址觸發了Assert消息。

經編碼的單播源地址(encoded unicast source address):觸發Assert消息的多播包的源地址。

度量優先組(metric preference):分配給提供到源的路由的單播路由器的優先權值。這個值與管理距離的使用相同,在比較不同路由協議發現的路由時提供一致的量度。

下圖爲採集到的報文。

clip_image029

Graft(嫁接)消息

PIM-DM路由器向上遊鄰居發出PIMV2 Graft消息,請求再次加入到以剪除的樹中。其消息格式與JOIN/PRUNE消息格式類型相似,類型爲6。

下圖爲採集到的報文。

clip_image031

Graft(嫁接確認)消息

PIM-DM路由器向下遊鄰居發送PIMv2 graft-ack消息,以響應其Graft消息。其消息格式與JOIN/PRUNE消息格式類型相似,類型爲爲7。

下圖爲採集到的報文。

clip_image033

Candidate-RP-Advertisement(候選RP宣告)消息格式

候選RP向BSR週期性單播發送Candidate-RP-Advertisement消息。BSR用於這個消息中的信息來建立RP集,這個RP集通過bootstrap消息域中的有的PIM-SM路由器來對外宣告。

clip_image034

前綴數目(prefix count):定義了包括在這個消息中的多播組地址的數目,如果發起消息的是一臺多播域中所有多播組C-RP,則前綴數目爲0

優先權(priority):取值0~255,定義了發起C-RP的優先權,這個值被用於選擇RP的算法中,優先權與其值的大小相反:0爲最高優先權,255爲最低。

保持時間(holdtime):這個消息有效的時間

經編碼的單播RP地址(encoded unicast RP address):爲C-RP的地址,這個地址是路由器一個接口的IP地址,這個地址通常爲loopback地址。

經編碼的組地址(encoded group address):定義一個或多個多播組的地址,對於這個多播組,消息發起者爲一個候選RP。

下圖爲採集到的報文。

5、PIM-DM(Protocol Independent Multicast Dense Mode)

PIM-DM使用了5個PIMv2消息。

l Hello

l Join/Prune

l Graft

l Graft-Ack

l Assert

在 PIM-DM 域中,運行 PIM-DM 協議的路由器週期性的發送 Hello 消息,發現鄰接的 PIM 路由器,進行葉子網絡、葉子路由器的判斷,並且負責在多路訪問網絡中選舉指定路由器(DR)。

PIM-DM 協議使用下面的假設:當組播源開始發送組播數據時,域內所有的網絡節點都需要接收數據,因此採用“擴散-剪枝”的方式進行組播數據包的轉發。組播源開始發送數據時,沿途路由器向除組播源對應的 RPF 接口之外的所有接口轉發組播數據包。這樣,PIM-DM 域中所有網絡節點都會收到這些組播數據包。爲了完成組播轉發,沿途的路由器需要爲組 G 和源 S 創建相應的組播路由項 (S, G)。 (S, G) 路由項包括組播源地址、組播組地址、入接口、出接口列表、定時器和標誌等。

如果網絡中某區域沒有組播組成員,該區域內的路由器會發送剪枝消息,將通往該區域的轉發接口剪枝,並且建立剪枝狀態。剪枝狀態對應着超時定時器。當定時器超時時,剪枝狀態又重新變爲轉發狀態,組播數據得以再次沿着這些分支流下。另外,剪枝狀態包含組播源和組播組的信息。當剪枝區域內出現了組播組成員時,爲了減少反應時間,協議不必等待上游剪枝狀態超時,而是主動向上游發送嫁接報文,以使剪枝狀態變爲轉發狀態。

Prune消息的覆蓋

如下圖所示,運行PIM-DM的網絡環境中,一臺單獨的路由器有多個多播下游鄰居,上游路由器Mercury,把組內的多播包擴散到通過LAN連接的三臺路由器上,copper路由器的輸出接口表爲空,於是向mercury發送一條剪除消息,但是sliver有一連接的組員,於是希望收到多播報文。

clip_image036

Mercury根據hello消息明確知道它的下游有兩個鄰居。但hello消息中並沒有描述任何路由相關性信息,因而當copper發送prune消息時,mercury不知道是否要剪除該LAN接口。

PIM-DM利用剪除覆蓋進程解決這個問題,copper向mercury發送了一條prune消息,但mercury的地址也被編碼在該消息中,攜帶該消息的IP包被髮送到ALL PIM ROUTERS地址224.0.0.13.當mercury接收到該prune消息後,並不立即剪除該接口,而是設置一個3秒定時器,與此同時,sliver也接收到了該prune消息,看到消息中所要剪除的多播組是其希望繼續接收的多播流量的多播組,而且該消息已經被髮送給正在轉發多播流量的其上游鄰居。

clip_image038

因而sliver向mercury發送了一條join消息。Sliver就覆蓋了由copper發送的prune消息,只要mercury在3秒定時器到期前收到一條join消息,就不會中斷多播流量。

PIM-DM指派路由器

PIM-DM會在多路接入網絡中選舉一臺指派路由器,需要注意的是,PIM-DM協議本身不需DR,只是由於IGMPV1沒有查詢進程,爲了管理IGMP查詢,IGMP需要依賴該路由協議來選舉DR。

DR選舉進程很簡單,每臺PIM-DM路由器每隔30秒就發送一條PIMV2 hello消息或一個PIMV1 query消息,以進行鄰居發現,在多路接入網絡上,IP地址最大的PIM-DM路由器將成爲DR,其他的路由器則監控DR發出的hello包,如果在105秒內都沒有收到該hello包,則認爲DR已失效,從而選舉一個新的DR。

PIM轉發路由器選舉

如下圖所示,在運行PIM-DM的網絡環境中,mercury和copper都有一條去往多播源172.16.1.1的路由,且都有一個下行接口去住多播組239.70.49.238的成員。如果兩臺路由器都轉發相同的多播流量到相同的網絡上,那麼網絡效率會非常低下。

clip_image040

爲了防止這種情況的發生,PIM路由器將在共享網絡上選擇一臺轉發路由器。由於PIM沒有自己的路由協議,因而需要利用Assert(聲明)消息來選擇轉發路由器。

clip_image042

當路由器在出站接口上接收到一個多播包時,會向網絡發送一條Assert消息,消息中包含了多播源的地址和多播組的地址、去往多播源的單播路由器的度量值以及單播路由協議用來發現該路由的度量優先值(管理距離)。這兩臺路由器會比較這些信息,根據下面的規則來確定轉發路由器。

l 所有宣告的度量優先值最低的路由器爲轉發路由器,如果這些路由器是通過不同的單播路由協議來發現這些去往多播源的路由,那麼這些路由器僅宣告不同的度量優先值。

l 如果度量優先值相等,那麼所宣告的度量值最低的路由器爲轉發路由器。也就是說,最靠近多播源的路由器就成爲轉發路由器。

l 如果度量優先值和度量值都相等,那麼網絡中IP地址最大的路由器就是轉發路由器。

由轉發路由器負責繼續將多播流量轉發到多路接入網絡中,其他的路由器則停止轉發該多播流量,並從各自的出站接口上刪除該多路接入接口。

下面是配置 PIM-DM的兩個實例。

實例1:在多路訪問的網絡環境

如下拓撲圖所示:

clip_image044

具體配置如下所示:

R1#sh running-config

Building configuration...

Current configuration : 1106 bytes

!

version 12.4

service timestamps debug datetime msec

service timestamps log datetime msec

no service password-encryption

!

hostname R1

!

boot-start-marker

boot-end-marker

!

!

no aaa new-model

!

resource policy

!

ip subnet-zero

ip cef

!

!

ip multicast-routing

!

!

interface FastEthernet0/0

ip address 10.1.1.1 255.255.255.0

ip pim dense-mode

duplex half

!

interface Ethernet1/0

ip address 172.16.1.1 255.255.255.0

ip pim dense-mode

duplex half

!

interface Ethernet1/1

ip address 172.16.2.1 255.255.255.0

ip pim dense-mode

duplex half

!

interface Ethernet1/2

no ip address

shutdown

duplex half

!

interface Ethernet1/3

no ip address

shutdown

duplex half

!

router ospf 10

log-adjacency-changes

network 10.1.1.0 0.0.0.255 area 0

network 172.16.1.0 0.0.0.255 area 0

network 172.16.2.0 0.0.0.255 area 0

!

ip classless

no ip http server

no ip http secure-server

!

!

!

logging alarm informational

!

control-plane

!

!

!

gatekeeper

shutdown

!

!

line con 0

exec-timeout 0 0

stopbits 1

line aux 0

stopbits 1

line vty 0 4

login

!

!

End

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

R2#sh running-config

Building configuration...

Current configuration : 1042 bytes

!

version 12.4

service timestamps debug datetime msec

service timestamps log datetime msec

no service password-encryption

!

hostname R2

!

boot-start-marker

boot-end-marker

!

!

no aaa new-model

!

resource policy

!

ip subnet-zero

ip cef

!

!

!

!

ip multicast-routing

!

!

!

!

interface FastEthernet0/0

ip address 172.16.3.1 255.255.255.0

ip pim dense-mode

duplex full

!

interface Ethernet1/0

ip address 172.16.1.2 255.255.255.0

ip pim dense-mode

duplex half

!

interface Ethernet1/1

no ip address

shutdown

duplex half

!

interface Ethernet1/2

no ip address

shutdown

duplex half

!

interface Ethernet1/3

no ip address

shutdown

duplex half

!

router ospf 10

log-adjacency-changes

network 172.16.1.0 0.0.0.255 area 0

network 172.16.3.0 0.0.0.255 area 0

!

ip classless

no ip http server

no ip http secure-server

!

!

logging alarm informational

!

!

!

control-plane

!

!

!

!

gatekeeper

shutdown

!

!

line con 0

exec-timeout 0 0

stopbits 1

line aux 0

stopbits 1

line vty 0 4

login

!

!

End

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

R3#sh run

Building configuration...

Current configuration : 1042 bytes

!

version 12.4

service timestamps debug datetime msec

service timestamps log datetime msec

no service password-encryption

!

hostname R3

!

boot-start-marker

boot-end-marker

!

!

no aaa new-model

!

resource policy

!

ip subnet-zero

ip cef

!

!

!

!

ip multicast-routing

!

!

interface FastEthernet0/0

ip address 172.16.3.2 255.255.255.0

ip pim dense-mode

duplex full

!

interface Ethernet1/0

ip address 172.16.2.2 255.255.255.0

ip pim dense-mode

duplex half

!

interface Ethernet1/1

no ip address

shutdown

duplex half

!

interface Ethernet1/2

no ip address

shutdown

duplex half

!

interface Ethernet1/3

no ip address

shutdown

duplex half

!

router ospf 10

log-adjacency-changes

network 172.16.2.0 0.0.0.255 area 0

network 172.16.3.0 0.0.0.255 area 0

!

ip classless

no ip http server

no ip http secure-server

!

logging alarm informational

!

!

control-plane

!

!

gatekeeper

shutdown

!

!

line con 0

exec-timeout 0 0

stopbits 1

line aux 0

stopbits 1

line vty 0 4

login

!

!

End

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

R4#sh running-config

Building configuration...

Current configuration : 1038 bytes

!

version 12.4

service timestamps debug datetime msec

service timestamps log datetime msec

no service password-encryption

!

hostname R4

!

boot-start-marker

boot-end-marker

!

!

no aaa new-model

!

resource policy

!

ip subnet-zero

ip cef

!

!

!

!

ip multicast-routing

!

!

!

!

interface FastEthernet0/0

ip address 10.1.2.1 255.255.255.0

ip pim dense-mode

duplex half

!

interface Ethernet1/0

ip address 172.16.3.3 255.255.255.0

ip pim dense-mode

duplex full

!

interface Ethernet1/1

no ip address

shutdown

duplex half

!

interface Ethernet1/2

no ip address

shutdown

duplex half

!

interface Ethernet1/3

no ip address

shutdown

duplex half

!

router ospf 10

log-adjacency-changes

network 10.1.2.0 0.0.0.255 area 0

network 172.16.3.0 0.0.0.255 area 0

!

ip classless

no ip http server

no ip http secure-server

!

!

!

logging alarm informational

!

!

!

!

control-plane

!

!

!

gatekeeper

shutdown

!

!

line con 0

exec-timeout 0 0

stopbits 1

line aux 0

stopbits 1

line vty 0 4

login

!

!

end

R4#

配置完成後,可以使用組播工具進行測試,分別在多播源端發出多播包,在組成員端接收多播包。如下圖所示:

clip_image045clip_image046

使用sh ip pim neighbor命令查看PIM鄰居表

R2#sh ip pim neighbor

PIM Neighbor Table

Neighbor Interface Uptime/Expires Ver DR

Address Prio/Mode

172.16.3.2 FastEthernet0/0 00:21:14/00:01:42 v2 1 / S

172.16.3.3 FastEthernet0/0 00:21:14/00:01:42 v2 1 / DR S

172.16.1.1 Ethernet1/0 00:22:39/00:01:22 v2 1 / S

如上圖所示,選舉的DR是172.16.3.3,因爲拓撲中IP地址最大的則是172.16.3.3。

使用sh ip mroute命令顯示多播轉發表

R2#sh ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

L - Local, P - Pruned, R - RP-bit set, F - Register flag,

T - SPT-bit set, J - Join SPT, M - MSDP created entry,

X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

U - URD, I - Received Source Specific Host Report,

Z - Multicast Tunnel, z - MDT-data group sender,

Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

Timers: Uptime/Expires

Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 224.0.1.40), 00:28:19/00:02:21, RP 0.0.0.0, flags: DCL

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

Ethernet1/0, Forward/Dense, 00:28:19/00:00:00

FastEthernet0/0, Forward/Dense, 00:28:19/00:00:00

(*, 228.13.20.216), 00:00:18/stopped, RP 0.0.0.0, flags: D

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

Ethernet1/0, Forward/Dense, 00:00:18/00:00:00

FastEthernet0/0, Forward/Dense, 00:00:18/00:00:00

(10.1.1.88, 228.13.20.216), 00:00:18/00:02:41, flags: PT

Incoming interface: Ethernet1/0, RPF nbr 172.16.1.1

Outgoing interface list:

FastEthernet0/0, Prune/Dense, 00:00:18/00:02:41

R3#sh ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

L - Local, P - Pruned, R - RP-bit set, F - Register flag,

T - SPT-bit set, J - Join SPT, M - MSDP created entry,

X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

U - URD, I - Received Source Specific Host Report,

Z - Multicast Tunnel, z - MDT-data group sender,

Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

Timers: Uptime/Expires

Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 224.0.1.40), 00:29:12/00:02:03, RP 0.0.0.0, flags: DCL

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

Ethernet1/0, Forward/Dense, 00:29:12/00:00:00

FastEthernet0/0, Forward/Dense, 00:29:12/00:00:00

(*, 228.13.20.216), 00:01:40/stopped, RP 0.0.0.0, flags: D

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

Ethernet1/0, Forward/Dense, 00:01:40/00:00:00

FastEthernet0/0, Forward/Dense, 00:01:40/00:00:00

(10.1.1.88, 228.13.20.216), 00:01:40/00:02:58, flags: T

Incoming interface: Ethernet1/0, RPF nbr 172.16.2.1

Outgoing interface list:

FastEthernet0/0, Forward/Dense, 00:01:40/00:00:00, A

R1#sh ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

L - Local, P - Pruned, R - RP-bit set, F - Register flag,

T - SPT-bit set, J - Join SPT, M - MSDP created entry,

X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

U - URD, I - Received Source Specific Host Report,

Z - Multicast Tunnel, z - MDT-data group sender,

Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

Timers: Uptime/Expires

Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 224.0.1.40), 00:32:36/00:02:04, RP 0.0.0.0, flags: DCL

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

Ethernet1/1, Forward/Dense, 00:30:51/00:00:00

Ethernet1/0, Forward/Dense, 00:31:14/00:00:00

FastEthernet0/0, Forward/Dense, 00:32:36/00:00:00

(*, 228.13.20.216), 00:03:21/stopped, RP 0.0.0.0, flags: DC

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

FastEthernet0/0, Forward/Dense, 00:03:21/00:00:00

Ethernet1/1, Forward/Dense, 00:03:21/00:00:00

Ethernet1/0, Forward/Dense, 00:03:21/00:00:00

(10.1.1.88, 228.13.20.216), 00:03:21/00:02:55, flags: T

Incoming interface: FastEthernet0/0, RPF nbr 0.0.0.0

Outgoing interface list:

Ethernet1/0, Prune/Dense, 00:00:15/00:02:44

Ethernet1/1, Forward/Dense, 00:00:13/00:00:00

(*, 239.255.255.250), 00:31:53/00:02:03, RP 0.0.0.0, flags: DC

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

Ethernet1/1, Forward/Dense, 00:30:52/00:00:00

Ethernet1/0, Forward/Dense, 00:31:15/00:00:00

FastEthernet0/0, Forward/Dense, 00:31:53/00:00:00

在上面所示,路由器R2和R3的FastEthernet0/0接口狀態是不同的,一個是修剪一個是轉發,在這裏這兩臺路由器需要選舉轉發路由器。因爲都採用的OSPF路由協議,度量優先值相同,而其路徑開銷也是相同的,所以只有IP地址最大的採能成爲轉發路由器。

使用sh ip igmp groups命令查看記錄在IGMP成員關係表中所連接的組成員

R4#sh ip igmp groups 228.13.20.216

IGMP Connected Group Membership

Group Address Interface Uptime Expires Last Reporter

228.13.20.216 FastEthernet0/0 00:07:28 00:02:36 10.1.2.113

實例2:在幀中繼的網絡環境

待續。。。。。。

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