主頁 >  其他 > HCNP Routing&Switching之組播技術-組播路由協議PIM

HCNP Routing&Switching之組播技術-組播路由協議PIM

2022-04-02 08:25:39 其他

  前文我們了解了組播技術中組播分發樹相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/16019334.html;今天我們來聊一聊組播路由協議PIM相關話題;組播路由協議和我們前邊學習的單播路由協議本質上沒有什么不同,不同的是組播路由協議主要生成描述組播資料轉發路徑,而單播路由協議是用來生成描述單播資料轉發路徑;

  組播路由協議PIM

  PIM(Protocol Independent Multicast,翻譯成中文就是協議無關組播);所謂協議無關是指給組播提供路由資訊的可以是靜態路由、RIP、OSPF、IS-IS、BGP等任何一種單播路由協議;這里的無關是指組播路由與是何種單播路由協議無關;只要通過單播路由能夠產生對應組播路由表項即可;之所以PIM高度依賴單播來生成組播路由表項,是因為組播路由是利用單播路由表的路由資訊進行組播報文RPF檢查,從而來創建組播路由表項,轉發組播報文;

  組播路由協議概述

  組播路由協議PIM主要運行在組播路由器之間,負責建立和維護組播路由,建立從組播源到多個接收端的無環轉發路徑,即分發樹;并正確、高效地轉發組播資料包;

  PIM的模式

  提示:PIM有兩種模式, 密集模式和稀疏模式;這兩種模式分別對應組播的兩種型別的分發樹,密集模式對應源樹,稀疏模式對應共享樹;密集模式主要用戶規模不大的組播網路環境中,而稀疏模式主要用戶大規模組播網路環境中;對于不同模式的PIM,其作業流程各不相同,但最終的目的都是生成傳播組播資料的無環路徑;

  PIM-DM作業流程

  PIM-DM(pim Dense Mode ,協議無關組播-密集模式),該模式使用“推(push)”方式來傳送資料,適用于小型網路,組播組成員相對比較密集;

  PIM-DM的作業流程主要經過鄰居發現、擴散、剪枝、狀態重繪、嫁接、Assert斷言機制;

  1、鄰居發現

  提示:PIM路由器之間會周期性的發送hello包,用于發現鄰居、建立并維護鄰居關系,這個和單播中的ospf協議很類似,只有建立起鄰居以后,才會有后續的資訊交換生成路由表項;當共享網段路由器運行的IGMP版本是V1時,此時pim會選舉DR來充當igmp里的查詢器;因為IGMPv1本身不具有查詢器選舉的功能;v2,v3IGMP自身有查詢器選舉功能,不依賴pim;pim鄰居發現程序,雙方都把hello包發往224.0.0.13這個組播地址,這個組播地址就是用于pim hello地址;即運行pim的路由器,都會監聽224.0.0.13這個地址;

  鄰居發現-DR選舉

  選舉DR,充當IGMPv1的查詢器,其選舉規則如下

  1、對比優先級,優先級高者成為DR;

  2、如果優先級一樣,則對比ip地址,ip地址大者成為DR

  注意:igmp v2 查詢器選舉規則是ip地址越小越優先和v1依賴pim選舉dr充當查詢器的規則相反;

  2、組播報文擴散程序(Flooding)

  提示:所謂擴散是將組播報文擴散到每一個運行PIM-DM的網段,沿途每一臺路由器都建立(s,g)表項;不管對應路由器下是否有接收者,對應組播資料都會先擴散過去;當然這種擴散會帶來資源的消耗(帶寬和路由器記憶體等),因為沿途路由器都會建立(s,g)表項;這里需要注意只有通過RPF檢查后的介面才會創建路由表項;

  3、剪枝加入程序(Prune/Join)

  提示:為了減少資源的消耗,對沒有組播資料轉發到分枝進行剪枝(Prune)操作,只保留包含接收者的分支;剪枝操作就是對應沒有接收者的分枝向上游介面發送Prune訊息,用來告訴上游路由器對應介面不需要發送組播資料;即對應上游路由器相關介面就不需建立(s,g)表項;如果共享網段上有路由器連接接收者,則該路由器需向上游發送join訊息覆寫其他路由器發送到prune訊息;如上圖RTD發送prune訊息以后,對應RTC對應介面就不會建立(s,g)表項,但是RTE和RTD是共享網段,RTD發送Prune訊息,對應RTE也會收到,但是RTE下有接收者,所以RTE會發送join訊息來覆寫RTD發送到prune訊息;所以對應RTC來說,它對應介面還是會建立表項;剪枝是有剪枝超時計時器,這個時間是210秒;也就是說210秒過后如果沒有人發送prune訊息,對應介面又會恢復成轉發資料的狀態;

  SPT的形成

  提示:經過上述的擴散-剪枝程序以后,形成組播源到組播接收者之間的SPT;擴散-剪枝程序是周期進行,由定時器控制,這個定時器是180s;也就是說每180s就會擴散一次;所以上述的剪枝超時210秒正常情況下都不會超時,即對應沒有接收者的路由對應介面不會變為轉發狀態;

  4、狀態重繪機制

  提示:狀態重繪主要用來降低組播報文擴散到頻率,節省網路帶寬;狀態重繪是離組播源最近的路由器發送state refresh訊息,該訊息會沿SPT的路徑向每個路由器擴散,收到該訊息的路由器,對應路由器上介面的擴散、剪枝定時器都會重繪,從而降低擴散-剪枝所帶來的網路資源消耗;狀態重繪的發送周期是60秒;

  5、嫁接(Graft)機制

  提示:當被剪枝分支的節點上出現了組播組成員時,為了減少該節點恢復成轉發狀態所需的時間,使用嫁接(graft)機制主動恢復其對應組播資料的轉發;當路由器需要上游發送組播報文時,向上游發送Graft訊息,上游路由器收到Graft訊息后恢復Graft ACK訊息進行確認,對應路由器的介面就會轉變為轉發狀態;如上圖所示,RTF上如果有新的接收者出現,首先接收者通過IGMP發送成員報告,當RTF收到成員報告以后,它會立即向其上游RTC發送Graft訊息,RTC收到graft訊息以后,向RTF恢復graft ACK確認,此時,RTC和RTF上對應介面就會建立表項,對應介面也會恢復成轉發狀態,進行資料轉發;

  6、Assert斷言機制

  提示:斷言機制主要針對在一個網段內如果存在多臺組播路由器,則相同的組播報文會被重復發送到該網段,通過斷言機制可以選定網段上唯一的組播資料轉發者;如上圖所示,RTA和RTB到達組播源是等價路由,那么對于RTC來說,如果沒有斷言機制,它可能從RTA和RTC都收到組播資料,這樣一來RTC就會收到兩份一模一樣的資料;為了解決RTC收到重復的組播報文,此時RTA和RTB會發送Assert訊息,對應A和B收到對方的Assert訊息以后,根據規則,其中一方路由器會停止轉發資料;

  Assert選舉網段上唯一的組播資料轉發者規則

  1、比較到組播源的優先級,優先級高者勝出成為組播資料轉發者;

  2、如果優先級一樣,則比較到組播源的度量值,度量值小者成為組播資料轉發者;

  3、如果優先級、度量值都一樣,則比較本地介面ip地址,ip地址大者成為組播資料轉發者;

  實驗:如下拓撲配置pim 密集模式

  配置PC1

  配置PC2

  配置組播源

  配置R1

