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

面向安全協議的虛擬化可編程數據平面

2021-01-25 03:42:16祝現威常朝穩左志斌
電子與信息學報 2021年1期

祝現威 常朝穩 秦 晰 左志斌

(解放軍戰略支援部隊信息工程大學密碼工程學院 鄭州 450004)

1 引言

軟件定義網絡[1](Software-Defined Network,SDN)將控制平面和數據平面進行解耦,使得網絡中引入新的網絡協議和功能更加容易。但是目前OpenFlow[2]協議定義的協議類型和字段都僅限于網絡前4層中一些常用的協議和字段。但是許多安全協議需要添加新的匹配字段和安全功能,所以為了能夠兼容多種網絡安全協議,需要一種可編程數據平面,能夠使網絡管理者自定義匹配字段和轉發動作。研究表明將安全功能部署在數據平面能夠實現更高的性能,并且能夠節省控制器CPU資源。因此越來越多的網絡安全協議將安全功能部署在數據平面上。但是目前網絡安全協議部署在可編程數據平面仍存在以下問題:(1)包頭解析。由于安全協議需要在數據包中插入密文或者簽名,需要自定義匹配字段,所以在傳統的包頭解析中需要分層多次提交,產生較大的延遲。(2)獨占的可編程數據平面。當前可編程數據平面是獨占設備的,一旦安全功能部署之后,該設備只能運行一個可編程數據平面程序。(3)密碼算法編程可重構。在同一網絡安全協議下有多種密碼算法。因此程序員需要實現不同的密碼算法來滿足不同的安全需求,并且當前P4并沒有提供密碼算法方面的編程原語,以上原因增加了安全協議編程難度。

針對以上問題本文提出了一種面向安全協議的虛擬化SDN可編程數據平面。本文主要貢獻如下:

(1) 提出一種快速的包頭解析器,其為數據包添加一個密碼協議描述頭來降低提交次數,實現包頭的快速解析,在實現自定義字段解析的基礎上提高解析效率。

(2) 提出一種基于P4的虛擬化可編程數據平面VCP4,通過對P4進行虛擬化,能夠在同一個設備上虛擬出多個隔離的數據平面。實現多租戶下的同一設備的可編程數據平面隔離。

(3) 使用P4語言編寫部分密碼算法相關運算,將其作為密碼算法所需的基本運算單元,通過代碼的可重用將單元組成對應密碼算法原語,實現內部資源可以動態的編排組合。

為了支持不同網絡功能的快速部署,首先需要網絡設備能夠適應不同的協議,能夠對包頭進行靈活的解析,曹作偉等人[3]提出協議無感知轉發交換機,實現協議無關性解析。但是上述解析只支持少量數據包的解析,無法滿足大量數據處理。Chole等人[4]提出了一種彈性包頭解析器,通過存儲包頭指針實現多匹配域解析,但是其只能實現4個匹配域的解析,靈活性欠佳。斯坦福大學的Bosshart等人[5]為了完全實現網絡從轉發到匹配字段的全軟件定義,提出了P4(Programming Protocol independent Packet Processor),受到業界廣泛關注,稱為OpenFlow 2.0。

在P4虛擬化方面,Hancock等人[6]首次提出了P4虛擬化這一概念,并實現虛擬化可編程平面Hyper4,其在硬件和P4程序之間添加一個類似Hypervisor的管理器實現P4的虛擬化。Hyper4使用了大量的重提交操作,造成效率降低。針對以上問題Zhang等人[7]提出一種全虛擬化的數據可編程平面HyperVDP。雖然實現了虛擬化功能,但無法實現功能和代碼的可重用,所以其資源消耗較高。

在功能可重構方面,Zhou等人[8]將P4部分項目進行分解,并通過一個模塊化編程管理器ClickP4實現網絡功能的動態編排和代碼的可重用。季新生等人[9]將可編程數據平面與密碼學結合,實現網絡認證轉發。

2 VCP4總體架構

2.1 總體架構

