[轉載]multicast 筆記

爲什麼要使用組播:
1、當需要發送相同的數據去往多個接收者
2、有效的節省帶寬
3、減少主機和路由器的處理進程,減輕工作量
4、當接收者的地址是未知的
5、實時性,當接收者要求能夠同時收到數據
單播、廣播、組播的區別
1、單播發向一個特定的目標節點
2、廣播發向網絡上的所有節點
3、組播發向網絡上的一組特定的用戶
Multicast is UDP based 組播是基於UDP的
由於組播是基於UDP的,所以繼承了UDP的缺點
1、只能是盡力而爲的傳輸,傳輸無保證
2、沒有擁塞避免機制,不像TCP有windows窗口
3、會產生重複的報文
4、無序的、UDP包沒有序列號
組播應用的類型:
1、一對多
2、多對多,例如網絡會議、共享白板
3、多對一
<RTP>
實時傳輸協議,用來解決UDP的無序性
端口號:16384-32767
RTP-實時傳輸協議real-time
RCTP-實時控制協議
先封裝RTP,再封裝UDP
20byte 8byte 12byte  
IP UDP RTP Vlice payload 
組播模型:
兩個術語:
1、第一跳路由器
2、最後一跳路由器
組播分類:
1、域內組播協議
   例如:PIM、DVMRP、MOSPF、CBT
2、域間組播協議
   例如:MBGP、MSDP
<Multicast Address>
            

保留的鏈路本地地址:224.0.0.0 - 224.0.0.255
    保留給本地網段上的網絡協議使用。路由器不轉發目標地址爲這段地址的數據包。
    TTL=1 (FR Hub & Spoke 中。Spoke端不能建鄰居)
224.0.0.1   子網中的所有主機和路由器
224.0.0.2   子網中的所有路由器(HSRP)
224.0.0.5   所有ospf路由器
224.0.0.6   ospf中的DR和BDR
224.0.0.9   RIP
224.0.0.10  EIGRP
224.0.0.13  PIM路由器
全局範圍地址:      224.0.1.0 - 238.255.255.255
    公司可以使用這段地址在組織之間和通過Internet以組播方式傳輸數據。
    指定源多播地址:  232.0.0.0 - 232.255.255.255
    此段地址被保留給SSM(指定源的多播)使用。SSM是PIM的一種擴展。
    GLOP地址:        233.0.0.0 - 233.255.255.255
    這段地址和AS號對應。
    例:AS62010的16進製表示爲F23A,F2的十進制242,3A的十進制58,
        所以子網233.242.58.0/24被全局保留,供AS62010使用。
除以上兩段地址以外的公網組播地址需要單獨申請。
有限範圍地址:      239.0.0.0 - 239.255.255.255這段地址不能在公網上路由
    使用這些地址的組播被限定在本地或組織內。公司、大學和其他組織使用有限範圍地址來進行本地組播。
    與Internet相連的邊緣路由器不會將這段多播地址幀轉發到外網。
R1(config)#access-list 100 deny ip any 224.0.0.0 15.255.255.255
224.0.1.1   NTP
224.0.1.39  RP-Announce
224.0.1.40  RP-Discovery

<組播IP和MAC的映射>
組播MAC地址的前25位固定
IP地址的最後23位被映射到MAC地址的最後23位
0000,0001 0000,0000 0101,1110 0000,0000 0000,0000 0000,1010
          24位                0             23位
   01        00        5E        00        00        0A
<多播IP地址相對應的MAC地址>
                    
               
     
           

-----------------------------------------------------------------------------------------
<IGMP(Internet Group Management Protocol)>
·IGMP報文封裝在IP包中,Protocol NO.=2  / TTL=1
IGMPv1(hold time :180second):
只有兩種報文--
  1.Query包   每60秒發一次 由路由器發向224.0.0.1(所有節點)DIP:224.0.0.1 GROUP:0.0.0.0
  2.Report包  主機迴應Queries或主動發           DIP:224.1.1.1  GROUP: 224.1.1.1
