首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >learning:vpp/classify(2)

learning:vpp/classify(2)

作者头像
dpdk-vpp源码解读
发布于 2023-01-04 04:40:46
发布于 2023-01-04 04:40:46
2.1K03
代码可运行
举报
文章被收录于专栏:DPDK VPP源码分析DPDK VPP源码分析
运行总次数:3
代码可运行

classify table cli讲解

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
classify table [miss-next|l2-miss_next|acl-miss-next <next_index>]
 mask <mask-value> buckets <nn> [skip <n>] [match <n>]
 [current-data-flag <n>] [current-data-offset <n>] [table <n>]
 [memory-size <nn>[M][G]] [next-table <n>]
 [del] [del-chain]

作用如下图所示从table内存池上申请table内存,在main_heap上申请桶占用空间,从系统内存映射classify session中匹配规则表配置空间。这里操作和bihash一致。

下面分别来讲解: 1、classify miss处理,三者只能选择一个。 当classify 匹配miss时,送到下一个node在当前classify node的slot id。个人理解时支持三种类型处理逻辑,如下: l2: 二层转发流程处理逻辑,对应node节点 l2-input-classify. l3: 三层转发流程处理逻辑,区别ipv4、ipv6节点,分别对应node节点ip4-classify、ip6-classify. acl: acl功能扽别支持二层、三层转发处理。 l2转发 对应node节点 l2-input-acl,l2-output-acl、 L3转发 ip4-inacl,ip4-outacl,ip6-inacl,ip6-outacl).

miss-next,主要是三层处理流程中配置,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#三层处理流程,
miss-next  [ip4-node <node name>] | [ip6-node <node name>]
| drop | local | rewrite | <slot id>

l2-miss_next 主要处理二层转发流程。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
l2-miss_next drop | ethernet-input | ip4-input | <slot id> |
[input-node <node name> | output-node <node name>

acl-miss-next 配置s使能acl时使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
acl-miss-next deny | perimit | <slot id> |
[ip4-node <node name>] | [ip6-node <node name>]

2、mask匹配那些bit,或过滤那些bit。 设置该表是用数据包中的哪些字段用于过滤;mask是以16个字节为一组的数据。 mask支持支持配置16进制字符串方式,或者指定报文内容。下面分别说明。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#设置匹配报文ip version及protocol字段。
mask hex 0000000000000000000000000000FF0000000000000000FF
                                     |                 |
 ip                                 version       protocol

mask l2 根据vlan帧格式及QinQ帧格式,来确定mask长度

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mask l2 src | dst  | proto   | tag1 | tag2 | ignore-tag1 | 
 #    源mac |目的mac|eth type | vlan        | 忽略vlan
ignore-tag2 | cos1 | cos2 | dot1q   | dot1ad |
#           |Priority数值  | 一层vlan |二层vlan |

ignore-tag1(18字节),ignore-tag2(22字节) 用来确定二层头长度。不关心信息。

mask l3 支持匹配内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#ip4报文支持匹配内容
mask l3 ip4 version [hdr_length] [src/<prefix_len>] [dst/<prefix_len]
[src|src_address] [dst|dst_address] [tos] [length] [fragment_id] [ttl]
 [proto|protocol] [checksum]
#ip6报文支持匹配内容
mask l3 ip6 [version] [traffic-class] [flow-label]
[src|src_address] [dst|dst_address] [payload_length]
[hop_limit] [proto|protocol]

mask l4支持匹配内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mask l4 [ [tcp |udp] [src_port | dst_port]  ] | src_port  | dst_port ]

这里需要注意,不支持单独匹配l4,必须需要指定l3内容,个人认为是因为无法确定mask长度,ip4和ip6报文头长度不一致。

3、其他参数说明: buckets:buckets的最大数目,默认是2,需要用户自己根据支持 匹配规则的大小,来设置有效的桶大小。 [memory-size[M][G]]:classify table对应结构中mheap的大小。 默认是2M的大小,需要用户跟组匹配规则的大小,来设置有效的mheap大小。

这里的hash处理等同于bihash,因为classify entry的不固定性,所以没办法直接shiyongbihash。

