[莫志威 鄧永平 歐亮 林力帆]
段路由SR(Segment Routing)[1]是一種新型的源路由方式,當數據平面為MPLS 時,該技術稱作SRMPLS;當數據平面為IPv6時,該技術稱作SRv6(Segment Routing for IPv6)。SRv6 技術將網絡中的報文處理定義為一個網絡程序,該程序表達為一系列指令。指令由128-bit 的segment 組成,稱為SID(Segment ID),其形式為一個IPv6 地址。在頭節點增加一個網絡程序,中間節點就可以按照該程序包含的路徑信息轉發報文。
SRv6 技術具有很多優點,它不需要任何的路徑交換信令,只需要在SRv6 的頭節點維護每個流的狀態,通過簡單的網絡指令就可以控制轉發路徑。SRv6 協議還有一大優勢是無縫部署,在現有IPv6 網絡中運營商只需要升級SRv6 節點的設備,而不需要升級中間IPv6 轉發設備,節省升級成本。
由于SRv6 技術的諸多優勢,電信運營商開始進行SRv6 網絡試點[2,3],目前多采用廠家硬件設備進行試驗。本文擬研究采用公有云的云服務器作為SRv6 節點實現L3VPN 業務,虛擬機中使用開源軟件VPP(Vector Packet Processing)[4]作為轉發面。實驗拓撲按照設備所處的位置分為三個平面:公有云1 平面、公有云2 平面、客戶機平面,如圖1 所示。在公有云上開展本項工作具有重要意義,研究成果可應用于SRv6 VPN、SD-WAN、多云互聯、流量工程等場景,為后續產品開發工作打下基礎。

圖1 基于公有云的SRv6 路徑可編程示意圖
如圖2 所示,為了實現SRv6,IETF 提出新增一種IPv6 擴展頭,稱作SRH 擴展頭[5]。該擴展頭包含Segment List:其特征為:每一個segment 是一個IPv6 地址;segment是逆序編碼的,Segment List [0]是最后一個使用的segment,Segment List [n]是第一個使用的segment。

圖2 SRH 格式
SRv6 Segment 也稱作SRv6 SID,形式為128-bit的地址[6],如圖3 所示,包含以下部分:

圖3 SRv6 SID 格式
①Locator:用于定位,即路由到segment 父節點
② Function:代表設備的指令,在segment 父節點執行function 定義的動作
③Argument:可選參數,用于本地function 的變量
SRv6 SID 有多種類型,表1 列出了常用的SID 類型

表1 常用的SRv6 SID 類型
SRv6 L3VPN 有兩種模式:per-CE 和per-VRF,前者每個CE 分配一個SRv6 SID,后者每個VRF 分配一個SRv6 SID,本文所實現的是per-VRF 模式。
大學英語的視聽說教程包括音頻和視頻兩部分。由圖片流-音頻流-視頻流等組成,構成多模態教學。在教學過程中,教師根據教學內容和學習者情況,還可以適當增加模態,合理組合多種模態,以取得較好的教學效果。下面就新世紀大學英語視聽說教程中的音頻教學和視頻教學分別探討其多模態教學法。
SRv6 L3VPN 模型示意圖如圖4 所示,設PE1 的End.DT4 SID 為1::1,P 的END SID 為2:2,PE2 的End.DT4 SID 為3::3,其工作流程如下:

圖4 SRv6 L3VPN 模型示意圖
(1)在首節點PE1 配置SRv6 TE 策略,Segment List 為<2::2,3::3>;
(2)首節點PE1 收到CE1 發出的單播報文后,將會查找VPN 路由表,該路由的出接口為SRv6 TE 策略,PE1 為報文封裝帶有SRH 的IPv6 報文頭并發出,其中SRH 包含Segment List;
(3)中間P 節點將根據SRH 信息轉發,使用IPv6目的地址查找Local SID 表,命中End SID 后,IPv6 目的地址將會更換為3::3;
(4)報文到達尾節點PE2 后,將用IPv6 目的地址查找Local SID 表,命中End.DT4 SID 后,去除IPv6 報文頭,使用內層目的地址查找VPN 路由表,轉發至CE2。
VPP 是開源的高性能數據報文處理擴展平臺,它的優勢有高性能、模塊化、靈活性和豐富的特征集,從17.04 版本開始支持SRv6。根據SRv6 節點角色的不同,VPP 配置也會有所不同。對于首尾節點,需要配置Segment List 和End.DT4 類型Local SID 等;中間節點較為簡單僅需要配置End 類型Local SID。以下為VPP實現SRv6 L3VPN 的關鍵配置:
(1)首尾節點配置示例(如圖5 所示)

