向量封包處理器(VPP)特點

目錄

功能詳細信息:

基於ACL的轉發

安全組的ACL

地址解析協議

鄰接

雙向轉發檢測

位索引顯式複製

粘接

緩衝區元數據更改跟蹤器

對靜態http或https服務器的內置URL支持

警察

分類

數據平面對象

動態主機配置協議

GPRS隧道協議

通用路由封裝

IP鄰居數據庫

IP安全

IP隧道中的IP

IPFIX探針

英特爾IPSecMB庫提供的IPSec加密引擎

Openssl庫提供的IPSec加密引擎

本機實現提供的IPSec加密引擎

IPv6鄰居發現

互聯網組管理協議

L2TPv3

第2層轉發

第三層交叉連接

負載均衡器

定位器ID分離協議控制平面

定位器ID分離協議通用協議擴展

地址和端口的映射

多協議標籤交換

NSH

Netmap設備

網絡地址解讀

網絡延遲模擬器

PG

PPPoE

管道裝置

QUIC協議

服務質量

SRv6-服務鏈接動態代理

SRv6-服務鏈接僞裝代理

SRv6-服務鏈接靜態代理

SRv6 Mobuile

IPv6的分段路由(SRv6)

MPLS的分段路由

會話層

源VRF選擇

靜態HTTP https服務器

TLS OpenSSL

點按設備

基於時間範圍的MAC地址過濾器

傳輸控制協議

傳輸層安全

隧道基礎設施

用戶數據報協議

VNET GSO

VPP通訊庫

Virtio PCI設備

虛擬路由器冗餘協議

虛擬可擴展局域網

局域網

主機接口設備AF_PACKET

rdma設備驅動程序

vlib / unix

vmxnet3設備驅動程序


功能詳細信息:

VPP版本:v20.09-rc0-77-g5bb3e81e7

基於ACL的轉發

維護者:Neale Ranns [email protected]

  • 基於策略的路由
  • ACL匹配要轉發的流量
  • ACL中的每個規則都有一個關聯的“路徑”,該路徑確定如何轉發流量。該路徑被描述爲FIB路徑,因此使用ABF可以進行基本L3轉發的任何可能(輸出MPLS標籤除外)
  • ACL分爲策略
  • 策略中的ACL優先級確定優先匹配的流量
  • 策略附加到接口。
  • ABF在L3路徑中作爲輸入功能運行

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/abf

安全組的ACL

維護者:Andrew Yourtchenko [email protected]

ACL插件允許在IP地址所有權級別(通過通過MACIP ACL鎖定IP-MAC關聯)以及在入站和出站ACL中使用網絡和傳輸級別策略來實施訪問控制策略。對於非初始片段,僅在網絡層上進行匹配。有狀態ACL中的會話狀態按接口維護(例如,出站接口ACL創建會話,而入站ACL匹配會話),這簡化了設計和操作。對於TCP處理,會話處理跟蹤“已建立”(同時看到SYN段和可見的ACK)和“瞬態”(所有其他TCP狀態)會話。

  • 入站MACIP ACL

    • 過濾源IP:MAC地址靜態配置的綁定
  • 無狀態入站和出站ACL

    • 根據其L3 / L4信息允許/拒絕數據包
  • 有狀態的入站和出站ACL

    • 根據出站流量創建入站會話,反之亦然

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/plugins/acl

地址解析協議

維護者:Neale Ranns [email protected]

如RFC826中所述的地址解析協議(ARP)的實現

  • ARP響應者

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/arp

鄰接

維護者:Neale Ranns [email protected]

鄰接表示到達直接連接的鄰居所需的下一跳信息。

  • 鄰接表示如何向對等方發送不同的流量類型
  • 鄰接的原則屬性是接口和重寫。重寫將在數據包通過接口轉發之前進行。
  • 重寫由接口類型提供。它可以從固定接口屬性(即P2P隧道上的src,dst IP地址)或解析協議(如以太網鏈路上的ARP)構造。
  • 如果存在重寫,則稱鄰接關係是完整的,如果沒有重寫,則鄰接關係是不完整的,
  • 在DPO圖中作爲葉的鄰接是終端/正常(即在物理接口上)。如果不是終端,則稱爲中間鏈(即虛擬接口上的一個,例如GRE隧道)。中鏈鄰接可以堆疊/加入到描述後續轉發(即如何發送GRE隧道的目標地址)的DPO圖上。
  • Glean鄰接關係描述瞭如何將數據包廣播到子網中

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/adj

