HCNP Routing&Switching之組播技術-IGMP-Snooping

1874發表於2022-02-03

  前文我們瞭解了組播協議IGMP相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15700550.html;今天我們來聊一聊二層交換機處理組播報文所面臨的問題,以及IGMP-Snooping相關話題;

  我們知道二層交換機在單播通訊中的工作原理就是根據構建mac地址表來轉發資料,如果二層交換機收到一個未知的單播或廣播報文,那麼它會泛洪出去;對於組播資訊它會如何處理呢?其實二層交換機收到組播報文,預設情況下,它會把組播報文當作廣播處理,即 收到組播報文,它會泛洪出去;這樣一來對於接入同一二層交換機的組播客戶端,在沒有加入對應組播組的情況下也會照常收到組播源傳送的組播報文;很顯然,這無形是對那些不需要接收對應組播報文的客戶端的頻寬造成浪費,擁堵;為了解決這樣的問題;igmp-snooping出現了;igmp-snooping的主要作用是嗅探組播資訊,從而根據組播資訊建立起組播mac地址表,從而實現隔離那些未加入對應組播組的客戶端流量;簡單講就是,有了igmp snooping,在同一二層交換機收到對應組播報文,它不會全域性泛洪,而是根據對應的組播mac表來轉發資料,從而規避了全域性泛洪所帶來的困擾;如下如所示

  提示:如上圖所示,在客戶端B加入G2組,在對於非g2組的客戶端A和C來說,它們也能正常收到G2組播源傳送的組播資訊(原因是二層交換機把組播報文當作廣播處理了);這就是二層組播資料轉發時,說面臨的問題;它會造成網路資源的浪費,以及一些安全隱患的存在;

  IGMP Snooping工作原理

  提示:首先在二層交換機上執行igmp snooping ;在路由器傳送查詢給交換機,對應交換機會收到查詢,此時二層交換機會在核心建立一個組播mac表,把對應收到查詢把文介面和對應組播mac地址做關聯;然後把查詢泛洪出去;對應組播接收者收到路由器的查詢,然後把報告報文傳送給交換機,此時交換機會把接受報告的埠和對應組播mac做關聯;這樣一來就建立起組播mac地址表項;後續二層交換機就根據這個組播mac表項來轉發資料;

  提示:我們把收到查詢報文的介面叫做路由器埠(上游介面);把收到報告的介面叫做成員埠(下游介面);對於路由埠和成員埠的生成有兩種方式,第一種就是動態生成,即通過igmp的普遍查詢或pim 的hello包動態生成路由介面;通過收到IGMP report報文的介面自動生成成員埠;這種方式是動態生成路由介面或成員介面;第二種方式就是手動配置路由介面或成員介面,這種方式成為靜態路由埠或成員埠;路由埠主要作用是接受組播資料的上游介面,而成員埠主要作用是傳送組播資料給下游介面;

  提示:igmp snooping的工作原理總結為路由器傳送查詢,組播成員傳送報告,從而交換機構建起組播mac表項;從而實現規避二層交換機收到組播報文泛洪;

  提示:路由器週期性傳送普遍查詢報文,該報文會被交換機收到,此時交換機會泛洪該報文,從而交換機上的所有的埠都會收到查詢報文,此時交換機就會建立起一張二層組播轉發表,該表的內容是對應組播mac和對應的埠;並把1口標記為路由介面(收到查詢報文);如果clientB 希望加入組播組,此時clientB會傳送一條IGMP成員報告,對應報告中就會有目的mac地址,交換機從3口收到對應報告以後,通過igmp snooping處理以後,它會把3口加入到對應組播mac對應的埠裡,並把3口標記為成員埠(收到報告的埠);同樣的道理clientc加入對應組播組,它也會傳送一條主動報告給交換機,交換機收到對應報告以後,它會把4口加入到對應組播組對應的埠裡;這樣一來就形成了一個二層組播轉發表;所以對於啟用IGMP snooping的交換機來說,有了這個表項,對應組播組的資料就會現在只對應的埠上首發,而不會傳送給其他埠;

  IGMP和IGMP-Snooping配置

  實驗拓撲如下

  分析:首先我們需要配置好個裝置的ip地址和組播地址,然後在路由器上配置上pim;這裡需要說明一點,所有組播都是基於單播實現的,所以我們需要先把單播搞通,然後再配置組播igmp和igmp-snooping;這個實驗在ensp模擬器上二層交換機開啟igmp-snooping時會有bug,導致組播客戶端傳送的報告路由器收不到,路由器傳送的查詢,組播客戶端收不到,所以路由器面向二層交換機的介面會認為沒有客戶端(因為查詢發出去沒有人報告給它);所以我們還需要在路由器面向交換機的介面配置靜態組播組資訊;

  配置客戶端地址

  驗證pc1和pc2互通

  提示:可以看到pc1和pc2是可以正常通訊的;

  配置路由器各介面ip地址

