999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VxWorks 的PIM-SM 協議的改進設計*

2023-02-02 02:52:42吳明曦劉小娟毛天立
通信技術 2023年12期

張 成,吳明曦,劉小娟,毛天立

(武漢中原電子集團有限公司,湖北 武漢 430205)

0 引言

隨著移動無線自組網(Mobile Ad hoc Networks,MANET)的需求和場景不斷拓展,多媒體傳輸需求越來越多,而組播技術很好地解決了傳統單播和廣播技術在新需求下出現的帶寬消耗急劇上升、網絡資源浪費等問題[1-2]。

IP 組播的研究始于20 世紀80 年代,隨著用戶規模的增加,域內組播協議相繼提出,包括距離向量多播選路協議(Distance Vector Multicast Routing Protocol,DVMRP)、組播開放最短路徑優先(Multicast Open Shortest Path First,MOSPF)、協議無關組播(Protocol Independent Multicast,PIM)等。其中DVMRP 由RFC 1075 文件提出,是從路由信息協議(Routing Information Protocol,RIP)協議改進而來[3];MOSPF 由RFC 1584 文件提出,拓展了開放式最短路徑優先(Open Shortest Path First,OSPF)路由協議[4];組播協議開始多從單播協議改進或拓展而成,而PIM 協議則很好地解決了這個問題。

1997 年,RFC 2117 定義了協議無關組播的密集模式(PIM-Dense Mode,PIM-DM),主要用于局域網應用場景[5-6];RFC 2236 定義了互聯網組管理協議(Internet Group Management Protocol,IGMP),用于獲取組信息和成員信息[7]。1998 年,RFC 2362 定義了協議無關組播的稀疏模式(PIMSparse Mode,PIM-SM)的工作原理和實現機制,主要用于大范圍域間網絡場景[8]。PIM-SM 組播協議為多點通信業務的開展提供了良好的技術支撐,它可以有效利用帶寬,避免重復發送造成的網絡資源浪費,可以提高數據傳遞效率,還可以避免廣播風暴問題出現[9-12]。

VxWorks 操作系統是WindRiver 公司于1983 年設計開發的一種嵌入式實時操作系統(Real-Time Operating System,RTOS),是嵌入式開發環境的重要組成部分。VxWorks 以其良好的可靠性和卓越的實時性被廣泛應用于通信、軍事、航空、航天等對實時性要求極高的領域中[13-14]。VxWorks 的多任務調度策略為搶占式調度,具有多個可選組件模塊,能在實際的工程任務中同時具有靈活、占用空間小和高實時性的特點,能很好地滿足移動無線通信需求。

在組播技術方面,VxWorks 支持IGMP,但缺乏對PIM 協議的支持。同時,標準PIM-SM 協議需要內核提供支持,與內核有較大的耦合性,不利于跨平臺、跨硬件使用與移植。故針對降低同VxWorks 內核組件的耦合程度,同時改進協議在無線自組網環境下的問題的研究很有必要。

1 組播協議

1.1 IGMP 協議

IGMP 協議是在主機與其直連的組播路由器之間建立和維護組播組成員關系的Internet 組管理協議。IGMP 協議有3 個版本,分別是IGMPv1、IGMPv2 和IGMPv3。關于IGMP 協議3 個版本涉及的查詢器選舉和對各種消息的支持情況如表1所示。

表1 IGMP 協議版本對比

1.2 PIM-SM 協議

PIM 是協議無關的組播路由協議,協議無關是指PIM 協議在運行過程中不依賴某一種單播路由協議,而是利用單播路由協議建立的單播路由表作為組播路由的基礎。PIM-SM 協議是PIM 協議的稀疏模式,該模式下假設所有主機均不需要接收組播數據,只有在主機明確要接收某組播組的數據時,才構造到主機的組播路由,并把數據轉發至要接收組播數據的主機。

1.2.1 基本概念