skip:mask中跳过的全0数据的组数(16字节为一组) match:mask中有效组数(16字节为一组) current-data-flag:标识数据包过滤的头信息获取是从vlib_buff的curretn_data处加current-data-offset 获取. current-data-offset:与current-data-flag配合使用。如下代码所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#判断current_data_flag 是否设置,获取classify匹配头起始位置。
if (t[0]->current_data_flag == CLASSIFY_FLAG_USE_CURR_DATA)
{ #标识数据包过滤的头信息获取是从vlib_buff的curretn_data处加current-data-offset 获取.
    h[0] = (void *) vlib_buffer_get_current (b[0]) + t[0]->current_data_offset;
}
else
{   #从原始报文data处获取classify 过滤头信息。
    h[0] = b[0]->data;
}
#计算hash
hash[0] = vnet_classify_hash_packet_inline (t[0], (u8 *) h[0]);
#查询报文是否命中classify 表内容。
e[0] = vnet_classify_find_entry_inline (t[0], (u8 *) h[0], hash[0], now);

table:表索引;新增就不填,只有更新表信息才指定索引,更新仅支持多table链时,设置next table index。

l2 classify acl测试

1、vpp基本配置

vpp2 接口GigabitEthernetb/0/0 接口与内核接口ens33直连。在vpp2上创建一个二层域bridge-domain 13及loopback接口,loop0接口及GigabitEthernetb/0/0加入二层域。从而实现一个二层转发流程。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#vpp2配置
#创建一个二层域BD 13
create bridge-domain 13 learn 1 forward 1 uu-flood 1 flood 1 arp-term 1
#
set interface state GigabitEthernetb/0/0 up
set interface l2 bridge GigabitEthernetb/0/0 13
#创建loopback接口
loopback create mac 11:22:33:44:55:66
#loopback接口加入二层域名,并设置为bvi接口
set interface l2 bridge loop0 13 bvi
#配置loopback接口ip地址
set interface ip table loop0 0
set interface state loop0 up
set interface ip addr loop0 192.168.3.1/24
#vpp2 接口配置查询情况:
learning_vpp2# show interface addr                 
GigabitEthernetb/0/0 (up):
  L2 bridge bd-id 13 idx 1 shg 0  
local0 (dn):
loop0 (up):
  L2 bridge bd-id 13 idx 1 shg 0 bvi
  L3 192.168.3.1/24
#内核ens33接口与GigabitEthernetb/0/0直连
[root@learning_vpp2 vpp]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.2  netmask 255.255.255.0  broadcast 
2、配置classify table 、session
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 #创建clssify 表匹配IP version及IP Protocol。
classify table acl-miss-next deny mask hex 0000000000000000000000000000FF0000000000000000FF
#匹配规则:ipv4及tcp报文
classify session acl-hit-next permit table-index 0 match hex 000000000000000000000000000045000000000000000006
#匹配规则:ipv4及icmp报文
classify session acl-hit-next permit table-index 0 match hex 000000000000000000000000000045000000000000000001
##匹配规则:ipv4及icmp报文
classify session acl-hit-next permit table-index 0 match hex 000000000000000000000000000045000000000000000011

#查询配置表:
learning_vpp2# show classify tables index 0 verbose
  TableIdx  Sessions   NextTbl  NextNode
         0         3        -1         0
  Heap: base 0x7fffc920d000, size 2m, locked, unmap-on-destroy, name 'classify'
          page stats: page-size 4K, total 512, mapped 2, not-mapped 0, unknown 510
            numa 0: 2 pages, 8k bytes
          total: 1.99M, used: 1.92K, free: 1.99M, trimmable: 1.99M
  nbuckets 2, skip 0 match 2 flag 0 offset 0
  mask 0000000000000000000000000000ff0000000000000000ff0000000000000000
  linear-search buckets 0

[0]: heap offset 1856, elts 2, normal
    0: [1856]: next_index -1 advance 0 opaque -1 action 0 metadata 0
        k: 0000000000000000000000000000450000000000000000110000000000000000
        hits 0, last_heard 0.00

[1]: heap offset 1280, elts 2, normal
    0: [1280]: next_index -1 advance 0 opaque -1 action 0 metadata 0
        k: 0000000000000000000000000000450000000000000000060000000000000000
        hits 0, last_heard 0.00

    1: [1344]: next_index -1 advance 0 opaque -1 action 0 metadata 0
        k: 0000000000000000000000000000450000000000000000010000000000000000
        hits 8, last_heard 2062.06

    3 active elements
    1 free lists
    0 linear-search buckets
3、接口绑定clssify table
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set interface input acl intfc  GigabitEthernetb/0/0 l2-table 0
set interface output acl intfc  GigabitEthernetb/0/0 l2-table 0

