向量封包处理器(VPP)特点

    技术2022-07-10  148

    目录

    功能详细信息:

    基于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,3DESMD5

    功能成熟度级别:生产 支持: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 SFNSH代理NSH OAMNSH元数据

    功能成熟度级别:生产 支持: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 NAT1:1 NAT与端口VRF意识多个内部接口发夹IPFIX系统日志端点相关的NATTCP 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.DGTP4.EGTP6.DGTP6DGTP6.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隧道的GSOIP-IP隧道的GSOIPSec隧道的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

     

    Processed: 0.024, SQL: 9