VCP4的總體架構如圖1所示。VCP4作為管理程序在P4編譯器與P4硬件之間,其由密碼算法編譯器、包頭解析器、控制流隊列生成器和動態映射表4部分組成,能夠動態地創建虛擬實例,且獨立運行單個P4功能程序。密碼算法編譯器主要對P4程序以及本文構造的密碼運算單元生成的原語進行解析。包頭解析器對安全協議包頭進行快速解析,并且能夠識別用戶自定義匹配字段。控制流隊列生成器將P4中多種控制流進行單一表示,將控制流中任意有向無環圖(Directed Acyclic Graph, DAG)結構轉換成線性DAG結構。動態映射表將設備物理資源進行動態映射,實現可編程平面的虛擬化。接下來對各模塊進行詳細說明。

2.2 包頭解析

安全協議往往需要自定義匹配字段,需要對字段靈活解析,所以包頭解析器是實現網絡安全協議自定義匹配字段的關鍵,其根據字段偏移量對包頭進行分層解析。通常包頭解析器通過重復提交實現包頭文件的分層解析,最終得到所有的匹配項。在數據包重提交過程中會產生較大延遲,提交次數越多延遲越大。因此為了實現包頭的快速解析,需要減少提交次數。

為了降低性能損失,實現快速解析本文在收到的數據包頭前封裝了一個4 Byte的密碼協議描述頭。它包含虛擬id(8 bit)、總長度(16 bit)和填充位(8 bit)。解析器可以通過一次提交獲取真實包頭的長度,該方法中原包頭作為一個整體,不需要進行分層解析,來獲取自定義字段長度。

本文通過解析+匹配表的方式為每個數據包添加描述頭。首先需要為每個虛擬數據平面配置虛擬id和其接收數據流的源MAC地址。當接受到數據流后,通過Parser中current offset指針獲取包頭長度和源MAC地址,根據MAC地址分配虛擬id。通過流表匹配在包頭處添加描述頭,隨后將添加過描述頭的包頭提交給P4包頭解析器。由于數據緩存的存在,一個數據包會多次觸發同一原語,造成緩存鎖死,其他數據包無法進入緩存進行處理,因此需要進行數據流隔離保證數據平面的可執行性。為此本文在緩存前添加一個流量閥,當某一虛擬id流量過大時,屏蔽該虛擬id的流量進入緩存,將流量降至閾值以下,因此進入包頭解析器前過程將在3.1節中敘述。

2.3 控制流隊列生成器

P4的控制流由一組階段(stage)和部分布爾函數組成。Stage可以根據布爾表達式的結果跳轉到另一個stage。stage間的跳轉實質上是一個有向無環圖(DAG), stage表示每個點,stage分支表示點與點之間的邊,其值為布爾函數。為了實現控制流的虛擬化,本文需要將控制流進行標準化,即對match-action進行解耦。控制流主要存在stage跳轉、匹配和動作執行3個狀態,因此本文使用3個流處理過程來描述控制流,其分別為跳轉處理過程、匹配處理過程和動作執行處理過程,如圖2所示。

跳轉處理過程主要用于模擬決定stage跳轉的布爾條件,其通過4個流表實現,其流表匹配結果分別為進入匹配處理過程,進入動作執行過程,跳過后續處理和跳入下一個stage。匹配處理過程主要用于字段匹配和動作執行映射。在字段匹配方面,本文將P4中標準match-action表的匹配字段劃分為3個類型:包頭、標準元數據和用戶自定義元數據。動作執行處理過程主要包含所有需要執行的動作,并按匹配處理階段的動作執行映射順序執行所有動作。動作執行處理過程中除了P4定義基本動作,本文還根據密碼算法添加部分運算作為元動作,如循環移位、歐拉函數計算等。

通過對match-action進行解耦,本文將控制流生成標準化格式,利用文獻[10]的方法將這些任意結構的DAG圖生成線性結構DAG。首先為每個stage分配一個固定id用于節點編號。

圖2 Match-action解耦

2.4 動態映射表