sys
sys R1 
int g0/0/0
ip add 11.0.0.254 24
int g0/0/1
ip add 13.0.0.1 24

ospf 123 router-id 1.1.1.1
area 0
net 11.0.0.254 0.0.0.0
net 13.0.0.1 0.0.0.0
q
q

multicast routing-enable

int g0/0/0
pim dm
igmp en
int g0/0/1
pim dm 
View Code

  提示:因為R1是靠近接收者的路由器,所以對應介面下需要開啟igmp;跑ospf是讓三個路由器的網路互通;當然你也可以使用靜態、RIP等都可以,只要網路互通即可;

  配置R2

sys
sys R2 
int g0/0/0
ip add 22.0.0.254 24
int g0/0/1
ip add 23.0.0.2 24

ospf 123 router-id 2.2.2.2
area 0
net 22.0.0.254 0.0.0.0
net 23.0.0.2 0.0.0.0
q
q

multicast routing-enable

int g0/0/0
pim dm
igmp en
int g0/0/1
pim dm 
View Code

  配置R3

sys
sys R3
int g0/0/0
ip add 13.0.0.3 24
int g0/0/1
ip add 23.0.0.3 24
int g0/0/2
ip add 31.0.0.3 24

ospf 123 router-id 3.3.3.3
area 0
net 13.0.0.3 0.0.0.0
net 23.0.0.3 0.0.0.0
net 31.0.0.3 0.0.0.0
q
q

multicast routing-enable

