前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >learning vpp:span

learning vpp:span

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

镜像介绍

介绍镜像功能的定义和目的。

1、定义

镜像是指将经过指定端口(源端口或者镜像端口)的报文复制一份到另一个指定端口(目的端口或者观察端口)。

2、目的

在网络运营与维护的过程中,为了便于业务监测和故障定位,网络管理员时常要获取设备上的业务报文进行分析。 镜像可以在不影响设备对报文进行正常处理的情况下,将镜像端口的报文复制一份到观察端口。网络管理员通过网络监控设备就可以分析从观察端口复制过来的报文,判断网络中运行的业务是否正常。

3、镜像端口及观察端口

镜像端口:是指被监控的端口,镜像端口收发的报文将被复制一份到观察端口。 观察端口:是指连接监控设备的端口,用于将镜像端口复制过来的报文发送给监控设备。

4、镜像方向:

镜像方向是指将镜像端口指定方向的报文复制到观察端口,包括: 入方向:将镜像端口接收的报文复制到观察端口上。 出方向:将镜像端口发送的报文复制到观察端口上。 双向:将镜像端口接收和发送的报文都复制到观察端口上。

5、镜像分类:

端口镜像分为两种: 本地端口镜像:是指将设备的一个或多个源端口的报文复制到本设备的一个目的端口,用于报文的监控和分析。其中,源端口和目的端口必须在同一台设备上。 远程端口镜像:除了可以实现本地端口镜像的功能外,它还突破了源端口和目的端口必须在同一台设备上的限制,使源端口和目的端口间可以跨越多个网络设备。目前,远程端口镜像功能可以穿越二层网络,但无法穿越三层网络。

按照用户使用来说,还有流镜像、vlan镜像、mac镜像等等,这里就不说了,具体可以参考资料中华为文档介绍。

镜像命令行

1、接口配置镜像
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set interface span <if-name1> [l2] {disable | destination <if-name2> [both|rx|tx]}

if-name1:镜像端口 if-name2:镜像观察端口 both|rx|tx] :设置镜像方向 disable:去使能镜像功能。 L2 :二层流量设置镜像功能 一个镜像端口可以设置多个镜像观察口。

2、查询镜像配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show interface span
#查询显示示例如下所示:
learning_vpp1# show interface span  
Source                           Destination                       Device       L2
GigabitEthernet13/0/0            GigabitEthernetb/0/0             (    rx) (  none)

镜像测试

1、L3配置组网
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
     learning-vpp1            |        learning vpp2
GigabitEthernet13/0/0 (up):   |   GigabitEthernet13/0/0 (up):
     L3 192.168.1.2/24        |     L3 192.168.1.1/24
GigabitEthernetb/0/0          |
     |直连内核接口ens161       |

在learning-vpp1上配置镜像功能并查询配置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
learning_vpp1# set interface span GigabitEthernet13/0/0 destination GigabitEthernetb/0/0 both
#查询span配置
learning_vpp1# show interface span
Source                           Destination                       Device       L2
GigabitEthernet13/0/0            GigabitEthernetb/0/0             (  both) (  none)

在vpp2上发起ping功能指定每4s,发送一个报文。在vpp1上trace流程,或在内核ens161接口上抓包。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#1、在vpp2上发起ping报文
ping 192.168.1.2 repeat 1000 interval 4
#2、在内核ens161上能抓取2个ping报文。可以抓取到ping的请求和回应报文
[root@learning_vpp1 vpp]# tcpdump -nnvv -i ens161 icmp
tcpdump: listening on ens161, link-type EN10MB (Ethernet), capture size 262144 bytes
20:30:09.118135 IP (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto ICMP (1), length 96)
    192.168.1.1 > 192.168.1.2: ICMP echo request, id 21397, seq 16, length 76
20:30:09.118154 IP (tos 0x0, ttl 64, id 36909, offset 0, flags [none], proto ICMP (1), length 96)
    192.168.1.2 > 192.168.1.1: ICMP echo reply, id 21397, seq 16, length 76