流隊列生成器將任意狀態控制流生成有序的線性序列。然而P4中的控制流可以包含任意數量的stage,無法對其數量進行預測,但是硬件資源有限,當多個控制流映射到同一設備上時,容易產生狀態溢出。為了解決資源不足這一問題,本文借鑒了虛擬機映射緩存機制[11]和HyperVDP[7]中stage映射方法。因此本文為VCP4引入動態映射表,通過動態映射實現設備的邏輯擴展,使其能夠支持不同數量的stage。其結構如圖3所示。

首先,由于控制流隊列生成器通過對matchaction解耦使stage能夠獨立,因此本文根據設備構造一組連續的stage動態映射表,將解耦后的stage映射到動態映射表中,其類似虛擬內存和物理內存的關系。其次,由于每個stage都擁有一個固定id,因此本文對id和映射表總數進行取模運算來確定stage對應的動態映射表的位置。但是由于P4為了防止內部循環,其stage只能向后產生分支,此外由于不同if-else分支上的stage的綁定條件不相關,所以可以在同一個動態映射表中存在多個stage。當一個控制流擁有的stage多于動態映射表的總數時,VCP4通過重提交來恢復處理。

3 基于P4的密碼算法的原語編程

基于P4的密碼算法的原語編程主要通過密碼算法編譯器實現的,其功能由兩部分組成:(1)對虛擬可編程平面進行配置;(2)擴展P4編譯器,使其不僅支持P4原語還有能夠支持P4后端編譯的密碼算法原語。

圖3 動態映射表

3.1 虛擬可編程平面配置

密碼算法編譯器獲取一個P4程序或者P4+密碼運算原語程序后,編譯程序并為這個程序分配stage動態映射表。隨后對虛擬可編程平面進行實例化,其中包括程序id,stage id,填充表項等。每個數據包在描述頭位置都會分配一個虛擬id,表示其對應的虛擬可編程平面。當數據包被對應的虛擬可編程平面處理時,通過密碼算法編譯器為數據包動態地分配程序id和stage id。在動態映射表匹配處理過程中,流表通過與數據包分配的程序id和stage id實現動作執行和階段跳轉。由于使用id對數據包進行劃分,以此實現了虛擬可編程的平面的隔離。

VCP4處理控制流過程分為3部分,如圖4。首先對數據包頭進行快速解析,當數據包進入包頭解析時首先添加描述頭,并在描述頭位置都會分配一個虛擬id。隨后將數據包送入緩存,在緩存處通過流量閥檢查同一虛擬id數據包流量是否超過閾值,如果小于閾值則通過包頭快速解析器提取包頭信息。隨后解耦match-action過程,通過動態映射表將每個控制流的stage分配到對應的stage容器中。該過程的開頭和結尾分別有2個配置表,第1個為數據包匹配的起始地址,第2個是將匹配域超出容器數量的數據包進行重新提交。

密碼算法編譯器為程序員提供靈活的程序管理方法,首先可以對stage容器進行動態的組合實現復雜的網絡功能。其次由于虛擬可編程平面間的隔離性,每個虛擬可編程平面可以表示為一個功能路由,可以通過虛擬平面進行組合完成復雜的網絡任務和網絡安全協議。

圖4 VCP4中程序處理過程

3.2 密碼算法原語編程

本文在P4編譯器的基礎上添加了一個非侵入式的類宏框架,該框架為可編程數據平面提供密碼算法的抽象。本文在switch.p4[12]的基礎上添加了12個密碼算法原語,這些算法原語支持P4-14版本。

表1為密碼算法原語列表。表中的密碼算法原語分為兩種:(1)在單個可編程數據平面的密碼算法原語;(2)多個可編程數據平面的狀態同步原語。本文將從這兩個方面進行介紹。