在PIM-SM 協議中,主要有指定路由器(Designated Router,DR)節點、匯聚點(Rendezvous Point,RP)節點(候選RP 節點)、自舉路由器(Bootstrap Router,BSR)節點(候選BSR 節點)、以RP 節點為根節點的共享樹(Rendezvous Point Tree,RPT)、最短路徑樹(Shortest Path Tree,SPT)、(*,G)和(S,G)路由表項等核心概念。其中,DR 節點是該網段中組播報文的唯一轉發節點;RP節點是匯集節點,用于處理組播數據源端DR 發送的注冊消息及接收端的組播組成員的加入請求;BSR 節點管理RP 節點的選舉,候選RP 節點將RP信息單播到BSR 節點,BSR 節點將收到的候選RP信息周期性地洪泛至全網;RPT 樹是以RP 為根,數據接收者為葉子節點的共享樹,在沒有可用SPT樹時,組播數據沿該樹轉發;(*,G)路由表項存在于RPT 樹中,表示特定組在共享樹中的狀態,其源可以為任意源,G 為所加入的組播組;SPT 樹以組播源為根,接收者或RP 節點為葉子節點的最短路徑樹,在完成SPT 切換后,組播數據沿該樹轉發;(S,G)路由表項表示一個特定組播流,S 表示發送組播數據的源IP 地址,G 表示發送組播報文的目的地址,即組播組地址。

1.2.2 協議機制與數據轉發過程

PIM-SM 協議的核心機制包含PIM 鄰居發現、DR 選舉、RP 選舉、組播源注冊、RPT 樹和SPT 樹的構建和維護等部分,主要由如表2 所示的幾種消息來完成。

一方面,在啟動PIM 任務后,當有主機(記為主機A)加入組播組時,與主機A 直連的DR 節點(記為節點A)向RP 節點發送Join 消息,沿途經過的節點均會新建(*,G)表項,從而形成一棵RPT 樹。當有主機(記為主機B)開始發送數據時,與主機B 直連的DR 節點(記為節點B)將主機B 下發的組播數據封裝成Register 消息,并以單播的形式發往RP 節點,RP 節點收到Register 消息后,向節點B 發送Join 消息,沿途建立(S,G)表項,建立節點B到RP 節點之間的SPT 樹,同時組播數據沿RPT 樹發往節點A,從而實現了組播數據的轉發。

另一方面,當(S,G)表項均建立完成后,RP 節點向節點B 發送Register-stop 消息。當速率或者包數達到閾值后,節點A 向節點B 發送Join 消息來完成SPT 樹切換,同時向RP 方向發送Prune 消息實現(*,G)表項的剪枝操作。另外,本文討論的PIM-SM 機制的實現源碼均是基于版本號為pimd-2.3.2 的Release 版本開展討論的。

2 基于無線自組網和VxWorks 的PIM-SM改進與設計

2.1 IGMP 模塊改進與移植配置

當一個網段內有多個路由器時,IGMPv1 協議通過PIM-SM 協議選舉出來的網內唯一轉發者(如DR 節點)充當查詢器。IGMPv2、IGMPv3 協議使用獨立的查詢器選舉算法選出查詢器,該查詢器向同一網段內所有組播路由器和主機發送查詢消息,了解和維護組播組成員信息。但在移動無線自組網下,可能存在很多節點處于同一個網段或有節點頻繁入、退網,而只有一個查詢器存在抗毀性差、查詢開銷大、時延長、成員關系報告不及時等問題?;诖?,本文提出了一種改進方法,在節點啟動后默認選擇自身為當前網段查詢器并發送查詢消息時,PIM 任務不將該查詢消息發給其他PIM 路由器節點,即每個節點都是一個查詢器,也是DR 節點。該查詢器發出的查詢消息只發送給與其直連的電腦主機或網控終端,接收與其直連的電腦主機或網控終端的組成員關系報告報文,實現組成員管理的功能。