·IGMP-V1沒有查詢者機制,要靠上層的PIM選出查詢者
·查詢的間隔響應時間--默認最大爲10S,以S爲單位,當主機收到路由器的查詢後,它必須在這個時間以內迴應,爲了防止大家同時發送迴應報文導致衝突,每一個主機會隨機選擇一個不同的迴應時間。
·在MA網絡上只要有一個主機迴應report包就可以了,它在迴應的同時也抑制了其它組員的report包,因爲沒必要大家都發,只要有一個組員。路由器就會將多播發下來。
·IGMP沒有離組消息,稱之爲靜悄悄的離開,路由器連續發三次query包,都沒人迴應就停止發該組的消息,也即180S之後holdtime到時,才停止發送該組的數據流。
IGMPv2: 多了一個查詢者的概念和以下兩種消息
1.指定組查詢消息Group-specific query  DIP: 224.1.1.1 GROUP:224.1.1.1
2.離組消息Leaving a Group  DIP: 224.0.0.2 GROUP:224.1.1.1
·查詢者:當有多個路由器在同一個以太網段時,要先選出查詢者(比最小IP地址)[卷2上和np書上都寫錯了,cisco的ppt寫對的],查詢者超時時間默認是120S
·查詢的間隔響應時間--默認10S,以0.1S爲單位
IGMP有離組消息Leaving a group 發向所有路由器
路由器由到離組消息後,會馬上發出指定組查詢消息group-specific query看本組還有沒有組員
實驗:
 