在單個可編程數據平面密碼原語中包括系統功能型和密碼算法型兩種,系統功能源語主要應用于系統狀態編程,無法直接對數值進行運算,需要利用指針進行賦值。前者有@VCP4_for, @VCP4_minmax, @VCP4_cmp,后者主要為密碼算法提供運算組合元素,@VCP4_gcd, @VCP4_power,@VCP4_hash, @VCP4_ROL, @VCP4_byte,@VCP4_S, @VCP4_GF。由于篇幅有限,本文在每種密碼算法原語中挑選1種進行舉例。

表1 密碼算法原語列表

首先本文先介紹系統功能型原語@VCP4_for,當使用不同索引值重復同一原語時可以使用該原語表示。例如構造表頭,初始化參數,構造多個相同的流表或者執行相同action。

式(1)表示對索引變量進行循環賦值。

接下來本文對密碼算法型原語@VCP4_ROL進行詳細分析。用于實現循環移位,屬于DES的基礎運算。

將字節長度為8的自定義字段進行循環左移2位。

如果安全協議需要多個可編程數據平面共同完成,這些數據平面間需要進行頻繁的通信和狀態同步。因此,本文設想兩種多可編程數據平面間的通信方式:同步多播,在虛擬化可編程平面中的同步多播與傳統意義上的多播不同,其為一個實體交換機上的虛擬可編程平面向另一個實體交換機上的虛擬可編程數據平面集合發送狀態或請求;同步單播,即在同一個虛擬可編程平面集合中不同虛擬可編程平面通信。

同步多播:本文使用VCP4自動生成一組P4代碼實現狀態變量同步。

當pkt.time低于特定閾值時,觸發時間同步。此時VCP4的密碼算法原語會自動生成一個開發人員編寫的時間同步操作action。目前默認操作為克隆一個狀態同步的數據包。該段action動作在包頭指定字段作為同步消息,并且修改目的地址為可編程數據平面集合所在網段。

同步單播:該原語的原理與同步多播類似,唯一不同的是狀態信息只發送給單個目的交換機。本文還是以SSH為例,當一個數據平面將狀態變量作為請求響應發送給另一個數據平面,這一過程與同步多播類似,唯一不同的是通過在runtime中添加一個返回命令使其只返回給源數據平面。

4 仿真實驗

本節實驗分從4個方面對VCP4進行評估:(1)包頭解析性能,與P4, Hyper4等可編程數據平面的解析器進行比較;(2)在資源利用率方面,將VCP4與現有的虛擬化平面Hyper4及P4進行比較;(3)在虛擬化性能方面,本文將VCP4 DPDK-target與P4 DPDK-target和Openvswitch虛擬化交換機進行對比;(4)安全協議性能方面,本文分別在P4和VCP4 BMv2-target上實現3個安全協議用例來進行比較說明。

4.1 資源利用率

可編程數據平面的主要資源為流表和metadata元數據,因此本文從VCP4中流表數量和虛擬可編程數據平面runtime中流表數量2個方面來評估VCP4的資源利用率。

(1) 由于硬件資源的限制,為了將更多的資源用于虛擬可編程平面的運行,因此VCP4的運行管理應當用盡可能少的流表數量,提高管理效率。因此本文分別在不同數量原語和stage的條件下,將VCP4與Hyper4、P4進行流表數量對比。本文對VCP4與Hyper4下發相同stage的控制流,且VCP4設置4個動態映射表,在此條件下觀察實現不同數量原語需要的流表數量,試驗重復10次并求平均值。

從圖5(a)可知,隨著原語數量增加,Hyper4和P4的流表數量快速增加,而VCP4幾乎不變。這是由于Hyper4和P4對原語處理主要依靠線性流表處理管道,每條原語都會產生對應的管道,因此Hyper4和P4的原語處理與流表數量呈線性正相關,由于P4不需要進行虛擬化配置所以流表數量低于Hyper4,而VCP4由于利用動態映射表循環處理,沒有原語流表處理管道,其主要與動態映射表的數量和配置流表數量有關。