#3、vpp1上trace查看流程。
00:08:36:159656: dpdk-input
  GigabitEthernet13/0/0 rx queue 0
  buffer 0x9c3f5: current data 0, length 110, buffer-pool 0, ref-count 1, totlen-nifb 0, trace handle 0x2000000
                  ext-hdr-valid 
                  l4-cksum-computed l4-cksum-correct 
  PKT MBUF: port 1, nb_segs 1, pkt_len 110
    buf_len 2176, data_len 110, ol_flags 0x80, data_off 128, phys_addr 0x79f0fdc0
    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:44 -> 00:0c:29:63:94:30
  ICMP: 192.168.1.1 -> 192.168.1.2
    tos 0x00, ttl 254, length 96, checksum 0x3949 dscp CS0 ecn NON_ECN
    fragment id 0x0000
  ICMP echo_request checksum 0x558 id 21397
00:08:36:159712: span-input
  SPAN: mirrored GigabitEthernet13/0/0 -> GigabitEthernetb/0/0
00:08:36:159750: ethernet-input
  IP4: 00:0c:29:17:0a:44 -> 00:0c:29:63:94:30
00:08:36:159774: ip4-input
  ICMP: 192.168.1.1 -> 192.168.1.2
    tos 0x00, ttl 254, length 96, checksum 0x3949 dscp CS0 ecn NON_ECN
    fragment id 0x0000
  ICMP echo_request checksum 0x558 id 21397
00:08:36:159928: ip4-lookup
  fib 0 dpo-idx 7 flow hash: 0x00000000
  ICMP: 192.168.1.1 -> 192.168.1.2
    tos 0x00, ttl 254, length 96, checksum 0x3949 dscp CS0 ecn NON_ECN
    fragment id 0x0000
  ICMP echo_request checksum 0x558 id 21397
00:08:36:159953: ip4-local
    ICMP: 192.168.1.1 -> 192.168.1.2
      tos 0x00, ttl 254, length 96, checksum 0x3949 dscp CS0 ecn NON_ECN
      fragment id 0x0000
    ICMP echo_request checksum 0x558 id 21397
00:08:36:159962: ip4-icmp-input
  ICMP: 192.168.1.1 -> 192.168.1.2
    tos 0x00, ttl 254, length 96, checksum 0x3949 dscp CS0 ecn NON_ECN
    fragment id 0x0000
  ICMP echo_request checksum 0x558 id 21397
00:08:36:159977: ip4-icmp-echo-request
  ICMP: 192.168.1.1 -> 192.168.1.2
    tos 0x00, ttl 254, length 96, checksum 0x3949 dscp CS0 ecn NON_ECN
    fragment id 0x0000
  ICMP echo_request checksum 0x558 id 21397
00:08:36:159990: ip4-load-balance
  fib 0 dpo-idx 2 flow hash: 0x00000000
  ICMP: 192.168.1.2 -> 192.168.1.1
    tos 0x00, ttl 64, length 96, checksum 0x55d8 dscp CS0 ecn NON_ECN
    fragment id 0xa171
  ICMP echo_reply checksum 0xd58 id 21397
00:08:36:159995: ip4-rewrite
  tx_sw_if_index 2 dpo-idx 2 : ipv4 via 192.168.1.1 GigabitEthernet13/0/0: mtu:9000 next:3 flags:[] 000c29170a44000c296394300800 flow hash: 0
x00000000
  00000000: 000c29170a44000c29639430080045000060a1710000400155d8c0a80102c0a8
  00000020: 010100000d5853950030356014edeb0d000000010203040506070809
00:08:36:160033: GigabitEthernet13/0/0-output
  GigabitEthernet13/0/0 
  IP4: 00:0c:29:63:94:30 -> 00:0c:29:17:0a:44
  ICMP: 192.168.1.2 -> 192.168.1.1
    tos 0x00, ttl 64, length 96, checksum 0x55d8 dscp CS0 ecn NON_ECN
    fragment id 0xa171
  ICMP echo_reply checksum 0xd58 id 21397
00:08:36:160044: span-output
  SPAN: mirrored GigabitEthernet13/0/0 -> GigabitEthernetb/0/0