VxWorks 提 供COMPONENT_IPMCP 宏 和INCLUDE_IPMCP、INCLUDE_IPMCP_USE_IGMP、INCLUDE_IPNET_USE_MCAST_ROUTING 等組件來支持IGMP 協議的功能。具體而言,首先需要創建Wind River VxWorks6.9 Source Build(Kernel Library)Project 工程(下稱VSB 工程),將宏COMPONENT_IPMCP 的編譯項改為y,重新編譯該工程。而后基于該VSB 工程創建Wind River VxWorks6.9 Image Project工程(下稱VIP 工程),將INCLUDE_IPMCP、INCLUDE_IPMCP_USE_IGMP、INCLUDE_IPNET_USE_MCAST_ROUTING 等組件包含進來,重新編譯該VIP 工程,生成VxWorks 內核文件,并對相關結構體和socket 進行適配。

2.2 PIM-SM 協議的解耦設計與改進

PIM-SM 協議的運行涉及協議模塊、VxWorks內核模塊,以及兩者之間的信令交互。協議在組播組成員發生變化,如組播組成員加入、退出或組播路由表項定時器超時等情況下,會產生或處理Join/Prune 消息等報文,并將有變化的組播路由表項更新至本地組播路由緩存,通過復用套接字的方式將組播路由表項更新至內核組播路由表(Multicast Routing Table,MRT)中。內核在轉發組播數據報文時,會調用組播轉發狀態機函數查詢單播路由表進行逆向路徑轉發(Reverse Path Forwarding,RPF)檢查和MRT 查詢組播路由,在校驗通過后將組播數據包發送至轉發隊列進行轉發。若查找失敗或校驗不通過,則內核通過守護進程觸發“IGMPMSG_NOCACHE”“IGMPMSG_WRONGVIF”“IGMPMSG_WHOLEPKT”等類型信令的處理操作。而PIM-SM 協議在使用中通常要求組播數據轉發接口和來源接口不相同,即通過區分上下游接口來判斷數據流向,以防止發生組播數據風暴。

不難發現,PIM-SM 協議的處理與內核模塊存在較強的耦合。在實踐中,存在路由表項不寫入內核,電臺的收發使用同一接口,內核缺乏對PIMSM 協議的功能支持等情況。這些情況會導致內核查詢路由表異常,PIM-SM 協議的Bootstrap 消息洪泛和組播路由表建立異常,以及PIM 交互報文和組播數據包處理流程不能正確觸發等不良后果。基于此,本文設計了一套報文交互和數據包處理流程,取代內核中的處理操作,以降低PIM-SM 協議與內核的耦合,將PIM-SM 協議適配進可能存在上述情況的實踐中。

2.2.1 單播、組播路由和接口改進

PIM 任務在設置iif(incoming interface)接口、查找鄰居PIM 路由器等處理中會通過Netlink 通信機制查詢單播路由表中的信息,但不同平臺或操作系統對Netlink 機制的兼容度不同,或在單播路由表項不寫入內核時,該機制便會出現異常。然而,PIM-SM 協議是一個與單播路由協議無關的組播協議,故本文結合實際情況,在單播路由協議中提供單播路由查詢接口,同時將PIM-SM 協議中有關該部分的處理都予以替換、刪減。對于組播路由,在本地維護一套組播路由表,以方便組播數據包的轉發和PIM 任務的命令觸發功能。

同時,PIM-SM 協議通常要求路由器有兩個以上接口,通過RPF 檢查等方式來避免報文重復發送等問題。但事實上,面對單接口等應用場景,本文方法會在報文發送或接收時添加一個重復包檢測和過濾模塊,對內容完全相同的報文進行檢查并丟棄,而后取消age_routes()、change_interfaces()等函數和Bootstrap 消息等處理中對incoming 接口和outcoming接口的限制,便能適配PIM-SM 協議。

2.2.2 與內核解耦及任務設計