(2) 虛擬可編程數據平面runtime中流表數量表示虛擬可編程數據平面實現功能時產生的流表,越多的流表表示其處理管道越長,帶來的處理延遲越大。本文分別通過VCP4, Hyper4和P4分別實現防火墻[13]、交換機[14]、ARP代理[15]和IPsec認證(AH頭中使用字段匹配替代密碼算法),結果如圖5(b)所示。

在試驗中,P4通過2個流表實現交換機功能,分別為源MAC地址匹配表和目的MAC地址匹配表。在VCP4中,需要5個表,1個虛擬可編程數據平面配置表,2個匹配流表,2個動作流表。Hyper4則需要18個流表實現這一功能。在L2層實現防火墻,VCP4只需要2個動態映射表,每個動態映射表包含2個匹配表和動作表,而Hyper4需要多個表對數據包進行解析,再需要至少4個match-action表用于不同數據包的匹配。在實現ARP代理和IPsec時三者的流表數量增加較多,其主要是因為需要進行TTL檢查、TTL修改和TTL計算等操作。一般來說Hyper4使用的流表數量至少是VCP4的2倍。

4.2 虛擬化性能

由于VCP4是在DPDK-target基礎上實現虛擬化功能,所以本文將VCP4與同樣使用DPDK-target的P4和Openvswitch進行對比。分別通過以上3種數據平面轉發40 Gbps數據量,通過測量其吞吐量、時延和CPU利用率對其虛擬化能力進行評估。本文分別在3種結構上實現L2層轉發。

(1) 吞吐量測試。結果如圖6(a)所示。從圖中可知對于短數據包,由于VCP4和Openvswitch引入了虛擬化功能,所以吞吐率略低于P4,但當發送的數據包為長數據包時,三者吞吐率一樣。VCP4相對于P4吞吐率總體損失約9%。

(2) 時延是衡量網絡質量和可用性的一項重要指標。本文分別測量了VCP4, P4和Openvswitch平均轉發時延,結果如圖6(b)。時延隨著數據包的長度增加而增加,VCP4時延高于P4和Openvswitch,增加了約17%。因為P4和Openvswitch使用流水線匹配方式,而VCP4由于虛擬化和可編程的需求,使用隊列的方式模擬流水線方式,對收到的數據包進行match-action解耦,所以處理時延高于P4和Openvswitch。

4.3 安全協議性能

圖5 可編程數據平面資源利用率對比

安全協議性能主要指實現安全協議功能的可編程數據平面的性能和實現安全協議代碼量。本文實現6個網絡功能,并根據網絡功能組合實現CHAP,IPsec(利用Hash驗證完整性)和IPsec(利用RSA認證)3個協議。

(1) 由于P4和Hyper4沒有密碼算法原語,所以本文將接收到的密碼信息通過6653端口導入主機操作系統中,利用對應的密碼算法庫對信息進行驗證,將驗證結果返回到可編程數據平面中進行處理。本文分別用BMv2-target的吞吐量和時延評估可編程數據平面實現安全協議的性能,結果如圖7所示。

從圖7(a)和圖7(b)可知,Hyper4的吞吐量遠小于P4,虛擬化帶來的吞吐量的降低約83%。VCP4吞吐量降低范圍是33%~45.6%,其情況遠好于Hyper4。這是由BMv2-target處理管道數量和長度決定的,Hyper4需要為每個數據流動作分配一個處理管道,且在解析的過程中需要分層解析,因此其需要多個處理管道,其吞吐率較低。由于VCP4包含密碼算法原語,可以直接對包中認證信息進行處理,而P4和Hyper4需要將認證信息導出處理,所以VCP4的時延低于P4和Hyper4。

(2) 從代碼量方面分析,本文將VCP4中實現的安全協議代碼轉化為P4的BMv2-target[16]代碼,由于P4沒有密碼原語,所以本文將P4外部的密碼算法庫代碼量統計在內,結果如圖7(c)。從圖中可知,由于密碼原語簡化了密碼算法的實現,且部分循環,異步功能實現也進行了簡化,大大降低了安全協議實現的代碼量,降低至少50%以上。在IPsec框架下,隨著密碼算法的復雜度增加,P4中密碼算法代碼增加,但VCP4由于使用密碼原語,其代碼量變化較小。

