MLD協議測試實操(信而泰原創文章)
一、簡介
1. MLD簡介
MLD
· Multicast Listener Discovery Protocol
· 組播偵聽者發現協議
功能
· 在終端主機和與其直接相鄰的組播路由器之間建立/維護組播組成員關系
標準
· RFC2710: MLD, 1999.10
· RFC3810: MLDv2, 2004.06
其定義是:組播偵聽者發現協議MLD(Multicast Listener Discovery)是負責IPv6組播成員管理的協議,用來在IPv6成員主機和與其直接相鄰的組播路由器之間建立和維護組播組成員關系。MLD通過在成員主機和組播路由器之間交互MLD報文實現組成員管理功能,MLD報文封裝在IPv6報文中。
在功能上:出現于IPv4時代的組播技術,有效解決了單點發送、多點接收的問題,實現了網絡中點到多點的高效數據傳送,能夠大量節約網絡帶寬、降低網絡負載。在IPv6網絡中,組播技術的應用得到了進一步的豐富和加強。MLD可以理解為IGMP的IPv6版本,兩者的協議行為完全相同,區別僅僅在于報文格式。
因此,MLD定義了一個IPv6網段內組播路由器與成員主機之間如何建立和維護組成員關系
2. IGMP與MLD
MLDv1的工作機制與IGMPv2相同,基于查詢和響應機制完成對IPv6組播組成員的管理。MLDv2在MLDv1的基礎上,增加的主要功能是成員主機可以指定接收或不接收某些組播源的報文。MLD兩個版本在演進過程中對協議報文的處理是向前兼容的,即運行MLDv2的組播路由器可以識別MLDv1的協議報文。

這里,我們以MLDv1進行舉例:
3. MLDv1工作原理
MLDv1主要基于查詢和響應機制完成對IPv6組播組成員的管理
· 查詢器選舉機制
· 加入IPv6組播組機制
· 離開IPv6組播組機制
MLDv1包含四種報文
· 普遍組查詢報文(General Query):查詢器向共享網絡上所有主機和路由器發送的查詢報文,用于了解哪些組播組存在成員;
· 特定組查詢報文(Multicast Address Specific Query):查詢器向共享網段內指定組播組發送的查詢報文,用于查詢該組播組是否存在成員;
· 成員報告報文(Multicast Listener Report):主機向查詢器發送的報告報文,用于申請加入某個組播組或者應答查詢報文;
· 成員離開報文(Multicast Listener Done):主機離開組播組時主動向查詢器發送的報文,用于宣告自己離開了某個組播組。
4. MLDv1:查詢器選舉機制
網段內有多個IPv6組播組路由器時,需要確定一臺路由器作為查詢器發送查詢報文
· 所有Router都網絡中發送MLD普遍查詢報文;
· 收到其他router的普遍查詢報文后,自行與自己的IPv6地址比較,地址最小的成為查詢器;
· 所有非查詢器上會啟動一個定時器(Other Querier Present Timer)。在定時器超時前收到來自查詢器的MLD查詢報文,則重置該定時器;否則,認為查詢器失效,并發起新的查詢器選舉。

5. MLDv1:普遍組查詢和響應機制
通過普遍組查詢和響應,MLD查詢器可以了解到該網段內那些組播組存在成員
· MLD查詢器發送目的地址為FF02::1的普遍查詢報文,收到該查詢報文的組成員啟動定時器;
· 第一個定時器查實的組成員發送針對該組的報告報文;
· 其余組成員收到此報告報文后,停止定時器,不再發送針對該組的報告報文,此功能被抑制;
· MLD查詢器收到組成員報告報文后,知道本網段內存在組播組G1的成員,并由IPv6組播路由協議生成(*,G1)組播轉發表項,一旦有組播組G1的數據到達路由器,就向該網段轉發。

6. MLDv1:加入IPv6組播組機制
網段內有新成員需要加入組播組時,會主動向MLD查詢器發送報告報文,不必等待普遍查詢報文的到來
· 右圖三個主機分別向G1、G2發送報告報文,MLD查詢器接收到成員報告報文后,了解到網段中有G1 和G2的成員,IPv6路由組播協議生成(*,G1)和(*,G2)組播轉發表項
· MLD查詢器周期性地以組播方式向本網段的所有主機和路由器發送普遍查詢報文,主機分別響應G1和G2的查詢,HostC被HostB的組成員關系報告報文抑制,不發送成員關系報告報文

7. MLDv1:離開IPv6組播組機制
通過離開組機制,MLD查詢器可以及時了解到網段內哪些組播組已不存在成員,從而及時更新組成員關系,減少網絡中冗余的組播流量
· Host B向網段內所有組播路由器發送針對組G1的離開報文;
· MLD查詢器收到離開報文,會發送針對組G1的特定組查詢報文,同時查詢器啟動組成員關系定時器(Timer-Membership);
· 網段內還存在組G1的其他成員Host C,Host C收到特定組查詢報文后會立即發送針對組G1的報告報文,查詢器收到報告報文后會繼續維護該組成員關系;
· 如果網段內不存在組G1的其他成員,查詢器將不會收到針對組G1的報告報文,在組成員關系定時器(Timer-Membership)超時后,查詢器將刪除記錄的(*,G1)組信息。

二、測試用例(以BigTao-V網絡測試儀為例)
MLD測試用例
測試目的
· 驗證DUT基本的MLD功能
· 驗證組播流量轉發功能
測試步驟
· 按圖連接好拓撲
· 測試儀端口T1連接DUT的G 0/0/1接口
· DUT的G 0/0/1接口配置MLD
· 測試儀端口T2連接DUT的G 0/0/2接口,構建組播數據流量,T1能夠接收到組播數據流量
· DUT的G 0/0/2接口配置PIM IPv6 SM,轉發組播數據流量
預期結果
· 測試儀端口T1模擬的主機可以成功加入組播組
· DUT能夠查到組播成員
· 測試儀T1端口能夠收到T2發送的流量
· 停止MLD協議仿真,測試儀T1端口不能收到T2發送的流量

三、DUT配置
1. 使用案例
#
vlan batch 500 600
#
multicast ipv6 routing-enable
#
interface Vlanif500
ipv6 enable
ipv6 address 2010::2/64
mld enable
#
interface Vlanif600
ipv6 enable
ipv6 address 2020::2/64
pim ipv6 sm
#
#
interface GigabitEthernet0/0/21
port link-type access
port default vlan 500
#
interface GigabitEthernet0/0/22
port link-type access
port default vlan 600
#
四、測試儀配置
1. 準備工作: 添加機框

2. 準備工作: 預約端口

3. 添加Interface


4. 修改Interface
· 使能“啟用網關MAC地址學習”
· 地址數量,代表模擬的主機個數
· IPv6地址,代表主機的起始IP
· IPv6網關地址,代表對接端口的IPv6地址
· IPv6 Link Local地址,鏈路本地地址

![]()
· 源MAC填寫任意單播地址(也可以不修改);目MAC填寫對應組播組的MAC地址,比如ff1e::1對應的組播MAC地址是3333-0000-0001
· 源IPv6和DUT對端IPv6設置成同網段,本例中編輯為2020::10;目的IPv6填寫T1所添·加的組播組的IP地址ff1e::1
· 可在DUT上查看加入組播組狀態,發送報告報文的主機是FE80::200:10FF:FE00:1,加入的組播組是FF1E::1
流量不通,說明主機離開了組播組ff1e::1,與預期結果一致