雙向轉發檢測

維護者:Klement Sekera [email protected]

雙向轉發檢測(BFD)的實現。

  • BFD協議實現

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/vnet/bfd

位索引顯式複製

維護者:Neale Ranns [email protected]

位索引顯式複製(BIER)的實現

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/bier

粘接

維護者:Steven Luong [email protected]

綁定實施

  • 具有以下選項的接口綁定支持-模式活動備份-模式lacp-負載平衡l2 | l23 | l34-僅限於numa-模式xor-負載平衡l2 | l23 | l34-模式循環-模式廣播

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/vnet/bonding

緩衝區元數據更改跟蹤器

維護者:Dave Barach [email protected]

緩衝區元數據更改跟蹤器(mdata)使用圖形節點之前/之後的主循環性能回調掛鉤捕獲緩衝區元數據,然後比較和總結每個節點的結果。回答問題“特定圖形節點會更改哪些緩衝區元數據?” 通過直接觀察。啓用前對性能的影響爲零。

  • 緩衝區元數據更改跟蹤器

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/mdata

對靜態http或https服務器的內置URL支持

維護者:Dave Barach [email protected]

(builtinurl)插件將一組URL添加到靜態http / https服務器。當前URL,所有URL返回.json fmt中的數據:/version.json-vpp版本信息 /interface_list.json-接口列表 / interface_stats-通過HTTP POST的單個接口 / interface_stats-通過HTTP GET的所有intfcs。

  • 靜態http / https服務器的內置URL

功能成熟度級別:開發
支持:API CLI MULTITHREAD
源代碼:https ://git.fd.io/vpp/tree/src/plugins/builtinurl

警察

維護者:Dave Barach [email protected]

一個非常簡單/快速的源地址白名單功能

  • v4,v6非默認FIB src地址查找
  • 丟棄未達到接收鄰接關係的數據包
  • 沒有廣泛使用

功能成熟度級別:實驗
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/cop

分類

維護者:Dave Barach [email protected]

掩碼/匹配包分類器

  • 瑞士軍刀面罩匹配引擎,用於對數據包進行分類
  • 使用128位SIMD向量運算來提高性能
  • 許多用例,包括數據包跟蹤/ pcap捕獲過濾

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/classify

數據平面對象

維護者:Neale Ranns [email protected]

數據平面對象(DPO)

  • DPO是對象的通用術語(又稱抽象基類),它對數據平面中的數據包執行[一組]操作
  • DPO類型的具體示例是;鄰接,mpls-imposition,複製。
  • DPO堆疊/合併以形成一個處理圖,數據包將遍歷該處理圖以描述數據包應經歷的全部操作。
  • DPO圖可以植根於VLIB圖中的任何點-值得注意的例子是L3 FIB查找,ABF,L3XC。

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/dpo

動態主機配置協議

維護者:Dave Barach dave@ barachs.net,Neale Ranns [email protected]

動態主機配置協議(DHCP)客戶端的實現

  • DHCP客戶端(v4 / v6)
  • DHCPv6前綴委託
  • DHCP代理/選項82

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/dhcp

GPRS隧道協議

維護者:倪洪軍[email protected]

GPRS隧道協議的實現

  • GTPU解封裝
  • GTPU封裝

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/gtpu

通用路由封裝

維護者:Neale Ranns [email protected]

通用路由封裝(GRE)的實現

  • L3隧道,IPv4和IPv6的所有組合
  • Encap / Decap標誌用於控制DSCP,ECN,DF從覆蓋圖到參考圖的複製,反之亦然。
  • L2隧道

功能成熟度級別:生產
支持:API CLI MULTITHREAD

尚未實施:
-GRE密鑰

源代碼:https : //git.fd.io/vpp/tree/src/vnet/gre

IP鄰居數據庫

維護者:Neale Ranns [email protected]

  • 獨立於IP協議的鄰居數據庫(也稱爲對等數據庫)
  • 限制同行數量,回收和老化

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/ip-neighbor

IP安全

維護者:Neale Ranns [email protected]

IPSec的實現

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/ipsec

IP隧道中的IP

維護者:Ole Troan [email protected]