5 結束語

通過在P4的基礎上實現虛擬化可編程數據平面VCP4,滿足網絡安全協議中可自定義字段和數據流的隔離性,其具有以下創新點,首先在P4的基礎上引入快速包頭解析器、控制流隊列生成器和動態映射表技術,在BMv2-target和DPDK-target上構造Hypervisor,以此實現可編程數據平面的虛擬化,通過可編程平面的虛擬化保證網絡安全協議的隔離性。其次為了便于網絡安全協議的編程,本文在P4語言的基礎上添加了密碼算法原語,對常用的密碼運算進行了封裝,這樣能夠有效降低代碼量。

根據VCP4的結構,本文分別從資源利用率、虛擬化性能和安全協議性能3方面對VCP4進行評估。結果顯示在DPDK-target方面,VCP4相較于P4吞吐率減少9%時延增加了17%,其在可接受范圍內。在BMv2-target方面,VCP4由于密碼原語的使用,其時延優于P4,且代碼量降低了50%。雖然VCP4實現虛擬化且降低了安全協議部署的代碼量,且帶來的性能損耗是可接受的,但是其服務仍是按隊列進行的,無法根據網絡需求進行動態的分配,無法適應部分時延敏感型業務。

圖6 可編程數據平面虛擬化性能對比

圖7 可編程數據平面安全協議性能對比

主站蜘蛛池模板: 国产永久无码观看在线| 亚洲视频二| 美女国内精品自产拍在线播放| 国产资源免费观看| 欧美精品在线观看视频| 亚洲无码精品在线播放| 午夜高清国产拍精品| 亚洲欧美成人在线视频| 狠狠色婷婷丁香综合久久韩国| 成人免费黄色小视频| 日韩福利在线观看| 国产拍在线| 最新痴汉在线无码AV| 欧美色视频在线| 欧美日韩免费在线视频| 欧美色视频在线| 国内精品视频| 人人91人人澡人人妻人人爽| 国产精品一线天| 日韩一区二区三免费高清| 精品视频一区二区三区在线播| 亚洲视频欧美不卡| 综合天天色| 国产97公开成人免费视频| 色婷婷在线播放| 国产全黄a一级毛片| 日韩欧美91| 波多野吉衣一区二区三区av| 国产成人1024精品| 成人综合在线观看| 黄色不卡视频| 亚洲欧美人成电影在线观看| 99久久国产综合精品2023| 精品成人一区二区三区电影| 青青草原国产av福利网站| 精品久久久久久久久久久| 亚洲午夜福利精品无码| 国产在线精品99一区不卡| 伊人久久婷婷| 91亚洲影院| 韩日无码在线不卡| 欧美特黄一免在线观看| 新SSS无码手机在线观看| 国产视频欧美| 一本一道波多野结衣一区二区| 国产精品性| 国产二级毛片| 国产成人综合久久| 91日本在线观看亚洲精品| 国产精品大尺度尺度视频| 国产91在线|日本| 国产欧美日韩va| 国产精品尤物铁牛tv| 性69交片免费看| 亚洲日韩精品无码专区| 国产污视频在线观看| 亚洲无码37.| 国产日韩欧美成人| 久久黄色小视频| 中文字幕一区二区人妻电影| 亚洲日产2021三区在线| h网址在线观看| 91精品专区| 色综合激情网| 欧美国产综合色视频| 国产精品成人AⅤ在线一二三四| 99精品影院| 乱人伦视频中文字幕在线| 亚洲男人的天堂在线观看| 国产精品蜜臀| 亚洲午夜福利精品无码| 亚洲a级在线观看| AV片亚洲国产男人的天堂| 色综合天天视频在线观看| 国产免费羞羞视频| 婷婷综合在线观看丁香| 91亚洲影院| a亚洲视频| 亚洲不卡影院| 亚洲欧洲自拍拍偷午夜色| 久久综合色视频| 婷婷五月在线|