组播侦听者发现协议MLD
MLD簡介
組播偵聽者發現協議MLD(Multicast Listener Discovery)是負責IPv6組播成員管理的協議,用來在IPv6成員主機和與其直接相鄰的組播路由器之間建立和維護組播組成員關系。MLD通過在成員主機和組播路由器之間交互MLD報文實現組成員管理功能,MLD報文封裝在IPv6報文中。
目的:
出現于IPv4時代的組播技術,有效解決了單點發送、多點接收的問題,實現了網絡中點到多點的高效數據傳送,能夠大量節約網絡帶寬、降低網絡負載。在IPv6網絡中,組播技術的應用得到了進一步的豐富和加強。MLD可以理解為IGMP的IPv6版本,兩者的協議行為完全相同,區別僅僅在于報文格式。
原理描述
MLD版本:
到目前為止,MLD有兩個版本:
- MLDv1版本(由RFC 2710定義),對應IGMPv2。
- MLDv2版本(由RFC 3810定義),對應IGMPv3。
MLDv1的工作機制與IGMPv2相同,基于查詢和響應機制完成對IPv6組播組成員的管理。MLDv2在MLDv1的基礎上,**增加的主要功能是成員主機可以指定接收或不接收某些組播源的報文。**MLD兩個版本在演進過程中對協議報文的處理是向前兼容的,即運行MLDv2的組播路由器可以識別MLDv1的協議報文。
所有MLD版本都支持ASM(Any-Source Multicast)模型。MLDv2可以直接應用于SSM(Source-Specific Multicast)模型,而MLDv1則需要MLD SSM Mapping技術的支持才可以應用于SSM模型。
MLDv1工作原理:
MLDv1的工作機制與IGMPv2相同,定義了查詢器選舉機制、普遍組查詢和響應機制、新組成員加入機制以及離開組機制。
MLD查詢器周期性地向本網段內所有主機和組播路由器發送普遍組查詢報文,通過成員主機反饋的報告報文來維護組成員關系;當MLD查詢器收到成員主機發送的針對某組的離開報文時,會發送特定組查詢報文來了解網段內是否還存在該組的成員,如果沒有則刪除對應的組成員關系。MLD查詢器根據組成員關系來決定是否將對應組的組播數據報文轉發到該網段。
MLDv1報文:
MLDv1包括四種類型的報文:
- 普遍組查詢報文(General Query):查詢器向共享網絡上所有主機和路由器發送的查詢報文,用于了解哪些組播組存在成員。
- 特定組查詢報文(Multicast Address Specific Query):查詢器向共享網段內指定組播組發送的查詢報文,用于查詢該組播組是否存在成員。
- 成員報告報文(Multicast Listener Report):主機向查詢器發送的報告報文,用于申請加入某個組播組或者應答查詢報文。
- 成員離開報文(Multicast Listener Done):主機離開組播組時主動向查詢器發送的報文,用于宣告自己離開了某個組播組。
字段解釋說明:
| Type | 報文類型。該字段有以下三種取值:130:表示查詢報文。包括普遍組查詢報文和特定組查詢報文兩類。131:表示成員報告報文。132:表示成員離開報文。 |
| Code | 該字段在發送時被設為0,并在接收時被忽略。 |
| Checksum | 標準的ICMPv6校驗和。 |
| Maximum Response Delay | 最大響應時間。成員主機在收到MLD查詢器發送的普遍組查詢報文后,需要在最大響應時間內做出回應。該字段僅在MLD查詢報文中有效。 |
| Reserved | 保留字段。 |
| Multicast Address | 組播組地址。 |
MLDv1工作機制:
查詢器選舉機制
當一個網段內有多臺IPv6組播路由器時,由于它們都可以接收到主機發送的報告報文,因此只需要選取其中一臺組播路由器發送查詢報文就足夠了,該組播路由器稱為MLD查詢器(Querier)。
圖:查詢器選舉示意圖如上圖所示,查詢器的選舉過程如下:
最初,所有運行MLD的組播路由器(RouterA和RouterB)都認為自己是查詢器,向本網段內的所有主機和組播路由器發送普遍組查詢報文。
RouterA和RouterB在收到對方發送的普遍組查詢報文后,將報文的源IPv6地址與自己的接口地址作比較。通過比較,IPv6地址最小的組播路由器將成為查詢器,其他組播路由器成為非查詢器(Non-Querier)。如上圖所示,RouterA的接口地址小于RouterB,則RouterA當選為查詢器,RouterB為非查詢器。
此后,由MLD查詢器(RouterA)向本網段內的所有主機和其他組播路由器發送普遍組查詢報文,而非查詢器(RouterB)不再發送普遍組查詢報文。
非查詢器(RouterB)上都會啟動一個定時器(即其他查詢器存在時間定時器Other Querier Present Timer)。在該定時器超時前,如果收到了來自查詢器的查詢報文,則重置該定時器;否則,就認為原查詢器失效,并發起新的查詢器選舉過程。
普遍組查詢和響應機制
通過普遍組查詢和響應,MLD查詢器可以了解到該網段內哪些組播組存在成員。
圖:普遍組查詢和響應示意圖如上圖所示,普遍組查詢和響應過程如下:
MLD查詢器發送目的地址為FF02::1(表示同一網段內所有主機和路由器)的普遍組查詢報文;收到該查詢報文的組成員啟動定時器。
**普遍組查詢報文是周期性發送的,**發送周期可以通過命令配置,**缺省情況下每隔125秒發送一次。**HostA和HostB是組播組G1的成員,則在本地啟動定時器Timer-G1。缺省情況下,定時器的范圍為0~10秒之間的隨機值。
第一個定時器超時的組成員發送針對該組的報告報文。
假設HostA上的Timer-G1首先超時,HostA向該網段發送目的地址為G1的報告報文。HostB收到此報告報文,則停止定時器Timer-G1,不再發送針對G1的報告報文。這樣報告報文被抑制,可以減少網段上的MLD報文的數量。
MLD查詢器接收到HostA的報告報文后,了解到本網段內存在組播組G1的成員,則由IPv6組播路由協議生成( * ,G1)組播轉發表項,“*”代表任意IPv6組播源。網絡中一旦有組播組G1的數據到達路由器,將向該網段轉發。
新成員加入機制
共享網段內有新組成員需要加入組播組時,會主動向MLD查詢器發送報告報文,而不必等待普遍組查詢報文的到來。
離開組機制
通過離開組機制,MLD查詢器可以及時了解到網段內哪些組播組已不存在成員,從而及時更新組成員關系,減少網絡中冗余的組播流量。
離開過程如下:
HostA向本地網段內的**所有組播路由器(目的地址為FF02::2)**發送針對組G1的離開報文(Done)。
查詢器收到離開報文,會發送針對組G1的特定組查詢報文。發送間隔和發送次數可以通過命令配置,缺省情況下每隔1秒發送一次,共發送兩次。同時查詢器啟動組成員關系定時器(Timer-Membership = 發送間隔 × 發送次數)。
該網段內還存在組G1的其他成員(HostB),這些成員在收到查詢器發送的特定組查詢報文后,會立即發送針對組G1的報告報文。查詢器收到針對組G1的報告報文后將繼續維護該組成員關系。
如果該網段內不存在組G1的其他成員,查詢器將不會收到針對組G1的報告報文。在Timer-Membership超時后,查詢器將刪除記錄的(*,G1)組信息。當有組G1的組播數據到達查詢器時,查詢器將不會向下游轉發。
MLDv2工作原理:
MLDv1報文中只能攜帶組播組的信息,不能攜帶組播源的信息,這樣運行MLDv1的成員主機在加入組時無法選擇加入哪個指定源的組。MLDv2解決了這個問題。運行MLDv2的成員主機不僅能夠選擇組播組,還能夠根據需要選擇接收哪些組播源的數據。同時,與MLDv1的成員報告只能攜帶一個組播組信息相比,MLDv2報文可以攜帶多個組播組信息,這就大大減少了成員主機與查詢器之間交互的報文數量。
MLDv2報文:
與MLDv1相比,MLDv2報文的變化如下:
- MLDv2報文包含兩大類:查詢報文和成員報告報文。MLDv2沒有定義專門的成員離開報文,成員離開通過特定類型的報告報文來傳達。
- 查詢報文中不僅包含普遍組查詢報文和特定組查詢報文,還新增了特定源組查詢報文(Multicast Address and Source Specific Query)。該報文由查詢器向共享網段內特定組播組成員發送,用于查詢該組成員是否愿意接收特定源發送的數據。特定源組查詢通過在報文中攜帶一個或多個組播源地址來達到這一目的。
- 成員報告報文不僅包含主機想要加入的組播組,而且包含主機想要接收來自哪些組播源的數據。MLDv2增加了針對組播源的過濾模式(INCLUDE/EXCLUDE),將組播組與源列表之間的對應關系簡單的表示為(G,INCLUDE,(S1、S2…)),表示只接收來自指定組播源S1、S2…發往組G的數據;或(G,EXCLUDE,(S1、S2…)),表示接收除了組播源S1、S2…之外的組播源發給組G的數據。當組播組與組播源列表的對應關系發生了變化,MLDv2報告報文會將該關系變化存放于組播地址記錄(Multicast Address Record)字段,發送給MLD查詢器。
MLDv2工作機制:
在工作機制上,與MLDv1相比,MLDv2增加了主機對組播源的選擇能力。
特定源組加入
MLDv2的成員報告報文的目的地址為FF02::16(表示本地網段內所有使能MLDv2的路由器)。通過在報告報文中攜帶組播地址記錄,主機在加入組播組的同時,能夠明確要求接收或不接收特定組播源發出的組播數據。
MLD SSM Mapping:
SSM(Source-Specific Multicast)稱為指定源組播,要求路由器能了解成員主機加入組播組時所指定的組播源。如果成員主機上運行MLDv2,可以在MLDv2報告報文中直接指定組播源地址。但是某些情況下,成員主機只能運行MLDv1,為了使其也能夠使用SSM服務,組播路由器上需要提供MLD SSM Mapping功能。
MLD SSM Mapping的機制是:通過在組播路由器上靜態配置SSM地址的映射規則,將MLDv1報告報文中的(*,G)信息轉化為對應的(G,INCLUDE,(S1,S2…))信息,以提供SSM組播服務。
MLD命令行配置
mld enable //在接口上使能MLD功能。 mld lastlistener-queryinterval 1 //在接口上配置MLD查詢器在收到成員主機發送的離開報文時, //發送特定組\源組查詢報文的時間間隔。 mld limit //當前接口可以維護MLD組成員關系的最大個數。 mld max-response-time //接口上配置MLD普遍組查詢報文的最大響應時間。 mld prompt-leave //在接口上配置組播組成員快速離開功能 mld require-router-alert //配置丟棄不包含Router-Alert選項的MLD報文 mld send-router-alert //設置接口上發送的MLD報文在IPv6報文頭里包含Router-Alert選項。 //缺省情況下,設備接口上發送包含Router-Alert選項的MLD報文。 mld ssm-mapping enable //在接口上使能MLD SSM Mapping功能。 mld timer query 125 //配置MLD普遍組查詢報文的發送時間間隔。參考文檔:華為HedEx文檔
總結
以上是生活随笔為你收集整理的组播侦听者发现协议MLD的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 准直器——通道式安检机中用到的一个光学元
- 下一篇: java 制作简易日历_Java制作简单