00:08:36:160068: GigabitEthernet13/0/0-tx
  GigabitEthernet13/0/0 tx queue 2
  buffer 0x9c3f5: current data 0, length 110, buffer-pool 0, ref-count 1, totlen-nifb 0, trace handle 0x2000000
                  ext-hdr-valid 
                  l4-cksum-computed l4-cksum-correct local l2-hdr-offset 0 l3-hdr-offset 14 
  PKT MBUF: port 1, nb_segs 1, pkt_len 110
    buf_len 2176, data_len 110, ol_flags 0x80, data_off 128, phys_addr 0x79f0fdc0
    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:63:94:30 -> 00:0c:29:17:0a:44
  ICMP: 192.168.1.2 -> 192.168.1.1
    tos 0x00, ttl 64, length 96, checksum 0x55d8 dscp CS0 ecn NON_ECN
    fragment id 0xa171
  ICMP echo_reply checksum 0xd58 id 21397
2、L2配置组网
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 learning-vpp1                 |        learning vpp2
GigabitEthernet13/0/0 (up):    |  GigabitEthernet13/0/0 (up):
L2 bridge bd-id 13 idx 1 shg 0 |  L3 192.168.3.2/24
loop0                          |---|
L2 bridge bd-id 13 idx 1 shg 0 bvi |
     L3 192.168.3.1/24             |     
GigabitEthernetb/0/0               |
     |                             |
直连内核接口ens161                   |

设置l2镜像配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
learning_vpp1# set interface span GigabitEthernet13/0/0 l2 destination GigabitEthernetb/0/0 both
learning_vpp1# show interface span
Source                           Destination                       Device       L2
GigabitEthernet13/0/0            GigabitEthernetb/0/0             (  none) (  both)

同样在vpp2上发起ping报文,在vpp1上进行trace抓包,具体如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
00:14:33:525680: dpdk-input
  GigabitEthernet13/0/0 rx queue 0
  buffer 0x9b861: current data 0, length 110, buffer-pool 0, ref-count 1, totlen-nifb 0, trace handle 0x2000000
                  ext-hdr-valid 
                  l4-cksum-computed l4-cksum-correct 
  PKT MBUF: port 1, nb_segs 1, pkt_len 110
    buf_len 2176, data_len 110, ol_flags 0x80, data_off 128, phys_addr 0x7a0e18c0
    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:44 -> 1a:2b:3c:4d:5e:8f
  ICMP: 192.168.3.2 -> 192.168.3.1
    tos 0x00, ttl 254, length 96, checksum 0x3549 dscp CS0 ecn NON_ECN
    fragment id 0x0000
  ICMP echo_request checksum 0xad83 id 51131
00:14:33:525976: ethernet-input
  frame: flags 0x1, hw-if-index 2, sw-if-index 2
  IP4: 00:0c:29:17:0a:44 -> 1a:2b:3c:4d:5e:8f
00:14:33:526004: l2-input
  l2-input: sw_if_index 2 dst 1a:2b:3c:4d:5e:8f src 00:0c:29:17:0a:44 [span-l2-input l2-learn l2-fwd l2-flood l2-flood ]
00:14:33:526012: span-l2-input
  SPAN: mirrored GigabitEthernet13/0/0 -> GigabitEthernetb/0/0
00:14:33:526034: l2-learn
  l2-learn: sw_if_index 2 dst 1a:2b:3c:4d:5e:8f src 00:0c:29:17:0a:44 bd_index 1
00:14:33:526049: l2-fwd
  l2-fwd:   sw_if_index 2 dst 1a:2b:3c:4d:5e:8f src 00:0c:29:17:0a:44 bd_index 1 result [0x700000004, 4] static age-not bvi 
00:14:33:526100: ip4-input
  ICMP: 192.168.3.2 -> 192.168.3.1
    tos 0x00, ttl 254, length 96, checksum 0x3549 dscp CS0 ecn NON_ECN
    fragment id 0x0000
  ICMP echo_request checksum 0xad83 id 51131
00:14:33:526207: ip4-lookup
  fib 0 dpo-idx 7 flow hash: 0x00000000
  ICMP: 192.168.3.2 -> 192.168.3.1
    tos 0x00, ttl 254, length 96, checksum 0x3549 dscp CS0 ecn NON_ECN
    fragment id 0x0000
  ICMP echo_request checksum 0xad83 id 51131