如RFC2473中所述,通過IP {v4,v6}隧道實現IP {v4,v6}。該模塊還實現了6RD(RFC5969)的邊界中繼。

  • IPv4 / IPv6上的IPv4 / IPv6封裝

    • 碎片與重組
    • 可配置的MTU
    • 內到外交通等級/ TOS副本
    • 可配置的流量等級/ TOS
  • ICMPv4 / ICMPv6代理

  • 6RD(RFC5969)

    • 邊境接力

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD

尚未實現:
-隧道PMTUD-跟蹤隧道狀態的FIB狀態-IPv6擴展標頭(“隧道封裝限制”選項)

源代碼:https : //git.fd.io/vpp/tree/src/vnet/ipip

IPFIX探針

維護者:Ole Troan [email protected]

IPFIX流量探頭。適用於L2或IP輸入功能路徑。

  • L2輸入功能
  • IPv4 / IPv6輸入功能
  • 記錄L2,L3和L4信息

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD

尚未實現:
-輸出路徑-通過IPv6導出-通過TCP / SCTP導出

源代碼:https : //git.fd.io/vpp/tree/src/plugins/flowprobe

英特爾IPSecMB庫提供的IPSec加密引擎

維護者:Neale Ranns [email protected]

  • SHA(1,224,256,384,512)
  • CBC(128、192、256)
  • GCM(128、192、256)

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/crypto_ipsecmb

Openssl庫提供的IPSec加密引擎

維護者:Damjan Marion [email protected]

  • SHA(1,224,256,384,512)
  • CBC(128、192、256)
  • GCM(128、192、256)
  • 點閱率(128,192,256)
  • DES,3DES
  • MD5

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https ://git.fd.io/vpp/tree/src/plugins/crypto_openssl

本機實現提供的IPSec加密引擎

維護者:Damjan Marion [email protected]

本機加密引擎的實現

  • CBC(128、192、256)
  • GCM(128、192、256)

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/crypto_native

IPv6鄰居發現

維護者:Neale Ranns [email protected]

如RFC4861和RFC4862中所述的IPv6鄰居發現協議的實現。

  • 鄰居發現。
  • ND自動地址配置
  • 多播偵聽器發現-僅作爲發送廣告的主機角色
  • 路由器廣告

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/ip6-nd

互聯網組管理協議

維護者:Neale Ranns [email protected]

Internet組管理協議(IGMP)的實現

  • 僅限IGMPv3。

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/igmp

L2TPv3

維護者:未維護

L2TPv3(RFC3931)的初始和不完整實施。

  • 通過IPv6的L2TPv3

功能成熟度級別:試驗性
支持:API CLI
源代碼:https//git.fd.io/vpp/tree/src/vnet/l2tp

第2層轉發

維護者:John Lo [email protected]

第2層橋接和交叉連接支持

  • 兩個接口的第2層(L2)交叉連接(xconnect)
  • 第2層(L2)橋接域(BD)中多個接口的橋接

    • 通過報文的目的MAC地址轉發
    • 在BD或每個接口上啓用/禁用MAC學習
    • 具有指定的老化間隔的MAC老化啓用/禁用
    • 接口關閉,BD刪除或用戶發現的MAC的MAC刷新
    • 用戶添加了不會老化的靜態MAC,也不會被MAC學習覆蓋
    • 用戶添加的MAC不會老化,但可以被MAC學習覆蓋
    • 單播轉發啓用/禁用
    • 未知單播洪泛啓用/禁用
    • 啓用/禁用多播/廣播泛洪
    • ARP終止以避免ARP請求泛洪
    • 啓用/禁用ARP請求的單播而不是泛洪
    • BVI(橋接虛擬接口),用於從BD或向BD進行IP轉發
    • 在BD中設置接口以發送未知的單播數據包而不是泛洪
    • 在BD接口上支持水平分割組(SHG)
  • 在L2橋接或xconnect接口上重寫VLAN標記

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/l2

第三層交叉連接

維護者:Neale Ranns [email protected]

  • 將L3接口上的所有入口流量交叉連接到輸出FIB路徑。
  • 該路徑可以描述任何輸出(MPLS標籤除外)
  • 通過爲表使用專用的VRF並添加具有相同路徑的默認路由,可以實現相同的功能。但是,L3XC在內存和CPU上效率更高

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/l3xc

維護者:Steven Luong [email protected]