R1(config)#ip multicast-routing       開啓多播路由協議
R1(config-if)#ip pim dense-mode
R1/R2#debug ip igmp
R2(config-if)#ip igmp join-group 224.1.1.1        使R2加入"224.1.1.1"的組
ip igmp query-interval 30   修改查詢間隔時間,改了後查詢者超時時間也會自動變化
ip igmp querier-timeout 120  修改查詢者超時間隔,默認是120S
ip igmp query-max-response-time 10  最大查詢響應間隔時間
ip igmp last-member-query-count 3   路由器修改發送指定組查詢消息的次數,默認2次
ip igmp last-member-query-interval 2000  修改發送指定組查詢消息的間隔,默認是1000ms,這個值乘上次數就得到路由器等待的最大時間
比如本例3*2000=6000ms 也就是說在6S內沒人迴應,路由器就去掉這個組,不再把這個組的流量播下去。
R1#show ip igmp groups [detail]             查看誰加入了哪個組
IGMP Connected Group Membership
Group Address    Interface                Uptime    Expires   Last Reporter
224.0.1.40       Ethernet0                00:03:10  00:02:58  10.1.1.1
224.1.1.1        Ethernet0                00:03:10  00:02:58  10.1.1.2
R1#show ip igmp interface ethernet 0
Ethernet0 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
  Current IGMP router version is 2
  IGMP query interval is 60 seconds    
    (#ip igmp query-interval 60)每60S發送Query。"query-interval"乘以2等於"querier-timeout"
  IGMP querier timeout is 120 seconds   
    (#ip igmp querier-timeout 120)  非查詢者在120S內沒有收到查詢者的包,自己充當這個角色。
  IGMP max query response time is 10 seconds 
   (#ip igmp query-max-response-time 20) 查詢包中的字段,告訴主機迴應Report的最大響應時間.
  Last member query count is 2
  Last member query response interval is 1000 ms
  Inbound IGMP access group is not set
  IGMP activity: 5 joins, 4 leaves
  Multicast routing is enabled on interface
  Multicast TTL threshold is 0
  Multicast designated router (DR) is 10.1.1.1 (this system)
  IGMP querying router is 10.1.1.1 (this system)
     網絡中如果有多個路由器發Query,選舉IP地址小的作爲發送查詢者。
  Multicast groups joined by this system (number of users):
      224.0.1.40(1)
Show ip mroute    查看多播路由表
R1#debug ip igmp  開啓debug,查看加、離組消息
------------------------------------------------------------------------------------------
二層組播:
<CGMP(Cisco Group Management Protocol)>  
在路由器和交換機上都要配,用於控制二層交換機如何轉發多播流量,CISCO私有的
for 2900支持
R3(config-if)#ip cgmp              在R3的某個接口起CGMP
SW3#show cgmp                      2900交換機默認已起用CGMP,3550和2950不支持
SW3(config)#cgmp                   在交換機上起cgmp
路由器會向交換機發送一個CGMP的消息,包含以下內容:
Group Destination Address (GDA) 組MAC地址
Unicast Source Address (USA)  單播源地址
Debug ip cgmp
<IGMP Snooping> 
只要配置交換機,業界標準
正常情況下,交換機只看二層頭部,不看三層頭部,但是在IGMP的snooping中,交換機看到了三層頭部。
交換機通過截獲主機發出的report包和離組包,就可以知道哪個接口加入了組或離開了組
Show mac-address-table multicast  查看交換機多播MAC表
Sw1(config)#ip igmp snooping
Sw1(config)#ip igmp snooping vlan 1          基於VLAN 1 起用IGMP的SNOOPING
SW1#show ip igmp snooping
SW1#show ip igmp snooping groups
2950,3550中默認就開啓這一命令
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
< Tree >
組播路由條目通常在兩種情況下產生:收到流量;收到加組消息
·Shortest-Path / Source Distribution Tree
  SPT(Shortest Path Tree)
  (S,G)  (192.168.1.1,224.1.1.1)
  源樹的優點:在信源和接收方之間創建一條最優的路徑,可以最大限度的降低轉發多播流的網絡延遲。
  源樹的缺點:同時也增加了開銷,路由器要針對每個信源存儲路徑信息,在包含數千個信源的網絡中,這種開銷是龐大的。
  一個源一棵樹.適用於比較多接收者時使用.每3分鐘修剪一次.推模型.一般運行在DENSE模式下.
·Shared Distribution Tree
  RP(Rendezvous Point)
  (*,G)  (*,224.1.1.1)
  共享樹的優點:每臺路由器存儲的信息較少,降低內存消耗。
  共享樹的缺點:選擇信源到接收方的路徑不是最優的。所以要慎重考慮RP的位置。
  拉模型.RP可以手工指定.receiver端向RP端發出register包.一般運行在SPARSE模式下.
< RPF (Reverse Path Forwarding)>
RPF校驗的目地是爲了防環和防止重複報文
RPF的規則:收到組播包的方向(接口)也必須是本路由器用來向組播包的源地址進行數據轉發的方向(接口),否則扔掉數據包。RPF限定了路由器只能從唯一的一個接口接收組播流量。
upstream ( 前往信源的方向)
downstream ( 前往接收方的方向)
RPF選接口的比較原則:
1、lower AD     同樣的路由,選最小AD值的路由所用的接口爲RPF接口
2、longest match    同樣的路由,比最長掩碼
3、lower metric    如果IGP是負載均衡,同樣的路由,掩碼一樣長,比metric
4、higher ip      以上都一樣,比接口IP地址
因爲RPF校驗需要用到單播路由表,所以跑組播前需要運行單播路由協議。
通過寫多播靜態路由來指定自已的信源接口
ip mroute 1.1.1.0 255.255.255.0 12.1.1.2 寫去到源從哪個接口發出,1.1.1.0是源,12.1.1.2是下一跳
show ip mroute static  查看靜態多播路由,注意多播靜態路由的AD是0

  "RPF check fails"-----先查多播路由表,再查單播路由表
RPF接口默認每5秒檢測一次(檢測多播路由表裏面的條目的rpf接口和單播路由表中流量的去接口是否一樣)
        
  
<TTL>
接口的TTL閥值必須<=數據包的ttl值,接口才會轉發
     
        入向數據包的TTL值大於或等於出向接口的TTL值時,才轉發.
注意TTL值在入向不減,出方向才減,減過之後才做這一比較
TTL值的作用:通常用來控制組播的傳輸範圍。
   例如:在邊界路由器上設定TTL閥值爲128,內部的源發出的組播包初始TTL值控制爲127,就能起到作用。
使用ACL過濾多播組
R1(config)#access-list 1 permit 239.129.0.0 0.0.255.255
R1(config-if)#ip multicast boundary 1   只有列表1中被允許才能通過,不分in,out方向
Show ip pim int s0 detail
Show ip igmp int s0
R1(config-if)#Ip multicast ttl-threshold 2   設置TTL值,必須在接口下,默認爲0
<PIM(Protocol independent Multicast)>
 ·PIM的報文直接封裝在IP包中,在IP中的協議號是103
·協議無關的組播,指的是和單播協議無關,不管是何種單播路由協議,PIM都可以使用他們實現組播轉發。
·使用現有單播路由表實現RPF校驗。
·由於不必發送組播路由更新,所以PIM比其他組播協議開銷降低了很多。
組播路由器之間也要建鄰居:
Hello:30S    發向224.0.0.13
Hold :30*3.5= 1分45秒
多播路由表的幾個要素:
1、源
2、目的
3、入接口
4、RPF鄰居
5、出接口
R1#debug ip packet detail
*Mar  1 00:15:44.207: IP: s=12.1.1.2 (Serial0), d=224.0.0.13, len 54, rcvd 0, proto=103

·MA網絡PIM通過Hello包來選擇DR,在IGMPv1中,DR將成爲Querier。
  DR選舉方式:1.Priority大的(默認=1)
             2.IP地址大的
  DR可搶佔。只有以太口才選DR,串口不選DR。
如果運行的是IGMPv2,IGMPV2自已會選查詢者,DR只擔負數據轉發任務
DR的作用:1、充當IGMPV1的Querier
          2、在Dense無用
          3、sparse中 send&receive join&register message
R1(config-if)#ip pim dr-priority 2        在接口下改優先級
R1#show ip pim neighbor
PIM Neighbor Table
Neighbor          Interface                Uptime/Expires    Ver   DR
Address                                                            Prio/Mode
10.1.1.2          Ethernet0                00:31:45/00:01:30 v2    3 / DR S
                                                               10.1.1.2的優先級爲3,且爲DR
·PIM-DM ( Dense Mode )
密集模式原理:當第一跳路由器收到組播流量後,會向整個網絡泛洪,網絡中的每一個分枝都能收到流量,然後其中一些沒有用戶的分枝會自動進行修剪。(先泛洪,後修剪)
 
·在Dense模式中Flood&prune 每三分鐘就要做一次
·被剪掉的路由器如果有用戶加組了,也會主動發出嫁接信息重新接收組播流量。(發給rpf接口,向上遞歸rpf接口,這也是修剪後多播條目需要存在的原因)
R2#show ip igmp int e0
  Multicast designated router (DR) is 10.1.1.2 (this system)
  IGMP querying router is 10.1.1.2 (this system)
   Graft
   Graft-Ack

D:表示組播組是一個密集模式,僅在(*,G)出現.
C:有直接的組成員,會在(*,G)和(S,G)都出現.
L:表示自己就是組成員,會在(*,G)和(S,G)都出現.
P:輸出接口爲空/輸出接口都處於Prune狀態,結果Prune會從此(S,G)送至上游RPF鄰居.會在(*,G)和(S,G)都出現.
T:信息經(S,G)轉發,只要收到第一個(S,G)包,就設置該標誌.因此,T始終都會出現,僅在(S,G)出現.
J:........................

R2#show ip mroute
(*, 224.1.1.1), 00:14:14/stopped, RP 0.0.0.0, flags: D
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial1, Forward/Dense, 00:13:54/00:00:00
(14.1.1.4, 224.1.1.1), 00:14:14/00:00:00, flags: T
  Incoming interface: Ethernet0, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial1, Forward/Dense, 00:13:54/00:00:00
(*, 224.1.1.1), 00:14:16/00:02:58, RP 0.0.0.0, flags: D
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial1, Forward/Dense, 00:13:56/00:00:00
如果沒有組播流,(*,G)等到(S,G)消失後,從3分鐘倒計時.
·在MA網絡中,如果運行的是dense模式,會選出一個前轉路由器,通過assert消息選出。
  前轉路由器的選舉規則:
  1、比較去往源的路由的AD值
  2、比較去往源的Metric值
  3、IP地址大的成爲前轉路由器

PIM通用規則一:無論在什麼時候,只要出現了(S,G),就會出現它的父項(*,G),但(*,G)不作轉發選擇。
當組播流量停止後,(S,G)條目只會在多播路由表中保存三分鐘。
-------------------------------------------------------------------------------------
 ·PIM-SM ( Sparse Mode )
稀疏模式原理:在稀疏模式中,組播網絡必須要先選舉出一個RP,並且要讓網絡中所有的路由器都知道RP的位置。然後當第一跳路由器得到組播流量時,只需要將流量轉發給RP就可以了。用戶如果想要接收流量,需要最後一跳路由器去向RP發出申請,去要流量。
·在稀疏模式中,第一跳路由器到RP之間形成源樹,RP到最後一跳路由器之間形成共享樹。
指定RP的方式
1、 Static  指定RP(一般用環回口),並通告進IGP
2、 auto RP
3、 BSR
PIM-SPARSE模式詳解:
 
共享樹的形成:
一、PC發出一個igmp join(224.1.1.1)消息給last router。
二、R5形成共享樹條目(*,G),並且向R4發出一個Pim join(*,224.1.1.1)的加入消息。
三、R4形成(*,G),並且向R3發起一個Pim join(*,224.1.1.1)的加入消息。
四、R3形成(*,G)
源樹的形成:
一、source發出流量給first route(R1)
二、R1將源發過來的組播信息流的組播包封裝爲單播包(unicast register packet),發送到RP
    register包的封裝:DIP:23.1.1.3|SIP:1.1.1.1|224.1.1.1|server'IP
三、RP收到register packet後,做三件事
   1、解封裝,並沿共享樹發下去
   2、產生(S,G)條目,並且RPF校驗指向源
   3、向source發起一個(S,G)的加入消息
四、R2形成源樹(S,G),並且向R1發起一個(S,G)的加入。
五、R1形成源樹(S,G),接着做兩件事:
   1、沿(S,G)源樹發出組播
   2、封裝unicast register packet繼續發
六、RP從(S,G)收到multicast packet後,向first-hop router (R1)發出register-stop包。
七、R1收到register-stop包後,停止單播register packet
八、last router切換到源樹,向源發出(S,G)的join消息
注意:在源樹中,RPF接口是去往源的接口
      在共享樹中,RPF接口是去往RP的接口
SPT的閥值切換:
可以在最後一跳路由器設定一個閥值,當收到的多播包超過閥值後,切換到源樹,默認情況下閥值等於0,也就是說一有流量播下來就立馬切換到源樹。

產生RP的三種方法:
一、靜態RP
Router(config)#ip pim rp-address 1.1.1.1 在每臺路由器上都指定
二、Auto RP(cisco私有)
原理:在網絡中先指定一臺MA(映射代理路由器),然後再指定多個想成爲RP的候選路由器。每一個候選路由器都會向MA發出自已的申請,參與競選。最後,由MA選出RP,再將RP的地址發給網絡中的每一臺路由器。
RP選舉規則:IP地址大的成爲RP
注意:c-rp/ma 的用來參選的loopback口一定要宣告進IGP
注意:Auto RP必須運行在sparse-dense模式下,cisco私有技術。
C-RP-- 候選RP,也就是想成爲RP的路由器
MA-- 映射代理,MA的多播地址:224.0.1.39,一旦指定MA,它的每一個組播接口都會加入224.0.1.39
所有運行組播的路由器都會加入224.0.1.40

第一步:配置MA
R1(config)#ip pim send-rp-discovery loopback 0 scope 5 
在MA上配,會每60S向224.0.1.40發送一個discovery消息,規定了只能傳5跳
第二步:配置候選RP
R1(config)#ip pim send-rp-announce loopback 0 scope 5
配置爲候選RP,向224.0.1.39每60秒發送一個RP-Announce,且只能傳5跳
注意點:
R1(config)#int lo0
R1(config-if)#ip pim sparse-dense-mode(要確保loopback口也運行PIM)
特定組--
ip pim accept-rp 1.1.1.1 MUL-GROUP  只允許特定組接受1.1.1.1這個RP的消息
ip pim send-rp-announce Loopback0 scope 20 group-list MUL-GROUP  只允許lo0口參與特定組的RP選舉
ip access-list standard MUL-GROUP
 permit 224.1.1.1

R1(config)#ip pim rp-address 1.1.1.1 override  默認情況下,Auto-RP優於靜態RP,如果想靜態優先,打上這一命令
R3#show ip pim rp mapping (in-use )
Clear ip pim rp-mapping  清除RP映射表項
三、BSR  自舉路由器(國際標準)
Router(config)#ip pim bsr-candidate loopback0   指定BSR
Router(config)#ip pim rp-candidate loopback0 指定想成爲RP的路由器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章