00:14:33:526235: ip4-local
    ICMP: 192.168.3.2 -> 192.168.3.1
      tos 0x00, ttl 254, length 96, checksum 0x3549 dscp CS0 ecn NON_ECN
      fragment id 0x0000
    ICMP echo_request checksum 0xad83 id 51131
00:14:33:526244: ip4-icmp-input
  ICMP: 192.168.3.2 -> 192.168.3.1
    tos 0x00, ttl 254, length 96, checksum 0x3549 dscp CS0 ecn NON_ECN
    fragment id 0x0000
  ICMP echo_request checksum 0xad83 id 51131
00:14:33:526251: ip4-icmp-echo-request
  ICMP: 192.168.3.2 -> 192.168.3.1
    tos 0x00, ttl 254, length 96, checksum 0x3549 dscp CS0 ecn NON_ECN
    fragment id 0x0000
  ICMP echo_request checksum 0xad83 id 51131
00:14:33:526261: 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 96, checksum 0xb598 dscp CS0 ecn NON_ECN
    fragment id 0x3db1
  ICMP echo_reply checksum 0xb583 id 51131
00:14:33:526265: ip4-rewrite
  tx_sw_if_index 4 dpo-idx 2 : ipv4 via 192.168.3.2 loop0: mtu:9000 next:3 flags:[] 000c29170a441a2b3c4d5e8f0800 flow hash: 0x00000000
  00000000: 000c29170a441a2b3c4d5e8f0800450000603db100004001b598c0a80301c0a8
  00000020: 03020000b583c7bb002d626cb989fd15000000010203040506070809
00:14:33:526298: loop0-output
  loop0 
  IP4: 1a:2b:3c:4d:5e:8f -> 00:0c:29:17:0a:44
  ICMP: 192.168.3.1 -> 192.168.3.2
    tos 0x00, ttl 64, length 96, checksum 0xb598 dscp CS0 ecn NON_ECN
    fragment id 0x3db1
  ICMP echo_reply checksum 0xb583 id 51131
00:14:33:526324: l2-input
  l2-input: sw_if_index 4 dst 00:0c:29:17:0a:44 src 1a:2b:3c:4d:5e:8f [l2-fwd l2-flood l2-flood ]
00:14:33:526330: l2-fwd
  l2-fwd:   sw_if_index 4 dst 00:0c:29:17:0a:44 src 1a:2b:3c:4d:5e:8f bd_index 1 result [0x1030000000002, 2] none
00:14:33:526335: l2-output
  l2-output: sw_if_index 2 dst 00:0c:29:17:0a:44 src 1a:2b:3c:4d:5e:8f data 08 00 45 00 00 60 3d b1 00 00 40 01
00:14:33:526340: span-l2-output
  SPAN: mirrored GigabitEthernet13/0/0 -> GigabitEthernetb/0/0
00:14:33:526359: GigabitEthernet13/0/0-output
  GigabitEthernet13/0/0 
  IP4: 1a:2b:3c:4d:5e:8f -> 00:0c:29:17:0a:44
  ICMP: 192.168.3.1 -> 192.168.3.2
    tos 0x00, ttl 64, length 96, checksum 0xb598 dscp CS0 ecn NON_ECN
    fragment id 0x3db1
  ICMP echo_reply checksum 0xb583 id 51131
00:14:33:526392: GigabitEthernet13/0/0-tx
  GigabitEthernet13/0/0 tx queue 2
  buffer 0x9b861: current data 0, length 110, buffer-pool 0, ref-count 1, totlen-nifb 0, trace handle 0x2000000
                  ext-hdr-valid 
                  l4-cksum-computed l4-cksum-correct local l2-hdr-offset 0 l3-hdr-offset 14 
  PKT MBUF: port 1, nb_segs 1, pkt_len 110
    buf_len 2176, data_len 110, ol_flags 0x80, data_off 128, phys_addr 0x7a0e18c0
    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: 1a:2b:3c:4d:5e:8f -> 00:0c:29:17:0a:44
  ICMP: 192.168.3.1 -> 192.168.3.2
    tos 0x00, ttl 64, length 96, checksum 0xb598 dscp CS0 ecn NON_ECN
    fragment id 0x3db1
  ICMP echo_reply checksum 0xb583 id 51131