鏈路聚合控制協議實現(LACP)

  • 支持LACP版本1規範,包括標記協議

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/plugins/lacp

維護者:Klement Sekera [email protected]

鏈路層發現協議(LLDP)實施

  • 鏈路層發現協議實現

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/vnet/lldp

負載均衡器

維護人員:Pfister [email protected]倪洪軍hong [email protected]

  • GRE隧道模式
  • NAT模式
  • L3DSR模式
  • 一致的哈希
  • 連接軌跡

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/lb

定位器ID分離協議控制平面

維護者:Florin Coras [email protected]

定位器ID分離協議控制平面(LISP)的實現

  • ITR,ETR和RTR操作模式
  • 多租戶
  • 多宿主
  • 源/目標地圖緩存查找
  • RLOC探測
  • 支持以太網,IPv4,IPv6和NSH EID(有效載荷)
  • 映射解析器故障轉移算法

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/vnet/lisp-cp

定位器ID分離協議通用協議擴展

維護者:Florin Coras [email protected]

定位器ID分離協議通用協議擴展(LISP-GPE)的實現

  • ITR,ETR和RTR模式
  • 支持以太網,IPv4,IPv6和NSH EID(有效載荷)
  • 源/目的地轉發
  • IPv4和IPv6 RLOC

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/vnet/lisp-gpe

地址和端口的映射

維護者:Ole Troan [email protected]

地址和端口映射(MAP):IPv4作爲一種服務機制。隧道或轉換IPv4地址,IPv4子網或共享的IPv4地址。在共享IPv4地址模式下,僅支持UDP,TCP和受限的ICMP。

  • LW46 BR(RFC7596)

    • 碎片與重組
  • MAP-E BR(RFC7597)

  • MAP-T BR(RFC7599)

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/plugins/map

多協議標籤交換

維護者:Neale Ranns [email protected]

多協議標籤交換(MPLS)的實現

  • 標籤拼版/處置-管道和統一模式
  • 隧道-單向

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/mpls

NSH

維護者:倪洪軍 hongjun.ni intel.com,Vengada [email protected]

證監會的NSH

  • NSH分類器
  • NSH轉發器
  • NSH SF
  • NSH代理
  • NSH OAM
  • NSH元數據

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/nsh

Netmap設備

維護者:Damjan Marion [email protected]

創建一個netmap接口,這是一個高速用戶空間接口,該接口允許VPP在不使用DPDK的情況下修補到linux名稱空間,linux容器或物理NIC。

  • L4校驗和卸載

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD

尚未實現:
-API轉儲

源代碼:https : //git.fd.io/vpp/tree/src/deprecated/netmap

網絡地址解讀

維護人員:Ole Troan ot @ cisco.com,Filip Varga [email protected]

網絡地址轉換(NAT)插件提供了多種地址轉換功能。這些可以用於多種不同的情況。CPE,CGN等

  • NAT44

    • 1:1 NAT
    • 1:1 NAT與端口
    • VRF意識
    • 多個內部接口
    • 髮夾
    • IPFIX
    • 系統日誌
    • 端點相關的NAT
    • TCP MSS夾緊
    • 本地旁路(DHCP)
  • CGN-確定性NAT

  • NAT64

  • NAT66

  • DS-lite

  • 464XLAT

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/plugins/nat

網絡延遲模擬器

維護者:Dave Barach [email protected]

引入了可配置的網絡延遲和丟失

  • 網絡延遲和損耗分數模擬器

功能成熟度級別:生產
支持:CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/nsim

PG

維護者:Dave Barach [email protected]

高速包發生器

  • 高速數據包生成
  • 數據包定義CLI
  • 支持pcap捕獲重放
  • 多線程數據包生成
  • 數據包注入到任意圖節點
  • 被“ make test”大量使用

功能成熟度級別:生產
支持:CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/pg

PPPoE

維護者:倪洪軍[email protected]

以太網上的PPP

  • PPPoE控制平面數據包分派
  • PPPoE解封裝
  • PPPoE封裝

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/pppoe

管道裝置

維護者:Damjan Marion [email protected]

創建一個管道設備接口,該接口可以將數據包在管道的一側雙向傳遞到管道的另一側。儘管行爲與UNIX管道相似,但它不是基於主機的管道。

  • L4校驗和卸載

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD

尚未實現:
-不使用硬件地址-不支持標記流量-通過sw_if_index進行API轉儲過濾

源代碼:https : //git.fd.io/vpp/tree/src/vnet/devices/pipe

QUIC協議

維護者:Aloys Augustin [email protected]

IETF QUIC協議實施

功能成熟度級別:實驗
支持:API CLI STATS MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/quic

服務質量

維護者:Neale Ranns [email protected]

服務質量(QoS)的保證

  • 記錄-從數據包標題中提取QoS位並寫入元數據
  • Mapp-定義往返於每個數據包層的QoS位的簡單轉換
  • 標記-將[映射的] QoS位寫入數據包頭
  • 存儲-在數據包元數據中寫入固定的QoS值

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/qos

SRv6-服務鏈接動態代理

維護者:Francois Clad [email protected]

SRv6動態代理

  • SRv6-動態服務鏈代理(draft-ietf-spring-sr-service-programming-01)

功能成熟度級別:生產
支持:CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/srv6-ad

SRv6-服務鏈接僞裝代理

維護者:Francois Clad [email protected]

SRv6僞裝代理

  • SRv6-僞裝服務鏈代理(draft-ietf-spring-sr-service-programming-01)

功能成熟度級別:生產
支持:CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/srv6-am

SRv6-服務鏈接靜態代理

維護者:Francois Clad [email protected]

SRv6靜態代理

  • SRv6-靜態服務鏈代理(draft-ietf-spring-sr-service-programming-01)

功能成熟度級別:生產
支持:CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/srv6-as

SRv6 Mobuile

維護者:村上哲也[email protected]

SRv6移動端功能。支持GTP4.D,GTP4.E,GTP6.D,GTP6.D.Di和GTP6.E。

  • GTP4.D
  • GTP4.E
  • GTP6.D
  • GTP6D
  • GTP6.E

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/srv6-mobile

IPv6的分段路由(SRv6)

維護者:Pablo Camarillo [email protected]

完整的SRv6網絡編程實現

  • 支持SRv6網絡編程(draft-ietf-spring-srv6-network-programming-07)
  • SR頭端行爲(H.Encaps,H.Encaps.Red,H.Encaps.L2,H.Encaps.L2.Red)
  • 具有PSP支持的中間TE的SR端點行爲(End,End.X,End.T)
  • 用於覆蓋創建的SR端點行爲(End.DX4,End.DX6,End.DT4,End.DT6,End.DX2)
  • BindingSID實例化的SR端點行爲(End.B6.Encaps.Red)
  • 支持SRH插入(draft-filsfils-spring-srv6-net-pgm-insertion-01)
  • SR櫃檯
  • SR政策實施(draft-ietf-spring-segment-routing-policy-02)
  • 基於IP前綴/ L2接口分類的SR導向

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/vnet/srv6

MPLS的分段路由

維護者:Pablo Camarillo [email protected]

SR-MPLS

  • SR政策支持
  • 自動轉向(基於NextHop / Color的SR轉向)

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/srmpls

會話層

維護者:Florin Coras [email protected]

會話層促進了北向應用程序和南向傳輸協議之間的交互。爲此,會話層通過應用程序接口子層向北,公開API供應用程序與抽象通信單元(即會話)進行交互。向南,通過傳輸協議接口,它公開了API,這些API允許傳輸協議與應用程序交換數據和事件(ctrl和io),而實際上並不知道該通信是如何進行的。

  • 管理會話的分配和跟蹤(六元組查找表)
  • 限制應用程序訪問網絡資源的應用程序名稱空間
  • 在傳輸協議和應用程序之間傳送數據和通知(Ctrl和io)
  • 傳輸協議接口

    • 提供通用的傳輸協議模板
    • 在數據的傳輸和應用程序表示之間轉換
    • 安排發送會話/連接
  • 應用界面

    • 維持每個應用程序的狀態
    • 管理用於在應用程序和傳輸之間交換數據的共享內存資源的分配
    • 分別爲內置和外部應用程序公開本機C和二進制API

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/session

源VRF選擇

維護者:Neale Ranns [email protected]

  • 根據源IP地址確定輸入的VRF /表
  • 路由被添加到表中。
  • 使用數據包的源地址執行路由查找
  • 使用該表對路由進行編程,在該表中將執行後續的目標地址查找
  • 表綁定到接口。
  • SVS在L3路徑中作爲輸入功能運行

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/svs