圖5 首尾節點配置示例
(2)中間節點配置示例(如圖6 所示)

圖6 中間節點配置示例
如圖1 所示,本文所使用的公有云1 為天翼云,公有云2 為阿里云,為了方便實現,客戶機平面也在阿里云開啟。實驗分為兩部分:(1)公有云內進行路徑切換,(2)公有云間進行平面切換。
本實驗目的是在一個公有云內實現SRv6 L3VPN 業務,并且可根據源節點加入的Segment List 不同而切換轉發路徑。
在阿里云平臺部署四臺云服務器,如圖7 所示地點分別在深圳、北京、上海和呼和浩特,其中深圳云服務器和北京云服務器作為SRv6 路徑的首尾節點。Host 與VPP虛擬機建立在同一個專用網絡,通過阿里云交換機相連。

圖7 公有云內路徑切換實驗拓撲圖
搭建L3VPN over SRv6 業務場景,位于深圳的Host1將通過搭建的SRv6 VPN 與北京的Host2 互通,其中SRv6 路徑有兩條,分別為路徑1:深圳-上海-北京,路徑2:深圳-呼和浩特-北京。路徑切換測試偽代碼如圖8 所示,兩路徑互為主備,若主路徑發生故障,將切換到備路徑,測試兩路徑的SRv6 L3VPN 時延,結果如表2所示。

圖8 公有云內路徑切換實驗偽代碼

表2 SRv6 單平面路徑切換實驗平均時延
實驗結果表明公有云內可有效按照程序設定切換SRv6 路徑,使得流量按特定路徑轉發。測試得出路徑1的時延較短,該結果可作為主路徑初始設置的參考。
本實驗使用SRv6 協議將流量在兩個云平面之間進行切換,切換后的路徑可用作備份鏈路或者流量負載分擔鏈路。例如,當兩云平面互為主備時,若一個公有云平面的中間鏈路發生故障時,可以將路徑切換到另外一個公有云。
在阿里云和天翼云的上海和廣東資源池部署云服務器,如圖9 所示具體部署方式如下:阿里云的上海和深圳資源池各部署兩臺服務器,其中一臺為主機Host,另外一臺為VPP 虛擬機;在天翼云的上海和廣州資源池各部署一臺服務器,均為VPP 虛擬機。阿里云的上海云服務器和深圳云服務器作為SRv6 路徑的首尾節點。Host與VPP 虛擬機建立在同一個專用網絡,通過阿里云交換機相連。搭建L3VPN over SRv6 業務場景,位于上海的Host1 將通過搭建的SRv6 VPN 與深圳的Host2 互通,其中SRv6 路徑有兩條,分別為單平面路徑:阿里云上海-阿里云深圳,雙平面路徑:阿里云上海-天翼云上海-天翼云廣州-阿里云深圳。對不同區域云內、同區域云間、單平面和端到端時延進行測試,實驗偽代碼如圖10 所示,實驗結果分別如表3、表4 和表5 所示。

圖9 SRv6 公有云平面切換實驗拓撲圖

圖10 公有云間平面切換實驗偽代碼
從表5 可以看出,流量轉發路徑可以有效地從一個公有云平面切換到另外一個公有云平面,切換平面后時延增大,分析表3、表4 可以得出原因在于增加了同區域云間切換時延。

表3 不同區域云內時延測試

表4 同區域云間時延測試

表5 端到端時延測試
本文概述了SRv6 技術的基本原理,分析了其優勢以及在公有云上使用的意義,研究了基于公有云的SRv6 路徑可編程性。基于開源軟件VPP,實現了公有云內的路徑切換和公有云平面切換,研究結果可應用于SD-WAN 和多云互聯等場景。下一步將在本工作基礎上增加SDN 控制器,用于路徑下發和流量監控等,從而實現完整SD-WAN 的功能。