从内核发起ping报文,trace流程如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
00:34:10:049788: dpdk-input
  GigabitEthernetb/0/0 rx queue 0
  buffer 0x9bad1: current data 0, length 98, buffer-pool 0, ref-count 1, totlen-nifb 0, trace handle 0x1000000
                  ext-hdr-valid 
                  l4-cksum-computed l4-cksum-correct 
  PKT MBUF: port 0, nb_segs 1, pkt_len 98
    buf_len 2176, data_len 98, ol_flags 0x80, data_off 128, phys_addr 0x53aeb4c0
    packet_type 0x91 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0
    rss 0x0 fdir.hi 0x0 fdir.lo 0x0
    Packet Offload Flags
      PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid
    Packet Types
      RTE_PTYPE_L2_ETHER (0x0001) Ethernet packet
      RTE_PTYPE_L3_IPV4_EXT_UNKNOWN (0x0090) IPv4 packet with or without extension headers
  IP4: 00:0c:29:17:0a:58 -> 11:22:33:44:55:66
  ICMP: 192.168.3.2 -> 192.168.3.1
    tos 0x00, ttl 64, length 84, checksum 0x8734 dscp CS0 ecn NON_ECN
    fragment id 0x2c21, flags DONT_FRAGMENT
  ICMP echo_request checksum 0x8dcb id 2020
00:34:10:049819: ethernet-input
  frame: flags 0x1, hw-if-index 1, sw-if-index 1
  IP4: 00:0c:29:17:0a:58 -> 11:22:33:44:55:66
00:34:10:049838: l2-input
  l2-input: sw_if_index 1 dst 11:22:33:44:55:66 src 00:0c:29:17:0a:58 [l2-input-acl l2-learn l2-flood ]
00:34:10:049844: l2-input-acl
  INACL: sw_if_index 1, next_index 9, table 0, offset 1344
00:34:10:067214: l2-learn
  l2-learn: sw_if_index 1 dst 11:22:33:44:55:66 src 00:0c:29:17:0a:58 bd_index 1
00:34:10:067221: l2-flood
  l2-flood: sw_if_index 1 dst 11:22:33:44:55:66 src 00:0c:29:17:0a:58 bd_index 1
00:34:10:067228: ip4-input
  ICMP: 192.168.3.2 -> 192.168.3.1
    tos 0x00, ttl 64, length 84, checksum 0x8734 dscp CS0 ecn NON_ECN
    fragment id 0x2c21, flags DONT_FRAGMENT
  ICMP echo_request checksum 0x8dcb id 2020
00:34:10:067236: ip4-lookup
  fib 0 dpo-idx 7 flow hash: 0x00000000
  ICMP: 192.168.3.2 -> 192.168.3.1
    tos 0x00, ttl 64, length 84, checksum 0x8734 dscp CS0 ecn NON_ECN
    fragment id 0x2c21, flags DONT_FRAGMENT
  ICMP echo_request checksum 0x8dcb id 2020
00:34:10:067248: ip4-local
    ICMP: 192.168.3.2 -> 192.168.3.1
      tos 0x00, ttl 64, length 84, checksum 0x8734 dscp CS0 ecn NON_ECN
      fragment id 0x2c21, flags DONT_FRAGMENT
    ICMP echo_request checksum 0x8dcb id 2020
00:34:10:067457: ip4-icmp-input
  ICMP: 192.168.3.2 -> 192.168.3.1
    tos 0x00, ttl 64, length 84, checksum 0x8734 dscp CS0 ecn NON_ECN
    fragment id 0x2c21, flags DONT_FRAGMENT
  ICMP echo_request checksum 0x8dcb id 2020
00:34:10:067462: ip4-icmp-echo-request
  ICMP: 192.168.3.2 -> 192.168.3.1
    tos 0x00, ttl 64, length 84, checksum 0x8734 dscp CS0 ecn NON_ECN
    fragment id 0x2c21, flags DONT_FRAGMENT
  ICMP echo_request checksum 0x8dcb id 2020
00:34:10:067468: ip4-load-balance
  fib 0 dpo-idx 2 flow hash: 0x00000000
  ICMP: 192.168.3.1 -> 192.168.3.2
    tos 0x00, ttl 64, length 84, checksum 0x0266 dscp CS0 ecn NON_ECN
    fragment id 0xb0ef, flags DONT_FRAGMENT
  ICMP echo_reply checksum 0x95cb id 2020