3、镜像转发流程图

下面是总结镜像节点在device和l2模式下转发流程图:

通过上图可以分析一下下面问题:

1、镜像区分L2和非L2场景,从流程图上来看非L2场景包含l2场景。

2、如果镜像观察口也是镜像接口时,会不会出现报文循环复制的场景,代码是如何区分镜像报文和非镜像报文的?

>在镜像函数span_mirror中,镜像后的报文flags标识会置位c0->flags |= VNET_BUFFER_F_SPAN_CLONE。当检测到报文已经置位VNET_BUFFER_F_SPAN_CLONE。则不再做报文镜像。

3、l2场景中如果镜像观察口未使能L2层功能的话,报文将在l2-output节点丢弃。

镜像相关数据结构如下:代码比较简单,这里不再分析。

参考资料:

1、思科端口镜像功能介绍文档 https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst4000/8-2glx/configuration/guide/span.html 2、H3C端口镜像功能介绍文档 http://www.h3c.com/cn/d_201108/723439_30005_0.htm 3、华为端口镜像功能介绍文档 https://support.huawei.com/enterprise/zh/doc/EDOC1100038439/a8fbe22b 4、vpp span功能介绍 https://docs.fd.io/vpp/21.10/dd/d3c/span_doc.html

本文中数据结构及转发流程图已放在github上,如有需要自取:https://github.com/jin13417/dpdk-vpp-learning.git

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
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
2K0
Learning VPP: VXLAN tunnel
learning:vpp/classify(2)
作用如下图所示从table内存池上申请table内存,在main_heap上申请桶占用空间,从系统内存映射classify session中匹配规则表配置空间。这里操作和bihash一致。
dpdk-vpp源码解读
2023/01/04
1.8K0
learning:vpp/classify(2)
learning:vpp pipe interface
本文介绍pipe接口使用,此接口有点类似于内核veth-pair。总是成对出现的。此功能可以用于两个vrf之间进行通信。
dpdk-vpp源码解读
2023/01/04
8660
learning:vpp pipe interface
learning:Wireguard plugin
本文主要介绍wireguard的vpp的基本配置与转发流程,其他相关wireguard原理及理论实现可以阅读参考文章。
dpdk-vpp源码解读
2023/01/04
2.2K0
learning:Wireguard plugin
Learning VPP: OSPF routing protocol
前面文章:learning:vppsb router插件编译 介绍了vppsb router插件在Centos7内核版本3.10上的基于vpp 21.06版本的编译,并将修改后代码放在github上《链接https://github.com/jin13417/vppsb/tree/vpp_21.06》。本文主要参考博文《Learning VPP: OSPF routing protocol》学习使用vppsb的router插件搭建ospf学习环境。
dpdk-vpp源码解读
2023/03/07
2.7K1
Learning VPP: OSPF routing protocol
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.1K1
learning:vpp dns plugins
learning:NAT-ED两种配置模式
本文主要描述VPP nat插件在NAT44-ed的两种配置场景路由前Nat和路由后nat的转发流程区别及配置差异。两种模式基本组网配置如下:
dpdk-vpp源码解读
2023/01/04
2K0
learning:NAT-ED两种配置模式
learning:vpp bond
前几天有人在微信群里询问bond相关的一些问题,在上家公司使用过bond功能,但当时是基于vpp 16.9版本。最近看了一下21.10版本的发现差异很大,bond node节点跳转方式完全不同了。本文基于21.10搭建环境,通过cli来配置和验证bond功能。
dpdk-vpp源码解读
2023/01/04
1.7K1
learning:vpp bond
learning:vet/policer
vpp自带的qos policer模块提供了限速及remark dscp功能。最开始policer需要和classify模块一起使用才能生效。在最近master分支合入了基于接口入方向配置policer功能,并且支持policer资源与绑定worker线程,利用handoff功能而避免多核模式下policer资源加锁(handoff 实现和加锁方式对性能影响没有详细数据)。
dpdk-vpp源码解读
2023/03/07
1.2K0
learning:vet/policer
learning:vpp实现dot1q终结功能配置
话接上篇我们基于腾讯云主机搭建了DPDK+VPP的学习平台,接下来学习vlan dot1q终结功能的配置及流程转发流程。下面首先来了解一下BD域的一些概念。
dpdk-vpp源码解读
2024/03/12
5630
learning:vpp实现dot1q终结功能配置
learning:vppsb router插件编译
前面文章中介绍了一篇博客:Learning VPP: OSPF routing protocol,文章中介绍使用VPPsb的router插件,它实现了将控制报文推到Linux网络堆栈的逻辑,以及一个基于netlink的机制,它将Linux的路由表同步到VPP的FIB中。本文主要尝试vppsb router查询在最新vpp21.06版本编译。并配置简单的ping业务正常。
dpdk-vpp源码解读
2023/03/07
1K0
learning:vppsb router插件编译
learning:vnet/Packet Generator
本文内容来源于vpp wiki文档中关于如何使用packet Generator及pacpket tracer的介绍。
dpdk-vpp源码解读
2023/03/07
1.1K0
learning:vnet/Packet Generator
learning:gre tunnel plugins
GRE(Generic Routing Encapsulation,通用路由封装)协议用来对某种协议(如IP、MPLS、以太网)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络(如IP)中传输。封装前后数据报文的网络层协议可以相同,也可以不同。封装后的数据报文在网络中传输的路径,称为GRE隧道。GRE隧道是一个虚拟的点到点的连接,其两端的设备分别对数据报文进行封装及解封装。
dpdk-vpp源码解读
2024/01/09
3860
learning:gre tunnel plugins
learning:vet/classify(1)
前面公众号文章learning:vet/policer介绍了policer的基本结构及基于接口in方向的policer限速的配置及使用。文章结尾讲到classify-policer 基于流的policer限速功能实现,本文就介绍一下classify的基本原理及相关命令行。
dpdk-vpp源码解读
2023/03/07
7370
learning:vet/classify(1)
利用vpp和内核协议栈通信机制实现虚拟机上网
本文参考博客(https://blog.csdn.net/illina/article/details/81669944)来学习一下利用vpp实现虚拟机上网功能。主要是为了学习虚拟网卡功能在vpn场景中应用比较广泛。
dpdk-vpp源码解读
2023/03/07
2.4K0
利用vpp和内核协议栈通信机制实现虚拟机上网
learning:vpp-sswan 实现ipsec策略模式 (2)
上一节完成了vpp-sswan基本环境的安装部署,接下来搭建环境来验证ike协商及转发功能,下图是基本环境配置组网情况:
dpdk-vpp源码解读
2023/12/04
1.1K4
learning:vpp-sswan 实现ipsec策略模式 (2)
learning:how config vrrp unicast mode
在前面一篇文章《learning:vrrp plugins (2)》中,介绍了一下vrrp 单播模式的配置,恰巧在vpp-dev邮箱中有人问到vrrp单播模式如何配置?vrrp插件维护者Matthew Smith也作出了解答,并未理解作者设计意图及单播模式如何工作?云计算场景中如何应用?
dpdk-vpp源码解读
2023/01/04
6852
learning:l3xc plugins
本文介绍一下l3xc插件,功能是将三层接口的所有入接口流量交叉连接输出到指定的FIB路径。此功能和在相同vrf中设置默认路由的效果差不多的。但是比默认路由的转发方式更加省内存和在cpu处理方面高效。
dpdk-vpp源码解读
2023/09/06
3760
learning:l3xc plugins
learning:urpf plugins
本文主要介绍一下vpp urpf插件的配置及处理流程。首先根据华为配置指南来了解一下URPF的定义、目的及两种模式的差异。
dpdk-vpp源码解读
2023/06/23
3300
learning:urpf plugins
learning:snort plugin (1)
本文主要介绍vpp snort插件的编译及配置使用流程。在编译vpp之前首先需要安装libdaq库。在github上下载最新代码,并按照指导文档进行编译安装libdaq库。
dpdk-vpp源码解读
2023/09/05
9520
learning:snort plugin (1)
相关推荐
Learning VPP: VXLAN tunnel
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文