靜態HTTP https服務器

維護者:Dave Barach [email protected]

一個簡單的靜態靜態http / https服務器緩存內置的vpp主機堆棧應用程序。支持HTTP GET和HTTP POST方法。

  • 具有緩存的可擴展靜態http / https服務器

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/http_static

TLS OpenSSL

維護者:Florin Coras [email protected],俞平[email protected]

用於VPP主機堆棧的TLS OpenSSL插件

  • TLS的OpenSSL引擎
  • TLS異步框架
  • 爲加密卸載啓用QAT

功能成熟度級別:實驗
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/plugins/tlsopenssl

點按設備

維護人員:[email protected] [email protected] [email protected]

創建一個Tap V2設備接口,該接口連接到主機系統上的Tap接口。

  • 維蒂奧
  • 堅持不懈
  • 附加到主機上的現有水龍頭
  • 使用索引索引SW過濾數據包轉儲輸出

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/vnet/devices/tap

基於時間範圍的MAC地址過濾器

維護者:Dave Barach [email protected]

設備輸入/輸出弧驅動器級別MAC過濾器。檢查是否允許流量往返於給定的MAC地址,並採取適當的措施。適用於家庭網關用例,其中按位計費WAN流量。

  • 基於靜態/時間範圍/數據配額的MAC地址過濾器

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/plugins/mactime

傳輸控制協議

維護者:Florin Coras [email protected]

高速和大規模傳輸控制協議(TCP)實現

  • 核心功能(RFC793,RFC5681,RFC6691)
  • 高性能擴展(RFC7323)
  • 擁塞控制擴展(RFC3465,RFC8312)
  • 丟失恢復擴展(RFC2018,RFC3042,RFC6582,RFC6675,RFC6937)
  • 檢測和防止虛假重傳(RFC3522)
  • 防禦欺騙和泛洪攻擊(RFC6528)
  • 部分實現的功能(RFC1122,RFC4898,RFC5961)
  • 投放速度估算(草稿-iccrg投放速度估算)

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/vnet/tcp

傳輸層安全

維護人員:Florin Coras [email protected],俞平[email protected]

傳輸層安全性(TLS)協議實現,由一組充當現有TLS實現的包裝器的引擎組成,例如OpenSSL,Picotls和MbedTLS,以及將引擎集成到VPP主機堆棧的框架

  • 支持可插拔TLS引擎的框架
  • OpenSSL,Picotls和MbedTLS引擎

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/vnet/tls

隧道基礎設施

維護者:Neale Ranns [email protected]

隧道基礎設施

  • IP隧道的常見類型和功能

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/tunnel

用戶數據報協議

維護者:Florin Coras [email protected]

用戶數據報協議(UDP)實現

  • 通過會話層進行主機堆棧集成
  • 每個端口調度程序獨立於隧道協議

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/udp

VNET GSO

維護者:[email protected] [email protected]

通用細分卸載

  • 基本的GSO支持
  • GSO用於VLAN標記的數據包
  • 用於VXLAN隧道的GSO
  • IP-IP隧道的GSO
  • IPSec隧道的GSO
  • 提供內聯函數以獲取標頭偏移

功能成熟度級別:實驗
支持:API CLI

尚未實施:
-全面測試,GRE,日內瓦

源代碼:https : //git.fd.io/vpp/tree/src/vnet/gso

VPP通訊庫

維護者:Florin Coras [email protected]

VPP通信庫(VCL)通過公開與POSIX兼容但不兼容POSIX的API,簡化了與會話層的應用交互。

  • 將vpp主機堆棧會話抽象爲整數會話句柄
  • 公開自己的異步通信功能,即epoll,select,poll
  • 支持多工應用
  • 會話不能在多個線程/進程之間共享
  • VCL鎖定的會話(VLS)

    • 通過鎖定確保一次僅一個線程訪問一個會話
    • 將派生的進程檢測並註冊爲新的VCL工作者。它不會將線程註冊爲新工作線程。
  • LD_PRELOAD墊片(LDP)

    • 攔截系統調用並將其注入VLS。
    • 支持的應用程序可以與VCL一起使用,並且可以隱式與VPP的主機堆棧一起使用,而無需更改任何代碼
    • 它不支持所有系統調用和系統調用選項

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vcl

Virtio PCI設備