int g0/0/0
pim dm
int g0/0/1
pim dm
int g0/0/2
pim dm
View Code

  驗證R1ospf鄰居和路由情況

  提示:可以看到R1和R3建立起鄰居,其狀態為full;

  提示:可以看到R1已經學習到R2和R3上的路由;

  驗證R2ospf鄰居和路由情況

  提示:可以看到R2已經和R3建立起ospf鄰居,且狀態為full;對應R2已經學習到R1和R3上宣告的路由;

  驗證R3ospf鄰居和路由情況

  提示:可以看到R3和R1和R2分別建立起ospf鄰居,且狀態為full;對應R3也學習到R1和R2上的路由;至此組播的基礎環境已經搭建好;

  驗證:R1、R2、R3組播鄰居

  提示:可以看到R1、R2分別和R3互相建立起鄰居;

  啟動組播源,在R2上抓包

  提示:可以看到我們啟動組播源以后,對應在R2發送了prune訊息;這是因為R2上沒有接收者,所以在把組播資料擴散到全網路由器以后,沒有接收者的路由器發送prune訊息,進行剪枝;

  驗證:查看pim路由

  提示:可以看到三個路由器通過擴散剪枝這個程序后,對應pim的路由就生成了;這三個路由器上生成的pim表項都有一個特點是自由上游口,沒有下游口,這是因為R1和R2都沒有出現接收者;

  將pc2加入組播組,抓包查看對應資料包

  提示:可以看到pc2加入組播組,對應靠近接收者的介面會收到接收者發送的igmp 成員報告,R2收到igmp的成員報告后,立刻向上游R3發送嫁接(graft)訊息,R3收到R2的嫁接訊息以后,對應恢復graft-ack進行確認;此時R2和R3的pim路由就會有下游介面;

  驗證:查看R2和R3的pim路由,看看對應是否有下游介面?

  提示:可以看到R2和R3的pim路由中都產生了下游介面;

  把pc1加入組播組,看看R3上的路由有什么變化?

  提示:可以看到pc1加入組播組以后,對應R3路由中就多了一個下游介面;

  驗證:查看R1的pim路由,看看有什么變化?

  提示:可以看到R1的路由表中對應路由也有了下游介面;同時我們也注意到也多了一條共享樹(*,g)的表項;這是因為R1下有了接收者以后,對應就會生成共享樹;

  pc1離開組播組,看看R1的路由有什么變化?

  提示:可以看到PC1離開組播組以后,對應R1的路由中對應下游介面也沒有了,隨之(*,g)的路由表項也沒有了;

  查看R2路由表的詳細資訊

  提示:pim都是基于介面的,所以查看詳細資訊我們需要查看某一個介面下的詳細資訊;其中我們可以看到詳細資訊中列出了pim版本資訊,模式,DR 的地址,這里我們使用的是默認igmp v2的版本,所以他這里不會充當igmp的查詢器,由igmpv2的規則自動選舉產生;除此之外還有hello包間隔時間是30秒,死亡時間是105秒,斷言assert死亡時間是180秒;剪枝加入的間隔時間是60秒,超時時間是210秒,狀態重繪時間是60秒,嫁接延遲時間是3秒;

  實驗:如下拓撲圖配置pim 抓包查看assert訊息

  R1的配置

sys
sys R1
int g0/0/0
ip add 11.0.0.1 24
int g0/0/1
ip add 12.0.0.1 24

multicast routing-enable

int g0/0/0
pim dm
int g0/0/1
pim dm 
View Code

  R2的配置

sys
sys R2
int g0/0/0
ip add 11.0.0.2 24
int g0/0/1
ip add 22.0.0.2 24

multicast routing-enable

int g0/0/0
pim dm
int g0/0/1
pim dm 
View Code

  運行組播源,在lsw2上任意介面抓包

  提示:可以看到當我們啟動組播源以后,對應在lsw2上就能抓到assert包,其中R1R2都會發送的assert包,當assert包都發送以后,會根據各自包中攜帶的資訊進行對比,根據規則在此環境中R2應該要勝出,因為在在優先級和開銷都一樣的情況下,本地介面ip地址大者勝出;

  提示:可以看到在assert包沒發送之前,R1和R2都在轉發組播資料;

  提示:可以看到assert包發送以后,后續都是R2在轉發資料;

  驗證:查看R2的g0/0/1口的mac地址是否是12bd?

  提示:可以看到我們抓到組播資料報中對應源mac地址正是R2的g0/0/1的mac地址,說明我們在交換機上抓到包都是由R2轉發,R1因為assert沒有勝出,所以R1并不轉發資料;

作者:Linux-1874 出處:https://www.cnblogs.com/qiuhom-1874/ 本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/454625.html

標籤:其他

上一篇:架構的名稱和在服務而不是控制器中使用dbcontext的目的是什么?

下一篇:呼叫華為游戲 SDK 的 getCurrentPlayer 介面回傳6004

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more