向量封包处理器(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 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隧道协议
维护者:倪洪军hongjun.ni@intel.com
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
维护者:倪洪军hongjun.ni@intel.com
以太网上的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
局域网
维护者:倪洪军hongjun.ni@intel.com
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
向量封包处理器(VPP)特点相关推荐
- 向量封包处理器(VPP)如何运作
目录 FD.io背后的技术 硬件加速 FD.io背后的技术 FD.io的核心是矢量数据包处理(VPP). 从2002年开始开发,VPP是当前在运输产品中运行的生产代码.它在x86服务器和嵌入式设备上的 ...
- FD.io VPP 20.09版本正式发布:往期VPP文章回顾+下载地址+相关链接
目录 下载RPM/DEB包 往期文章回顾与推荐 FD.io是一些项目和库的集合,基于DPDK并逐渐演化,支持在通用硬件平台上部署灵活可变的业务.FD.io为软件定义基础设施的开发者提供了一个通用平台, ...
- FD.io VPP基本介绍-理解VPP软件架构
向量封包处理器 1. 什么是VPP 1.1. 介绍 VPP平台是一个可扩展的框架,可提供开箱即用的生产质量交换机/路由器功能.它是思科矢量数据包处理(VPP)技术的开源版本:一种高性能的数据包处理协议 ...
- FD.io VPP基本介绍:理解向量包处理(VPP)
FD.io VPP:用户文档 向量包处理器 RToax 2020年9月 1. 什么是向量包处理器(VPP) FD.io的矢量包处理器(VPP)是一个快速,可扩展的2-4层多平台网络协议栈.它在Linu ...
- [转载翻译][重新整理]西川善司的”METAL GEAR SOLID 4”图形讲座(5)
http://www.huanimei.com/logs/94179985.html 利用场景深度值来制作的特效处理 近年来的3D游戏图形中,灵活应用PIXEL SHADER的特效有很多,它们都会 ...
- 【OS学习笔记】三十八 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----微型内核汇代码
本文是以下几篇文章对应的微型内核代码汇编代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 保护模式十 ...
- CPU也能加速AlphaFold2!英特尔最新发布:23倍通量优化指南!
丰色 明敏 发自 凹非寺 量子位 | 公众号 QbitAI 搅翻计算生物界的AlphaFold2一开源,各种加速方案就争相涌现. 妹想到啊,现在居然有了个CPU的推理优化版本,不用GPU,效果也出人意 ...
- CPU也能速刷AlphaFold2?英特尔:请收下这份23倍通量优化指南
丰色 明敏 发自 凹非寺 量子位 | 公众号 QbitAI 搅翻计算生物界的AlphaFold2一开源,各种加速方案就争相涌现. 妹想到啊,现在居然有了个CPU的推理优化版本,不用GPU,效果也出人意 ...
- 嵌入式编程相关专业英语积累
ARM芯片手册相关英语 overview 概述 DAT data(数据) CON control(控制) parity ...
最新文章
- HP服务器ile进系统,HP GEN10服务器UEFI安装Windows Sverver 2012 R2教程
- Cocos2d-x3.1TestCpp之NewRenderTest Demo分析
- android照片添加gps,如何利用Exif为图片文件添加GPS坐标信息
- 造车厂入局网约车 新能源低运营成本或打破“烧钱”怪圈
- CentOS下搭建docker+.net core
- 「Mac小技巧」教你如何解决WiFi的国家地区代码冲突
- mysql电商数据库设计文档_MySQL电商项目数据库设计及架构优化视频课程
- Firefox检测到潜在的安全威胁,并因blog.csdn.net要求安全连接而没有继续
- android 格林尼治标准时间的 格式转换 (String To Date) 报错 java.text.ParseException: Unparseable date
- 数据结构常见问题系列(二)
- 百度B端战事渐入佳境
- PHP验证身份证类(包含香港身份证校验)
- InputStream 和OutputStream
- 刚柔相济 端庄大方——张銅彦行楷书摭谈
- python使用代理爬虫_python爬虫requests使用代理ip
- 短线上岸西安电子科技大学考研811信号与电路分析经验分享
- C++ UML类图详解
- 亚马逊、Lazada卖家如何做测评自养号和提升店铺流量
- 医学图像分割数据集与制作自己的数据集
- どゆことの意味は何ですか?