00:34:10:067471: ip4-rewrite
  tx_sw_if_index 4 dpo-idx 2 : ipv4 via 192.168.3.2 loop0: mtu:9000 next:3 flags:[] 000c29170a581122334455660800 flow hash: 0x00000000
  00000000: 000c29170a58112233445566080045000054b0ef400040010266c0a80301c0a8
  00000020: 0302000095cb07e400017124c760000000005ef70c00000000001011
00:34:10:067474: loop0-output
  loop0 
  IP4: 11:22:33:44:55:66 -> 00:0c:29:17:0a:58
  ICMP: 192.168.3.1 -> 192.168.3.2
    tos 0x00, ttl 64, length 84, checksum 0x0266 dscp CS0 ecn NON_ECN
    fragment id 0xb0ef, flags DONT_FRAGMENT
  ICMP echo_reply checksum 0x95cb id 2020
00:34:10:067488: l2-input
  l2-input: sw_if_index 4 dst 00:0c:29:17:0a:58 src 11:22:33:44:55:66 [l2-fwd l2-flood arp-term-l2bd l2-flood ]
00:34:10:067490: l2-fwd
  l2-fwd:   sw_if_index 4 dst 00:0c:29:17:0a:58 src 11:22:33:44:55:66 bd_index 1 result [0x1160000000001, 1] none
00:34:10:067494: l2-output
  l2-output: sw_if_index 1 dst 00:0c:29:17:0a:58 src 11:22:33:44:55:66 data 08 00 45 00 00 54 b0 ef 40 00 40 01
00:34:10:067498: l2-output-acl
  OUTACL: sw_if_index 1, next_index 1, table 0, offset 1344
00:34:10:067505: GigabitEthernetb/0/0-output
  GigabitEthernetb/0/0 
  IP4: 11:22:33:44:55:66 -> 00:0c:29:17:0a:58
  ICMP: 192.168.3.1 -> 192.168.3.2
    tos 0x00, ttl 64, length 84, checksum 0x0266 dscp CS0 ecn NON_ECN
    fragment id 0xb0ef, flags DONT_FRAGMENT
  ICMP echo_reply checksum 0x95cb id 2020
