目錄
功能詳細信息:
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)的實現
- 使用位索引顯式複製進行多播(https://tools.ietf.org/html/rfc8279)
- MPLS和非MPLS網絡中的位索引顯式複製(BIER)封裝(https://tools.ietf.org/html/rfc8296)
功能成熟度級別:生產
支持: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隧道協議
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的實現
- IPSec(https://tools.ietf.org/html/rfc4301)
- 認證標題(https://tools.ietf.org/html/rfc4302)
- 封裝安全有效載荷(https://tools.ietf.org/html/rfc4303)
功能成熟度級別:生產
支持: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
以太網上的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協議實施
- 通過會話層進行主機堆棧集成
- 基於Quicly庫:https://github.com/h2o/quicly
功能成熟度級別:實驗
支持: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
局域網
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