• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于P4的Segment Routing設(shè)計方案

    2021-06-28 19:40:44陳梅蘇晨趙靜雅高震宇
    電腦知識與技術(shù) 2021年10期
    關(guān)鍵詞:軟件定義網(wǎng)絡(luò)

    陳梅 蘇晨 趙靜雅 高震宇

    摘要:本文結(jié)合Segment Routing業(yè)內(nèi)常使用的SR-MPLS轉(zhuǎn)發(fā)平面的規(guī)則,設(shè)計了基于P4的Segment Routing方案。P4程序部分包括了基本轉(zhuǎn)發(fā)邏輯和Segment Routing標簽處理邏輯,用于在P4交換機上編譯運行實現(xiàn)數(shù)據(jù)平面功能。使用ONOS控制器做Segment Routing的控制平面指導(dǎo)流表的下發(fā),底層P4交換機從ONOS控制器的通告中得知對每個Segment的處理方法。

    關(guān)鍵詞:Segment Routing;P4;軟件定義網(wǎng)絡(luò);協(xié)議無關(guān)

    中圖分類號:TP393? ? ? 文獻標識碼:A

    文章編號:1009-3044(2021)10-0223-03

    1引言

    當前基于互聯(lián)網(wǎng)的業(yè)務(wù)發(fā)展速度非常迅猛,這一現(xiàn)象給網(wǎng)絡(luò)基礎(chǔ)架構(gòu)發(fā)出了很大的挑戰(zhàn),業(yè)界需要一種全新的技術(shù)來支撐越來越被人們重視的基于業(yè)務(wù)和應(yīng)用的超大規(guī)模流量工程。路由收斂速度的主要問題往往不在于控制平面和路徑計算算法,而是在于路由處理器往線卡發(fā)送FIB更新的時間,以及從線卡CPU往線卡硬件轉(zhuǎn)發(fā)表寫入這些更新的時間。Segment Routing正是將這一個問題進行了思想的革新[1]。Segment Routing是在SDN環(huán)境下一種全新的應(yīng)用驅(qū)動網(wǎng)絡(luò)思想,它將網(wǎng)絡(luò)中的指令抽象成Segment,直接使用報文頭部的字段指導(dǎo)交換機的動作[2]。SDN控制器由于其具有的集中式管控的全局視角很適合作為Segment Routing的控制平面,但是在使用SDN交換機作為轉(zhuǎn)發(fā)工具時,會存在硬件限制,白盒交換機不足以支持Segment Routing靈活的標簽棧需求[3]。在這種情況下,使用可以自定義轉(zhuǎn)發(fā)規(guī)則的P4交換機就可以更好地支持Segment Routing和SDN控制器的結(jié)合[4]。

    P4(Programming Protocol-Independent Packet Processors可編程協(xié)議獨立數(shù)據(jù)包處理語言,以下簡稱P4)是一種開源的數(shù)據(jù)面高級編程語言。P4是專為編程可重構(gòu)網(wǎng)絡(luò)架構(gòu)而設(shè)計出來的一種協(xié)議無關(guān)的語言[5],自其誕生之日起就引起學(xué)術(shù)界的廣泛關(guān)注與工業(yè)界的積極實現(xiàn):P4相關(guān)的學(xué)術(shù)論文如雨后春筍現(xiàn)于各大頂級會議和期刊上,AT&T、谷歌、Cisco、華為等超過100家世界知名設(shè)備商、運營商、互聯(lián)網(wǎng)企業(yè)等大型公司也已加入了P4語言聯(lián)盟,產(chǎn)業(yè)界在這場革新狂歡下正在掀起P4探索和應(yīng)用的浪潮。

    2設(shè)計方案

    在SR和P4相互結(jié)合可以完善SR的擴展性和靈活性的基礎(chǔ)上,設(shè)計了基于P4的Segment Routing實現(xiàn)方案,本內(nèi)容將從轉(zhuǎn)發(fā)平面、控制平面和數(shù)據(jù)平面的三個角度詳細分析每一個部分的需求和針對各需求的設(shè)計方案。

    2.1 SR轉(zhuǎn)發(fā)平面的選擇

    參考Segment Routing Architecture (RFC 8402 July 2018)給出了兩種SR轉(zhuǎn)發(fā)平面并根據(jù)調(diào)研結(jié)果做出設(shè)計:

    1) MPLS轉(zhuǎn)發(fā)平面:

    Segment list體現(xiàn)為MPLS標簽,其優(yōu)點是:(1)SR可以利用現(xiàn)有MPLS數(shù)據(jù)平面;(2)Segment即MPLS標簽;(3)可以用于IPv4和IPv6兩種情況下地址協(xié)議族,擴展性強。

    2) IPv6轉(zhuǎn)發(fā)平面(即SRv6):

    Segment list體現(xiàn)為路由擴展報頭SRH(中存在多個IPv6 地址),其特點是:SRv6的交換機需要支持SRH的節(jié)點讀取報頭、更新指針、交換目標地址并轉(zhuǎn)發(fā)。

    由以上兩種轉(zhuǎn)發(fā)平面的特性可以看出,在核心網(wǎng)中這兩種轉(zhuǎn)發(fā)平面幾乎都不需要基礎(chǔ)設(shè)備本身進行路由,因為數(shù)據(jù)包中已經(jīng)嵌入了轉(zhuǎn)發(fā)的指令。而在進入核心網(wǎng)之前都需要在邊緣路由器或是控制器為數(shù)據(jù)包創(chuàng)建路徑并以標簽的形式將發(fā)放到入口交換機進而封裝到數(shù)據(jù)包頭部。

    在研究中發(fā)現(xiàn),SR-MPLS數(shù)據(jù)平面目前在服務(wù)提供商中已經(jīng)得到了一定的采用,但SRv6的采用卻一直處于滯后的狀態(tài)。這樣發(fā)展的差異主要來源于硬件。

    由于SR-MPLS轉(zhuǎn)發(fā)平面是由傳統(tǒng)MPLS轉(zhuǎn)發(fā)平面升級而來,當涉及轉(zhuǎn)發(fā)時,SR-MPLS沒有任何特殊的ASIC要求。盡管需要特定于SR-MPLS的控制平面軟件,但這并不影響ASIC轉(zhuǎn)發(fā)數(shù)據(jù)包的能力。因此,SR-MPLS的采用成本相對較低。

    相比之下,SRv6對ASIC提出了一些特殊的要求。即SRH是一個新的IPv6報頭,仍處于IETF的草案。SRv6節(jié)點必須沿SR路徑執(zhí)行多個操作,包括讀取SRH,將IPv6目標字段重寫到路徑中的下一個節(jié)點,更新指針以及執(zhí)行特定于節(jié)點的操作。這些要求并不是不可克服的,但是很少有人會將這種少用的功能加入硅片中。簡而言之,SRv6的大規(guī)模部署需要設(shè)備芯片的更新,這就造成了SRv6發(fā)展的滯后。

    在這種情況下,P4天然的可編程性在硬件中的應(yīng)用可以極大程度解決SRv6的窘境,所以,本文在完成常用的SR-MPLS轉(zhuǎn)發(fā)平面的基礎(chǔ)上,做了簡單的SRv6開發(fā)論證,在p4語言和控制器簡單實現(xiàn)的基礎(chǔ)上留下一些可供今后發(fā)展的接口。

    2.2 SR控制平面的設(shè)計

    2.2.1 P4runtime作為控制平面

    P4runtime是一種對內(nèi)置對象(表和值集)、便攜式交換機架構(gòu)(PSA),以及外部(如計數(shù)器、儀表、動作配置文件等)進行控制訪問的架構(gòu),它的對外接口是一套特別開發(fā)的基于GRPC的API。在P4Runtime的架構(gòu)中,要控制的設(shè)備位于底層,頂部可以是一個或多個控制器。P4Runtime允許多個控制器參與,但是需要確保只有一個控制器對每個讀/寫實體或管道配置本身具有寫訪問權(quán)。任何控制器都可以對任何實體或管道配置執(zhí)行讀訪問。

    使用p4的工作流程中,編譯P4源程序以生成P4設(shè)備配置和P4Info元數(shù)據(jù)。P4Info中的元數(shù)據(jù)描述了整個程序本身(PkgInfo)以及從P4程序派生的所有實體實例——表和外部實例。每個實體實例都有一個由P4編譯器分配的相關(guān)數(shù)字ID,作為簡潔“處理”的憑證,用于API調(diào)用。P4Runtime的API則定義了客戶端和服務(wù)器之間接口的消息和語義,供外部控制使用。

    P4Runtime的API支持多種語言,本方案中ONOS使用Java進行開發(fā)也是使用了P4runtime的擴展API,本方案除了使用ONOS作為控制平面以外,也編寫python對p4程序進行驗證,python由于其簡單使用的特點,可以比較方便的實現(xiàn)大規(guī)模p4程序及p4交換機組網(wǎng)的仿真和驗證。本文中的方案通常在實現(xiàn)用python描述的p4邏輯驗證之后使用ONOS控制器作為集中控制細化控制方案,因此這里只對控制層面使用的p4runtime API做一說明,后文中不再贅述。

    2.2.2 ONOS控制器作為控制平面

    SR可以使用路由協(xié)議或SDN控制器在網(wǎng)絡(luò)中分發(fā)Segment信息,支持的協(xié)議包括域內(nèi)的ISIS、OSPF和域間的BGP協(xié)議。為了更好地將SR的分布式轉(zhuǎn)發(fā)控制和SDN控制器的集中式調(diào)度控制相結(jié)合,本設(shè)計方案中采用ONOS作為控制器,它可以具有全局網(wǎng)絡(luò)拓撲、使用算法規(guī)劃段路由以及對設(shè)備進行流表和標簽棧下發(fā)。

    另外,本方案在全局標簽規(guī)格的選擇上,仿照IGP作為控制的標準,參考其全局標簽(Prefix Segments,下文中稱Prefix-SID)和鄰接標簽(Adjacency Segments,下文中稱Adj-SID)進行設(shè)計,Prefix-SID和Adj-SID的主要特點如下:

    ?Prefix-SID

    – SR域的任一節(jié)點都明白該Segment的相關(guān)指令

    – SR域的每個節(jié)點的轉(zhuǎn)發(fā)表中都安裝了該Segment相關(guān)指令

    – 在MPLS SR中:為段路由全局塊(SRGB)中的全局標簽值

    ? Adj-SID

    – 只有該Segment的始發(fā)節(jié)點明白它的相關(guān)指令

    – 在SR-MPLS中:為設(shè)備本地分發(fā)的標簽

    在ONOS控制層需要做出的設(shè)計有:

    1) 標簽(Prefix-SID和Adj-SID)的分配和分發(fā):

    a. Prefix-SID的分配由設(shè)備監(jiān)聽服務(wù)(Device Service和Device Listener)監(jiān)聽到新設(shè)備上線開始,本設(shè)計中采用的是在給定SRGB的基礎(chǔ)上,取每個設(shè)備的標識ID中從第一位非0的字段開始一直到ID字段結(jié)束作為index(索引),將這一index加在代表全局塊的SRGB值上作為Prefix-SID,即Prefix-SID為【“SRGB+index”】。

    例如device.Id為device:bmv2:s2;全局塊SRGB為16000;則index為2;Prefix-SID 為16002。

    這一操作在交換機上線時,ONOS中由一Prefix映射函數(shù)完成,控制器中具有網(wǎng)絡(luò)內(nèi)所有交換機的Prefix-SID。

    b. Adj-SID的分配由設(shè)備監(jiān)聽服務(wù)(Device Service和Device Listener)監(jiān)聽到新設(shè)備上線開始。對于這個新上線的設(shè)備,Adj-SID指的是它的每一個出端口,因此本方案將Adj-SID設(shè)計為:本交換機的index通過某端口連接到另一交換機的index中加一個0來表示,即Adj-SID為【“index1” + “0” + “index2”】。

    例如device.Id為device:bmv2:s2,該交換機的2端口和device.Id為device:bmv2:s3 的交換機相連;則代表2端口的Adj-SID為203。

    這一操作在交換機上線時,ONOS中由一Adjacency映射函數(shù)完成,控制器中具有網(wǎng)絡(luò)內(nèi)所有交換機中各端口對應(yīng)的Adj-SID,并將屬于每個交換機的Adj-SID及其對應(yīng)端口通告各交換機。

    2) 標簽(Prefix-SID和Adj-SID)轉(zhuǎn)發(fā)表的建立:

    a. Prefix-SID的轉(zhuǎn)發(fā)表在新交換機上線時完成,設(shè)備監(jiān)聽器(Device Listener)監(jiān)聽到新交換機上線時,對這個交換機和當前所有已知Prefix-SID的交換機進行路由規(guī)劃,采用最短路徑,將每個Prefix-SID對應(yīng)的轉(zhuǎn)發(fā)端口port生成協(xié)議無關(guān)流表,下發(fā)給本交換機,即下發(fā)內(nèi)容如下的流表。

    b. Adj-SID的轉(zhuǎn)發(fā)表同樣在新交換機上線時完成,設(shè)備監(jiān)聽器(Device Listener)監(jiān)聽到新交換機上線時,對這個交換機和當前所有和本交換機相鄰的交換機進行遍歷,找到對應(yīng)端口進行端口對Adj-SID的映射,并將這個映射關(guān)系以流表的形式下發(fā)給本交換機,即下發(fā)內(nèi)容如下的流表。

    3) 路徑(Segments)的標識和建立

    SR實現(xiàn)的路由又被稱為大跳路由,因此SR只是在網(wǎng)絡(luò)中選取交換機作為需要映射標簽的節(jié)點,形成一個有序的segment列表(在MPLS中為標簽棧),交換機將這一封裝標簽的動作以流表的形式下發(fā)給邊緣P4交換機,P4交換機通過數(shù)據(jù)層面定義好的邏輯將標簽棧封裝在數(shù)據(jù)包的包頭,然后進入P4交換機分布的網(wǎng)絡(luò)中,即下發(fā)內(nèi)容如下的流表。

    2.3 SR數(shù)據(jù)平面的設(shè)計

    P4交換機作為設(shè)計的數(shù)據(jù)層面,需要對數(shù)據(jù)格式、報文處理邏輯等進行定義。本方案中設(shè)計了IPv4基本轉(zhuǎn)發(fā)功能、SR基本轉(zhuǎn)發(fā)功能、以及一些適合后期擴展的功能。

    2.3.1數(shù)據(jù)包的解析(parser模塊)

    P4代碼中的解析器本質(zhì)上是一個狀態(tài)轉(zhuǎn)移的邏輯,按照包頭遇到的情況進行解析,并把一層一層的解析結(jié)果對應(yīng)放在一個新的標準報頭實例中,本方案中,SR-MPLS頭部位于二三層之間,但是為了后期擴展,解析了一些可能不存在的包頭類型,并且一直做到四層TCP的解析,但是由于P4程序的特性,這些操作并不會影響普通數(shù)據(jù)包進行SR功能的驗證。

    2.3.2數(shù)據(jù)報入口處理流程(control模塊)

    a. Action

    action是table中可以調(diào)用動作的具體實現(xiàn),類似編程語言中的函數(shù)實現(xiàn),但是可以執(zhí)行的基本動作比較有限,需要根據(jù)需求設(shè)計出精煉的動作集。

    b. Table

    經(jīng)過對P4語言的學(xué)習(xí),可以發(fā)現(xiàn),Table的設(shè)計原則就是Action的邏輯性。Table的邏輯性和其他編程語言中建立一個class很像,需求的根本是“Match +Action”匹配對應(yīng)關(guān)系,給一組Match,需要得到一個Action,這就是像是傳遞參數(shù)得到返回值一樣。然而不一樣的是,一個Table可以匹配很多的Match也可以不匹配Match域,但是都只能調(diào)用一個Action。

    因此,一個精簡有效的Table是需要反復(fù)測試修正設(shè)計方案的。本設(shè)計方案在多次修正后,對Table的需求分為以下幾種:

    (1)初始化標簽棧:該table的目的是在match目的地址之后,將ONOS控制器返還的一組Segment數(shù)組封裝進報文頭部預(yù)留的自定義Segment Routing類型中。

    (2)標簽的轉(zhuǎn)發(fā):按照SR-MPLS的設(shè)計方案,標簽存在三種標準action,其中push動作即是初始化標簽棧,因此轉(zhuǎn)發(fā)table中,需要有如下兩種標準動作和一個自己定義的結(jié)束動作:

    ? Next:按照倒數(shù)第二跳彈出的規(guī)則彈出當前標簽,并設(shè)置出端口;

    ? Continue:不彈出標簽,按照當前標簽對應(yīng)的轉(zhuǎn)發(fā)表設(shè)置出端口;

    ? Finish:彈出棧底標簽,將以太網(wǎng)類型設(shè)置為Ipv4并給出轉(zhuǎn)發(fā)端口。

    (3)Ipv4轉(zhuǎn)發(fā):Ipv4的設(shè)計考慮了不適用SR的情況下需要仍然可以完成轉(zhuǎn)發(fā),因此本部分的交換機邏輯就是對目的Ip進行匹配,按照最短路徑給出出端口即可。

    c. Apply:apply是table執(zhí)行的語句,可以寫在一個判斷語句內(nèi),調(diào)用table來完交換機內(nèi)部的邏輯,流程圖內(nèi)陰影部分的判斷將在這里實現(xiàn),如圖1所示。

    3 P4代碼設(shè)計思路

    4結(jié)論

    本文設(shè)計主要對Segment Routing網(wǎng)絡(luò)架構(gòu)進行研究,設(shè)計了更加符合當前網(wǎng)絡(luò)現(xiàn)狀、更靈活且易于擴展的SR方案。當前的SR方案比較少采用SDN控制器作為控制平面,而是使用IGP、BGP等協(xié)議進行控制,這樣的做法不光沒有追上軟件定義網(wǎng)絡(luò)的廣泛使用化,也缺少了全局視野在控制層面的優(yōu)越性。因此本文使用ONOS控制器作為控制平面可以有效利用 SDN的集中控制管控能力,為SR規(guī)劃更合理更科學(xué)地標簽棧。

    參考文獻:

    [1] 吳理炫.基于SDN的移動核心網(wǎng)流量管理的研究[D].北京:北京郵電大學(xué),2018.

    [2] 馮濤.軟件定義網(wǎng)絡(luò)(SDN)網(wǎng)絡(luò)管理關(guān)鍵技術(shù)研究[D].北京:清華大學(xué),2015.

    [3] 趙敏,田野.P4與POF協(xié)議無關(guān)可編程網(wǎng)絡(luò)技術(shù)比較研究[J].網(wǎng)絡(luò)新媒體技術(shù),2018,7(1):54-58.

    [4] 林耘森簫,畢軍,周禹,等.基于P4的可編程數(shù)據(jù)平面研究及其應(yīng)用[J].計算機學(xué)報,2019,42(11):2539-2560.

    [5] 陳果.基于P4的可編程數(shù)據(jù)交換原型系統(tǒng)的設(shè)計與實現(xiàn)[D].西安:西安電子科技大學(xué),2018.

    【通聯(lián)編輯:唐一東】

    猜你喜歡
    軟件定義網(wǎng)絡(luò)
    面向未來的傳輸綜合網(wǎng)管系統(tǒng)演進研究
    移動通信(2016年23期)2017-03-07 16:28:25
    基于隊列樹的SDN控制器高效消息處理機制
    中國聯(lián)通SDN的思考和應(yīng)用實例
    業(yè)務(wù)功能鏈技術(shù)及其應(yīng)用探析
    針對大規(guī)模軟件定義網(wǎng)絡(luò)的子域劃分及控制器部署方法
    一種新的SDN架構(gòu)下端到端網(wǎng)絡(luò)主動測量機制
    超高吞吐率Wi—Fi融合應(yīng)用新技術(shù)分析
    移動通信(2016年20期)2016-12-10 09:22:49
    SDN在傳送網(wǎng)絡(luò)的引入與應(yīng)用分析
    SDN/NFV技術(shù)接入網(wǎng)應(yīng)用
    3SNetworking:面向業(yè)務(wù)、安全增強的軟件定義網(wǎng)絡(luò)
    安宁市| 定南县| 大渡口区| 衡阳县| 汉中市| 河北省| 泰安市| 奎屯市| 华蓥市| 隆子县| 婺源县| 南郑县| 海盐县| 章丘市| 布尔津县| 兴和县| 青海省| 定西市| 开鲁县| 姜堰市| 法库县| 永嘉县| 克山县| 衡南县| 石泉县| 抚州市| 尉氏县| 乌兰县| 蓝田县| 泌阳县| 如皋市| 崇左市| 手游| 孝昌县| 兴海县| 江川县| 阜城县| 酒泉市| 邳州市| 湘乡市| 汉阴县|