00:34:10:067506: GigabitEthernetb/0/0-tx
  GigabitEthernetb/0/0 tx queue 1
  buffer 0x9bad1: current data 0, length 98, buffer-pool 0, ref-count 1, totlen-nifb 0, trace handle 0x1000000
                  ext-hdr-valid 
                  l4-cksum-computed l4-cksum-correct local l2-hdr-offset 0 l3-hdr-offset 14 
  PKT MBUF: port 0, nb_segs 1, pkt_len 98
    buf_len 2176, data_len 98, ol_flags 0x80, data_off 128, phys_addr 0x53aeb4c0
    packet_type 0x91 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0
    rss 0x0 fdir.hi 0x0 fdir.lo 0x0
    Packet Offload Flags
      PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid
    Packet Types
      RTE_PTYPE_L2_ETHER (0x0001) Ethernet packet
      RTE_PTYPE_L3_IPV4_EXT_UNKNOWN (0x0090) IPv4 packet with or without extension headers
  IP4: 11:22:33:44:55:66 -> 00:0c:29:17:0a:58
  ICMP: 192.168.3.1 -> 192.168.3.2
    tos 0x00, ttl 64, length 84, checksum 0x0266 dscp CS0 ecn NON_ECN
    fragment id 0xb0ef, flags DONT_FRAGMENT
  ICMP echo_reply checksum 0x95cb id 2020
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DPDK VPP源码分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
learning vpp:span
镜像是指将经过指定端口(源端口或者镜像端口)的报文复制一份到另一个指定端口(目的端口或者观察端口)。
dpdk-vpp源码解读
2023/01/04
3.2K0
learning vpp:span
Learning VPP: VXLAN tunnel
VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,是对传统VLAN协议的一种扩展。VXLAN的特点是将L2的以太帧封装到UDP报文(即L2 over L4)中,并在L3网络中传输.
dpdk-vpp源码解读
2023/03/07
2.2K0
Learning VPP: VXLAN tunnel
learning:vpp pipe interface
本文介绍pipe接口使用,此接口有点类似于内核veth-pair。总是成对出现的。此功能可以用于两个vrf之间进行通信。
dpdk-vpp源码解读
2023/01/04
9530
learning:vpp pipe interface
learning:vpp实现dot1q终结功能配置
话接上篇我们基于腾讯云主机搭建了DPDK+VPP的学习平台,接下来学习vlan dot1q终结功能的配置及流程转发流程。下面首先来了解一下BD域的一些概念。
dpdk-vpp源码解读
2024/03/12
7900
learning:vpp实现dot1q终结功能配置
learning:vpp dns plugins
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。 DNS 不仅方便了人们访问不同的互联网服务,更为很多应用提供了,动态服务发现和全局负载均衡(Global Server Load Balance,GSLB)的机制。这样,DNS 就可以选择离用户最近的 IP 来提供服务。即使后端服务的 IP 地址发生变化,用户依然可以用相同域名来访问。 VPP dns plugins一个缓存DNS域名解析器,适合优化域名解析性能,并覆盖LD_PRELOAD库中的gethostbyname()。目前支持以下特性: 1、缓存上游ipv4 DNS服务器的A、AAAA记录; 2、响应ipv4和ipv6的名称解析请求; 3、支持最大64K的cache并发项;--目前缺省是1000条目。 4、支持CNAME间接访问; 5、静态缓存条目创建,适合于重定向特定的名称; 6、轮询上游域名查找; 7、性能/规模适合SOHO设备或其他轻型应用程序。 本文主要介绍vpp dns 插件模块,DNS相关基础知识详细介绍请参阅参考资料中文章。下面就重点介绍dns测试环境搭建与配置。
dpdk-vpp源码解读
2023/01/04
1.2K1
learning:vpp dns plugins
learning:vet/classify(1)
前面公众号文章learning:vet/policer介绍了policer的基本结构及基于接口in方向的policer限速的配置及使用。文章结尾讲到classify-policer 基于流的policer限速功能实现,本文就介绍一下classify的基本原理及相关命令行。
dpdk-vpp源码解读
2023/03/07
9130
learning:vet/classify(1)
learning:Wireguard plugin
本文主要介绍wireguard的vpp的基本配置与转发流程,其他相关wireguard原理及理论实现可以阅读参考文章。
dpdk-vpp源码解读
2023/01/04
2.4K0
learning:Wireguard plugin
learning vpp:dhcp relay功能(2)
为了复现客户环境,我在 VM 虚拟机中安装了 Windows Server 2012 镜像,并部署了 DHCP 服务器。将DHCP 服务器与VPP其中一个接口设置在同一个网段互联,这样可以使用dhcp relay功能了。关于如何在 Windows Server 2012 上部署 DHCP 服务器,网上有很多教程,也可以参考这些教程进行部署。如果需要,也可以使用 Windows Server 2016 进行搭建,步骤类似。
dpdk-vpp源码解读
2024/11/23
3062
learning vpp:dhcp relay功能(2)
learning:vpp bond
前几天有人在微信群里询问bond相关的一些问题,在上家公司使用过bond功能,但当时是基于vpp 16.9版本。最近看了一下21.10版本的发现差异很大,bond node节点跳转方式完全不同了。本文基于21.10搭建环境,通过cli来配置和验证bond功能。
dpdk-vpp源码解读
2023/01/04
2K1
learning:vpp bond
learning:NAT-ED两种配置模式
本文主要描述VPP nat插件在NAT44-ed的两种配置场景路由前Nat和路由后nat的转发流程区别及配置差异。两种模式基本组网配置如下:
dpdk-vpp源码解读
2023/01/04
2.2K0
learning:NAT-ED两种配置模式
learning vnet:L2 vSwitch mac地址老化及mac地址表最大规格(2)
在前面文章《learning vnet:L2 vSwitch》介绍过MAC 学习的过程,本文来学习一下mac地址老化机制及mac地址表学习最大规格。交换机的MAC地址老化机制是为了维护MAC地址表的有效性和防止MAC资源表浪费而设计的。在交换机的正常工作中,会不断监控各个网口传输的数据帧并学习源MAC地址及其对应的网口信息。当交换机在某网口接收到一个数据帧时,会将其源MAC地址添加到MAC地址表中,或者更新已存在的MAC地址条目。
dpdk-vpp源码解读
2024/04/28
3260
learning vnet:L2 vSwitch mac地址老化及mac地址表最大规格(2)
learning:vet/policer
vpp自带的qos policer模块提供了限速及remark dscp功能。最开始policer需要和classify模块一起使用才能生效。在最近master分支合入了基于接口入方向配置policer功能,并且支持policer资源与绑定worker线程,利用handoff功能而避免多核模式下policer资源加锁(handoff 实现和加锁方式对性能影响没有详细数据)。
dpdk-vpp源码解读
2023/03/07
1.3K0
learning:vet/policer
利用vpp和内核协议栈通信机制实现虚拟机上网
本文参考博客(https://blog.csdn.net/illina/article/details/81669944)来学习一下利用vpp实现虚拟机上网功能。主要是为了学习虚拟网卡功能在vpn场景中应用比较广泛。
dpdk-vpp源码解读
2023/03/07
2.8K0
利用vpp和内核协议栈通信机制实现虚拟机上网
learning vnet:L2 vSwitch
在前面文章《learning:vpp实现dot1q终结功能配置》介绍了L2 vSwitch一些基本概念BD(Bridge Domain)、BDI (Bridge Domain interface)等等概念,本文主要学习二层的转发流程。前面文章中介绍了在腾讯云主机中搭建DPDK&VPP的学习环境,下面就在腾讯云主机搭建L2 vswitch环境。具体配置如下图所示:
dpdk-vpp源码解读
2024/04/28
3180
learning vnet:L2 vSwitch
learning:l3xc plugins
本文介绍一下l3xc插件,功能是将三层接口的所有入接口流量交叉连接输出到指定的FIB路径。此功能和在相同vrf中设置默认路由的效果差不多的。但是比默认路由的转发方式更加省内存和在cpu处理方面高效。
dpdk-vpp源码解读
2023/09/06
4170
learning:l3xc plugins
learning vpp: svs基于源地址的路由选择的插件
单纯的SVS功能有下面2个好处:增强路由灵活性:SVS 允许路由器根据数据包的源 IP 地址来选择不同的 VRF(Virtual Routing and Forwarding)实例进行路由查找。这意味着网络可以更加灵活地处理不同的流量类型,特别是在多租户环境中,每个租户可能有自己的 VRF 实例。提高安全性:通过 SVS,网络管理员可以根据数据包的源地址来控制哪些流量可以访问特定的网络资源。这种基于源地址的路由选择有助于防止未经授权的访问,并增加了网络的整体安全性。
dpdk-vpp源码解读
2024/11/23
2920
learning vpp: svs基于源地址的路由选择的插件
learning:mactime plugins
在思科的开源软件VPP(Vector Packet Processing)系统中,Mactime插件的主要功能是监视并记录网络接口上的MAC地址活动。这一特性支持基于MAC地址的过滤功能,常用于网络管理,以控制哪些设备可以访问网络资源。以下是该功能的一些常见应用场景及其具体应用方式:
dpdk-vpp源码解读
2024/11/23
1690
learning:mactime plugins
learning vnet:L2 CrossConnect (4)
在文章《learning:l3xc plugins》中,我们介绍了三层交叉连接功能,将三层接口的所有入接口流量交叉连接输出到指定的FIB路径,从而跳过了路由查找的功能,实现高性能转发加速;L2 Cross Connect 是二层交叉连接功能,用于实现第二层(数据链路层,通常指以太网层)的直接连接,允许两个接口之间的二层数据包(如以太网帧)直接转发,绕过第三层(网络层)的处理,类似于传统的以太网交换机中的端口 trunking 或者链路聚合,但其目的是为了在VPP内部或VPP与其他设备间建立一个简单的二层桥接。
dpdk-vpp源码解读
2024/05/14
3120
learning vnet:L2 CrossConnect (4)
VPP网络监控利器:sFlow插件详解(二)
在之前的文章《Learning VPP: 简单网络流量监控插件sFlow Plugins (1)》中,我们详细介绍了sFlow插件的基本实现和相关配置。令人振奋的是,此插件已经被正式合并到VPP的25.2版本中。现在,我们将基于这一进展,搭建相应的环境来深入学习如何使用sFlow进行网络流量监控。
dpdk-vpp源码解读
2025/03/18
4250
VPP网络监控利器:sFlow插件详解(二)
learning:vnet/Packet Generator
本文内容来源于vpp wiki文档中关于如何使用packet Generator及pacpket tracer的介绍。
dpdk-vpp源码解读
2023/03/07
1.2K0
learning:vnet/Packet Generator
相关推荐
learning vpp:span
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档