上下層(如驅動層、MAC 層)與PIM-SM 協議的所有交互報文不通過套接字發送至內核,也不由內核進行信令觸發與轉發調度,而是交由以下6個任務和兩個接口進行調度,分別是下行報文任務、IGMP 任務、下行數據任務、上行報文任務、PIM信令任務、上行數據任務和上行接口、下行接口。各任務與各接口之間的關系如圖1 所示。

圖1 任務與接口關系

當PIM-SM 協議啟動后,節點發送IGMP 查詢消息,該消息通過上行接口送至主機側。當主機有加組或退組等操作或者發送組播數據時,主機通過下行通道將報文送至下行報文任務,下行報文任務進行報文合法性校驗,而后根據協議類型區分IGMP 信令和下行組播數據,并發送至對應的任務。當收到下行IGMP 信令時,因成員加組或退組可能會觸發PIM 信令的產生和處理。當有下行組播數據時,調用組播路由表查詢組播路由,并可能觸發PIM 信令(如register 消息和“IGMPMSG_NOCACHE”等信令),決定該組播數據以何種方式下發并進行重復性檢測。換言之,IGMP 信令與PIM 信令、下行數據處理與PIM 信令、PIM 信令與上行數據處理、上行數據處理與下行數據處理之間也有關聯關系。

當本節點從上行報文任務收到報文時,進行報文合法性校驗,而后根據協議類型區分是PIM 信令或是上行組播數據,并發送至對應的任務。若是PIM 信令報文(如hello 消息,Register 消息),復用協議源碼accept_pim()函數分類處理。若是上行組播數據,則查詢組播路由表,根據表項決定組播數據上送主機或轉發、信令觸發等操作。

當然,上述任務與接口中均不包含PIM-SM 協議中報文交互的具體處理和建立路由的過程。IGMP報文、PIM 報文交互內容是上文中適配過的處理流程。

2.2.3 數據包下發與轉發

當圖1 中的下行報文任務接收到主機下發的組播數據包時,下行數據任務的處理流程如圖2 所示。

圖2 下行數據處理流程

從圖2 可知,組播數據的下發不僅要查詢路由表項,而且要根據路由表項和標記位(如MRTF_SPT/ MRTF_WC 標記位)來判斷是否要做出對應的處理。值得注意的是,當(S,G)條目可用時,仍需判斷注冊抑制定時器的狀態。

另外,由于本文中適配了單接口的情形,所以在組播數據下發和轉發過程中不會觸發“wrong iif”的處理消息,對來源接口和出接口沒有限制,也簡化了PIM-SM 協議的處理。

在上行數據任務收到組播數據包時,查詢路由表項,如(S,G)和(*,G)。若能找到可用表項,則將數據包上送與轉發。

3 實測環境搭建與結果分析

為驗證上述方案的可行性,搭建兩對“主機-電臺”的實測環境,如圖3 所示。

圖3 實測環境

實測環境中,電臺運行VxWorks 操作系統,版本為VxWorks6.9;主機運行Windows 操作系統,版本為Windows 7。Windows 系統支持IGMPv3 協議,VxWorks系統中包含IGMPv3協議的相關宏和組件,經編譯進內核后可支持IGMPv3 協議的交互操作。

將本方案適配進Ad hoc 時,會獲取主機的ip地址來替換電臺的網口ip 地址,并參與單接口的PIM-SM 協議運行。

首先,在PIM-SM 協議的配置文件pimd.conf 中,將電臺1 和電臺2 都配置成候選BSR 和候選RP 節點,并且將電臺1 配置成全域唯一的靜態RP。運行PIM-SM 協議后,兩個電臺都會發送組播組成員Query 消息、Hello 消息、Bootstrap 消息等交互消息,經過BSR 選舉算法計算后,將電臺2 選舉為BSR節點。

其次,操作自研Qt 組播數據收發終端將主機2加入組播組(225.3.2.1),使用Wireshark 進行抓包,結果如圖4 所示。

圖4 Wireshark 抓包結果

