目录
功能详细信息:
VPP版本:v20.09-rc0-77-g5bb3e81e7
基于ACL的转发
维护者:Neale Ranns nranns@cisco.com
- 基于策略的路由
- 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 ayourtch@gmail.com
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 nranns@cisco.com
如RFC826中所述的地址解析协议(ARP)的实现
- ARP响应者
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/vnet/arp
邻接
维护者:Neale Ranns nranns@cisco.com
邻接表示到达直接连接的邻居所需的下一跳信息。
- 邻接表示如何向对等方发送不同的流量类型
- 邻接的原则属性是接口和重写。重写将在数据包通过接口转发之前进行。
- 重写由接口类型提供。它可以从固定接口属性(即P2P隧道上的src,dst IP地址)或解析协议(如以太网链路上的ARP)构造。
- 如果存在重写,则称邻接关系是完整的,如果没有重写,则邻接关系是不完整的,
- 在DPO图中作为叶的邻接是终端/正常(即在物理接口上)。如果不是终端,则称为中间链(即虚拟接口上的一个,例如GRE隧道)。中链邻接可以堆叠/加入到描述后续转发(即如何发送GRE隧道的目标地址)的DPO图上。
- Glean邻接关系描述了如何将数据包广播到子网中
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/vnet/adj
双向转发检测
维护者:Klement Sekera ksekera@cisco.com
双向转发检测(BFD)的实现。
- BFD协议实现
功能成熟度级别:生产
支持:API CLI STATS MULTITHREAD
源代码:https : //git.fd.io/vpp/tree/src/vnet/bfd
位索引显式复制
维护者:Neale Ranns nranns@cisco.com
位索引显式复制(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 sluong@cisco.com
绑定实施
- 具有以下选项的接口绑定支持-模式活动备份-模式lacp-负载平衡l2 | l23 | l34-仅限于numa-模式xor-负载平衡l2 | l23 | l34-模式循环-模式广播
功能成熟度级别:生产
支持:API CLI STATS MULTITHREAD
源代码:https : //git.fd.io/vpp/tree/src/vnet/bonding
缓冲区元数据更改跟踪器
维护者:Dave Barach dave@barachs.net
缓冲区元数据更改跟踪器(mdata)使用图形节点之前/之后的主循环性能回调挂钩捕获缓冲区元数据,然后比较和总结每个节点的结果。回答问题“特定图形节点会更改哪些缓冲区元数据?” 通过直接观察。启用前对性能的影响为零。
- 缓冲区元数据更改跟踪器
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/plugins/mdata
对静态http或https服务器的内置URL支持
维护者:Dave Barach dave@barachs.net
(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 dbarach@cisco.com
一个非常简单/快速的源地址白名单功能
- v4,v6非默认FIB src地址查找
- 丢弃未达到接收邻接关系的数据包
- 没有广泛使用
功能成熟度级别:实验
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/vnet/cop
分类
维护者:Dave Barach dbarach@cisco.com
掩码/匹配包分类器
- 瑞士军刀面罩匹配引擎,用于对数据包进行分类
- 使用128位SIMD向量运算来提高性能
- 许多用例,包括数据包跟踪/ pcap捕获过滤
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/vnet/classify
数据平面对象
维护者:Neale Ranns nranns@cisco.com
数据平面对象(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 nranns@cisco.com
动态主机配置协议(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 nranns@cisco.com
通用路由封装(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 nranns@cisco.com
- 独立于IP协议的邻居数据库(也称为对等数据库)
- 限制同行数量,回收和老化
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/vnet/ip-neighbor
IP安全
维护者:Neale Ranns nranns@cisco.com
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 ot@cisco.com
如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 ot@cisco.com
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 nranns@cisco.com
- 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 damarion@cisco.com
- 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 damarion@cisco.com
本机加密引擎的实现
- CBC(128、192、256)
- GCM(128、192、256)
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/plugins/crypto_native
IPv6邻居发现
维护者:Neale Ranns nranns@cisco.com
如RFC4861和RFC4862中所述的IPv6邻居发现协议的实现。
- 邻居发现。
- ND自动地址配置
- 多播侦听器发现-仅作为发送广告的主机角色
- 路由器广告
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/vnet/ip6-nd
互联网组管理协议
维护者:Neale Ranns nranns@cisco.com
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 loj@cisco.com
第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 nranns@cisco.com
- 将L3接口上的所有入口流量交叉连接到输出FIB路径。
- 该路径可以描述任何输出(MPLS标签除外)
- 通过为表使用专用的VRF并添加具有相同路径的默认路由,可以实现相同的功能。但是,L3XC在内存和CPU上效率更高
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/plugins/l3xc
链路聚合控制协议
维护者:Steven Luong sluong@cisco.com
链路聚合控制协议实现(LACP)
- 支持LACP版本1规范,包括标记协议
功能成熟度级别:生产
支持:API CLI STATS MULTITHREAD
源代码:https : //git.fd.io/vpp/tree/src/plugins/lacp
链路层发现协议
维护者:Klement Sekera ksekera@cisco.com
链路层发现协议(LLDP)实施
- 链路层发现协议实现
功能成熟度级别:生产
支持:API CLI STATS MULTITHREAD
源代码:https : //git.fd.io/vpp/tree/src/vnet/lldp
负载均衡器
维护人员:Pfister ppfister@cisco.com,倪洪军hong hongjun.ni@intel.com
- GRE隧道模式
- NAT模式
- L3DSR模式
- 一致的哈希
- 连接轨迹
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/plugins/lb
定位器ID分离协议控制平面
维护者:Florin Coras fcoras@cisco.com
定位器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 fcoras@cisco.com
定位器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 ot@cisco.com
地址和端口映射(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 nranns@cisco.com
多协议标签交换(MPLS)的实现
- 标签拼版/处置-管道和统一模式
- 隧道-单向
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/vnet/mpls
NSH
维护者:倪洪军 hongjun.ni @ intel.com,Vengada venggovi@cisco.com
证监会的NSH
- NSH分类器
- NSH转发器
- NSH SF
- NSH代理
- NSH OAM
- NSH元数据
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/plugins/nsh
Netmap设备
维护者:Damjan Marion damarion@cisco.com
创建一个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 fivarga@cisco.com
网络地址转换(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 dave@barachs.net
引入了可配置的网络延迟和丢失
- 网络延迟和损耗分数模拟器
功能成熟度级别:生产
支持:CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/plugins/nsim
PG
维护者:Dave Barach dbarach@cisco.com
高速包发生器
- 高速数据包生成
- 数据包定义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 damarion@cisco.com
创建一个管道设备接口,该接口可以将数据包在管道的一侧双向传递到管道的另一侧。尽管行为与UNIX管道相似,但它不是基于主机的管道。
- L4校验和卸载
功能成熟度级别:生产
支持:API CLI STATS MULTITHREAD
尚未实现:
-不使用硬件地址-不支持标记流量-通过sw_if_index进行API转储过滤
源代码:https : //git.fd.io/vpp/tree/src/vnet/devices/pipe
QUIC协议
维护者:Aloys Augustin aloaugus@cisco.com
IETF QUIC协议实施
- 通过会话层进行主机堆栈集成
- 基于Quicly库:https://github.com/h2o/quicly
功能成熟度级别:实验
支持:API CLI STATS MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/plugins/quic
服务质量
维护者:Neale Ranns nranns@cisco.com
服务质量(QoS)的保证
- 记录-从数据包标题中提取QoS位并写入元数据
- Mapp-定义往返于每个数据包层的QoS位的简单转换
- 标记-将[映射的] QoS位写入数据包头
- 存储-在数据包元数据中写入固定的QoS值
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/vnet/qos
SRv6-服务链接动态代理
维护者:Francois Clad fclad@cisco.com
SRv6动态代理
- SRv6-动态服务链代理(draft-ietf-spring-sr-service-programming-01)
功能成熟度级别:生产
支持:CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/plugins/srv6-ad
SRv6-服务链接伪装代理
维护者:Francois Clad fclad@cisco.com
SRv6伪装代理
- SRv6-伪装服务链代理(draft-ietf-spring-sr-service-programming-01)
功能成熟度级别:生产
支持:CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/plugins/srv6-am
SRv6-服务链接静态代理
维护者:Francois Clad fclad@cisco.com
SRv6静态代理
- SRv6-静态服务链代理(draft-ietf-spring-sr-service-programming-01)
功能成熟度级别:生产
支持:CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/plugins/srv6-as
SRv6 Mobuile
维护者:村上哲也tetsuya.mrk@gmail.com
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 pcamaril@cisco.com
完整的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 pcamaril@cisco.com
SR-MPLS
- SR政策支持
- 自动转向(基于NextHop / Color的SR转向)
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/vnet/srmpls
会话层
维护者:Florin Coras fcoras@cisco.com
会话层促进了北向应用程序和南向传输协议之间的交互。为此,会话层通过应用程序接口子层向北,公开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 nranns@cisco.com
- 根据源IP地址确定输入的VRF /表
- 路由被添加到表中。
- 使用数据包的源地址执行路由查找
- 使用该表对路由进行编程,在该表中将执行后续的目标地址查找
- 表绑定到接口。
- SVS在L3路径中作为输入功能运行
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/plugins/svs
静态HTTP https服务器
维护者:Dave Barach dave@barachs.net
一个简单的静态静态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 fcoras@cisco.com,俞平ping.yu@intel.com
用于VPP主机堆栈的TLS OpenSSL插件
- TLS的OpenSSL引擎
- TLS异步框架
- 为加密卸载启用QAT
功能成熟度级别:实验
支持:API CLI STATS MULTITHREAD
源代码:https : //git.fd.io/vpp/tree/src/plugins/tlsopenssl
点按设备
维护人员:damarion@cisco.com sluong@cisco.com sykazmi@cisco.com
创建一个Tap V2设备接口,该接口连接到主机系统上的Tap接口。
- 维蒂奥
- 坚持不懈
- 附加到主机上的现有水龙头
- 使用索引索引SW过滤数据包转储输出
功能成熟度级别:生产
支持:API CLI STATS MULTITHREAD
源代码:https : //git.fd.io/vpp/tree/src/vnet/devices/tap
基于时间范围的MAC地址过滤器
维护者:Dave Barach dave@barachs.net
设备输入/输出弧驱动器级别MAC过滤器。检查是否允许流量往返于给定的MAC地址,并采取适当的措施。适用于家庭网关用例,其中按位计费WAN流量。
- 基于静态/时间范围/数据配额的MAC地址过滤器
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/plugins/mactime
传输控制协议
维护者:Florin Coras fcoras@cisco.com
高速和大规模传输控制协议(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 fcoras@cisco.com,俞平ping.yu@intel.com
传输层安全性(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 nranns@cisco.com
隧道基础设施
- IP隧道的常见类型和功能
功能成熟度级别:生产
支持:API CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/vnet/tunnel
用户数据报协议
维护者:Florin Coras fcoras@cisco.com
用户数据报协议(UDP)实现
- 通过会话层进行主机堆栈集成
- 每个端口调度程序独立于隧道协议
功能成熟度级别:生产
支持:API CLI STATS MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/vnet/udp
VNET GSO
维护者:ayourtch@gmail.com sykazmi@cisco.com
通用细分卸载
- 基本的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 fcoras@cisco.com
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设备
维护人员:sykazmi@cisco.com sluong@cisco.com
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
虚拟路由器冗余协议
维护者:马修·史密斯mgsmith@netgate.com
虚拟路由器冗余协议实施(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 loj@cisco.com
虚拟可扩展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 damarion@cisco.com
创建一个主机接口,该接口将连接到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 bganne@cisco.com
rdma设备驱动程序支持
- 为Mellanox的ConnectX- RDMA驱动器4 / 5的适配器
功能成熟度级别:生产
支持:API CLI STATS MULTITHREAD
源代码:https : //git.fd.io/vpp/tree/src/plugins/rdma
vlib / unix
维护者:Dave Barach dbarach@cisco.com
特定于Linux的支持例程
- 基于epoll的文件I / O支持
- Linux信号处理
- Syslog支持
- 启动配置处理,日志记录
- 配置调试CLI寻呼机,横幅,主循环轮询间隔
- 每线程堆栈分配,保护页面设置
功能成熟度级别:生产
支持:CLI MULTITHREAD
源代码:https://git.fd.io/vpp/tree/src/vlib/unix
vmxnet3设备驱动程序
维护者:Steven Luong sluong@cisco.com
vmxnet3设备驱动程序支持
- vmxnet3设备驱动程序,用于连接到ESXi服务器,VMWare Fusion和VMWare Workstation
功能成熟度级别:生产
支持:API CLI STATS MULTITHREAD
源代码:https : //git.fd.io/vpp/tree/src/plugins/vmxnet3