HCNP Routing&Switching之組播技術-IGMP-Snooping
sys
sys r1
int g0/0/0
ip add 1.0.0.100 24
int g0/0/1
ip add 2.0.0.100 24
View Code

  驗證路由器各介面是否正常up

  配置組播源伺服器ip地址

  配置組播源

 

  驗證:客戶端到組播源伺服器的單播是否能夠正常通訊?

  ok,到此該實驗的單播網路已經搞通,接下來是在路由器上配置igmp 和pim

  在路由器上全域性開啟組播路由功能

  提示:只有在組播路由器上開啟了組播路由功能以後,後續的igmp和pim才能夠正常開啟;

  在路由器面向二層交換機介面開啟pim以及igmp

  在路由器面向組播源介面開啟pim以及igmp

  驗證路由器組播組資訊

  提示:如果pc客戶端不加入對應組播組在路由器上是看不到對應組播組資訊的;此時如果不考慮igmp-snooping 那麼組播源的資料就能正常傳送給組播客戶端;

  驗證:在pc1所在鏈路上抓包

  提示:可以看到組播源傳送資料,對應pc1所在鏈路也會收到資料;但二層交換機它對於組播的處理和處理廣播的方式一樣都是泛洪,所以pc2即使沒有加入組播組,對應鏈路上也會收到組播資料;

  在二層交換機上開啟igmp-snooping

  提示:在交換機上開啟了igmp-snooping以後,由於模擬器bug原因會導致路由器傳送到查詢客戶端收不到,當然客戶端也無法正常報告給路由器,所以時間一旦超時,在路由器上的組播組資訊就會被刪除,即路由器不會向交換機轉發組播資料;

  在路由器上面向交換機的介面上新增靜態組播組資訊

  提示:可以看到之前路由器上的組播組資訊已被刪除,原因是在交換機上開啟igmp-snooping以後隔斷了路由器和客戶端查詢和報告;手動在路由器上面向交換機的介面下配置靜態組播組資訊是讓組播資料一直會從對應介面傳送出去;

  在交換機上檢視路由介面

  提示:可以看到交換機通過igmp-snooping已經分析出eth0/0/1口是路由器介面;這個和我們的拓撲很吻合;

  在交換機上檢視成員介面

  提示:現在提示我們沒有成員介面;原因是交換機沒有收到報告,所以它認為沒有成員;

  在pc1上點選加入對應組播組,看看對應成員介面是否在交換機上看到?

  提示:可以看到交換機收到pc1傳送的報告以後,對應就把連線pc1埠加入到對應組播組的成員埠中;正常情況下此時組播資料只會向pc1所在埠轉發,但是由於bug的原因,此時資料還是會泛洪;即pc2所在埠雖然沒有加入組播組,但還是可以收到組播資料;這個是模擬器bug;到此igmp-snooping的配置就完成了;

相關文章