結果表明,當電臺2 作為查詢器發送Query 消息后,主機2 能通過Report 報文響應查詢消息,將加入的組播組報告給電臺2 中運行的PIM-SM 任務。該PIM-SM 任務隨即創建(*,G)表項,而后發送Join 消息至RP 節點并創建(*,G)等路由表項,PIM-SM 協議的日志打印如圖5 所示。

圖5 (*,G)路由表項

最后使用自研Qt 組播數據收發終端從電臺2給電臺1 發送組播數據包。根據本方案的策略,會有將數據包封裝并發送注冊消息等處理操作,且電臺1 能正確收到組播數據包。本實測實驗囊括了PIM-SM 協議運行的核心內容,證明了該方案的正確性和可行性。

4 結語

PIM-SM 協議作為一種可行的組播技術得到了業界的青睞,同時VxWorks 操作系統因其優良的特性廣泛應用于軍事領域。結合移動無線自組網的需求,本文對基于VxWorks 的PIM-SM 協議移植做出了適配和改進,并提出了一種PIM-SM 協議與內核交互解耦的設計方法,最后通過實測驗證了方案的可行性??紤]到本方案中當前域內組播的單RP 節點的抗毀性差等問題,下一步研究需要考慮多RP 節點的PIM-SM 協議在移動無線自組網中的應用及多RP節點集合頻繁變動帶來的組播路由震蕩的問題。

主站蜘蛛池模板: 久久77777| 国产尤物视频网址导航| 久久无码免费束人妻| 色色中文字幕| 国产噜噜噜视频在线观看 | 无码网站免费观看| 亚洲码一区二区三区| 国内熟女少妇一线天| 人人91人人澡人人妻人人爽| 免费毛片全部不收费的| 亚洲成a人片77777在线播放| 99久久精品无码专区免费| 亚洲成a人在线观看| 国产青青操| 免费毛片全部不收费的| 91在线播放国产| 亚洲色欲色欲www网| 人妻丰满熟妇av五码区| 四虎在线观看视频高清无码| 亚洲欧洲日产无码AV| 亚洲国产成熟视频在线多多| 全裸无码专区| 欧美一级高清免费a| 国产白浆在线观看| 国产欧美视频一区二区三区| 国产三级a| 国产成本人片免费a∨短片| 青草视频久久| 福利视频一区| 超碰精品无码一区二区| 99在线观看国产| 欧美福利在线播放| 伊人五月丁香综合AⅤ| 在线精品亚洲一区二区古装| 亚洲精品欧美重口| 伊人激情综合| 香蕉精品在线| 欧美日韩亚洲综合在线观看| 亚洲欧洲免费视频| 国产亚洲一区二区三区在线| 久久国产精品娇妻素人| 国产麻豆另类AV| 免费在线一区| 国产成人高清精品免费5388| 久久中文电影| 在线观看免费黄色网址| 秋霞午夜国产精品成人片| 伊人成人在线| www中文字幕在线观看| 久久免费成人| 中文字幕在线永久在线视频2020| 亚洲国产日韩一区| 制服丝袜 91视频| 国产99欧美精品久久精品久久| 欧美一道本| 最新亚洲人成无码网站欣赏网| 自拍亚洲欧美精品| 成人日韩精品| 999精品色在线观看| 精品视频在线一区| 久久久波多野结衣av一区二区| 亚洲天堂视频在线观看| 国产成人91精品免费网址在线| 色爽网免费视频| 青青操国产视频| 亚洲无码久久久久| 亚洲天堂啪啪| 精品亚洲欧美中文字幕在线看| 国产91无毒不卡在线观看| 九色免费视频| 久久婷婷五月综合97色| 亚洲天堂网视频| 99er这里只有精品| 中文字幕首页系列人妻| 欧美一区二区丝袜高跟鞋| 一级毛片a女人刺激视频免费| 国产麻豆精品手机在线观看| 全色黄大色大片免费久久老太| 欧洲熟妇精品视频| 最新国产精品鲁鲁免费视频| 91区国产福利在线观看午夜| 国产精品短篇二区|