維護人員:[email protected] [email protected]

Virtio實施

  • 驅動程序模式可模擬從主機接口提供給VPP的PCI接口。
  • 模擬從來賓VM呈現給VPP的vhost-用戶界面的設備模式。
  • 支持多隊列,GSO,校驗和卸載,間接描述符,巨型幀和壓縮環。
  • 在vhost中支持virtio 1.1壓縮環

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD

尚未實現:
-通過sw_if_index進行API轉儲過濾

源代碼:https : //git.fd.io/vpp/tree/src/vnet/devices/virtio

虛擬路由器冗餘協議

維護者:馬修·史密斯[email protected]

虛擬路由器冗餘協議實施(VRRPv3)

  • 適用於IPv4和IPv6的VRRPv3(RFC 5798)

    • 信號/廣告和選舉主人
    • 回覆ARP,NS對虛擬路由器地址的請求
  • VRRP虛擬MAC地址支持

    • DPDK通過rte_eth_dev_mac_addr_add(),rte_eth_dev_mac_addr_del()與PMD支持多個MAC地址的接口
    • 設置爲混雜模式的其他接口可能會起作用
  • VRRP虛擬路由器的支持接口類型

    • 硬件接口
    • VLAN子接口
    • 綁定接口
  • RFC 5798中未指定的其他功能

    • 允許將廣告發送到單播對等方,而不是組播
    • 允許根據上游接口的狀態調整虛擬路由器的優先級。在RFC 8347中提到作爲“跟蹤接口或網絡”的配置選項。

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/plugins/vrrp

虛擬可擴展局域網

維護者:John Lo [email protected]

虛擬可擴展LAN(VXLAN)隧道支持跨越L3網絡的L2覆蓋網絡

  • VXLAN隧道,用於支持L2覆蓋/虛擬網絡(RFC-7348)
  • 支持IPv4或IPv6底層網絡VTEP
  • 如果BD中的所有VXLAN隧道均爲單播,則通過頭端複製進行泛洪
  • 可以將多播VXLAN隧道添加到BD,以通過IP多播進行泛洪
  • VXLAN封裝具有散列的源端口,可實現更好的底層IP負載平衡
  • 通過底層接口上的vxlan-bypass IP功能對VXLAN進行decap優化
  • 在Intel Fortville NIC上使用帶有DPDK的Flow Director對VXLAN進行硬件卸載

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/vxlan

局域網

維護者:倪洪軍[email protected]

VxLAN-GPE隧道處理

  • VxLAN-GPE解封裝
  • VxLAN-GPE封裝

功能成熟度級別:生產
支持:API CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vnet/vxlan-gpe

主機接口設備AF_PACKET

維護者:Damjan Marion [email protected]

創建一個主機接口,該接口將連接到veth對的一側的linux AF_PACKET接口。veth對必須已經存在。創建後,新的主機接口將在VPP中存在,名稱爲“ host-',在哪裏'是指定的veth對的名稱。使用“ show interface”命令顯示主機接口詳細信息。

  • L4校驗和卸載

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD

尚未實現:
-sw_if_index和名稱以外的API轉儲詳細信息

源代碼:https : //git.fd.io/vpp/tree/src/vnet/devices/af_packet

rdma設備驅動程序

維護者:BenoîtGanne [email protected]

rdma設備驅動程序支持

  • 爲Mellanox的ConnectX- RDMA驅動器4 / 5的適配器

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/plugins/rdma

vlib / unix

維護者:Dave Barach [email protected]

特定於Linux的支持例程

  • 基於epoll的文件I / O支持
  • Linux信號處理
  • Syslog支持
  • 啓動配置處理,日誌記錄
  • 配置調試CLI尋呼機,橫幅,主循環輪詢間隔
  • 每線程堆棧分配,保護頁面設置

功能成熟度級別:生產
支持:CLI MULTITHREAD
源代碼:https://git.fd.io/vpp/tree/src/vlib/unix

vmxnet3設備驅動程序

維護者:Steven Luong [email protected]

vmxnet3設備驅動程序支持

  • vmxnet3設備驅動程序,用於連接到ESXi服務器,VMWare Fusion和VMWare Workstation

功能成熟度級別:生產
支持:API CLI STATS MULTITHREAD
源代碼:https : //git.fd.io/vpp/tree/src/plugins/vmxnet3

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章