目录

文章目录

  • 目录
  • L2 vSwitch
  • L2 vSwitch 操作指令集合
    • MAC address
    • ARP
    • Bridge Domain
  • 应用示例
    • L2 Switching
    • VLAN L2 Switcing

L2 vSwitch

VPP 实现的 VLAN 转发模型类似于 Linux Bridge,称之为 Bridge Domain。VPP 的接口模式默认为 L3 模式,将接口挂载到 Bridge Domain 之后,即可转换为 L2 模式。

VPP 可以作为一个现成的 L2 vSwitch,支持创建:

  • Bridge Domains
  • Ports (including tunnel ports)
  • Connect ports to bridge domains
  • Program ARP termination
  • etc…

L2 vSwitch 操作指令集合

MAC address

# 设置接口的 MAC 地址。
set int mac address GigabitEthernet2/0/0 00:00:00:00:00:00# 查看 L2 转发 MAC 表
show l2fib [all] | [bd_id <nn> | bd_index <nn>] [learn | add] | [raw]# 添加 L2 转发 MAC 表记录
set l2fib add  fa:16:3e:b0:a9:71 834 BondEthernet0.834

ARP

# 查看 ARP 学习表
show ip neighbor# 设置静态 ARP
set ip neighbor GigabitEthernet2/6/0 192.168.2.2 00:0c:29:dc:96:f8

Bridge Domain

# 创建 Bridge Domain(vSwitch)
create bridge-domain 100# 查看 Bridge Domain(vSwitch)
show bridge-domain 100 detail# 将接口挂载到指定的 Bridge Domain(vSwitch)
set interface l2 bridge <interface> <bridge-domain-id> [bvi|uu-fwd] [shg]# 将接口移出 Bridge Domain(vSwitch),set l3 == del l2
set interface l3 GigabitEthernet0/a/0.200

应用示例

L2 Switching

使用 VPP1 充当 L2 vSwitch 的角色。

  1. 在 Linux 上创建 veth pair vpp1out-vpp1host,其中 vpp1out 用于 VPP1 host-interface,vpp1host 作为 Linux Host Network Interface,配置好 IP 地址。
$ sudo ip link add name vpp1out type veth peer name vpp1host
$ sudo ip link set dev vpp1out up
$ sudo ip link set dev vpp1host up
$ sudo ip addr add 10.10.1.1/24 dev vpp1host
  1. 在 VPP 上创建 host-interface host-vpp1out。
vpp# create host-interface name vpp1out
host-vpp1outvpp# show hardwareName                Idx   Link  Hardware
host-vpp1out                       1     up   host-vpp1outLink speed: unknownEthernet address 02:fe:e6:fc:17:1eLinux PACKET socket interface
...vpp# set int state host-vpp1out upvpp# show intName               Idx    State  MTU (L3/IP4/IP6/MPLS)     Counter          Count
host-vpp1out                      1      up          9000/0/0/0
local0                            0     down          0/0/0/0
  1. 在 Linux 上创建 veth pair vpp1vpp2-vpp2vpp1,其中 vpp1vpp2 用于 VPP1 host-interface,vpp2vpp1 作为 VPP2 host-interface。
$ sudo ip link add name vpp1vpp2 type veth peer name vpp2vpp1
$ sudo ip link set dev vpp1vpp2 up
$ sudo ip link set dev vpp2vpp1 up
  1. 在 VPP1 上创建 host-interface host-vpp1vpp2。
vpp# create host-interface name vpp1vpp2
host-vpp1vpp2vpp# show hardwareName                Idx   Link  Hardware
host-vpp1vpp2                      2     up   host-vpp1vpp2Link speed: unknownEthernet address 02:fe:41:4e:24:6fLinux PACKET socket interface
...vpp# set int state host-vpp1vpp2 upvpp# show intName               Idx    State  MTU (L3/IP4/IP6/MPLS)     Counter          Count
host-vpp1out                      1      up          9000/0/0/0     rx packets                     8rx bytes                     560drops                          8ip6                            8
host-vpp1vpp2                     2      up          9000/0/0/0
local0                            0     down          0/0/0/0
  1. 在 VPP1 上创建 host-interface host-vpp2vpp1。
vpp# create host-interface name vpp2vpp1
host-vpp2vpp1vpp# show hardwareName                Idx   Link  Hardware
host-vpp2vpp1                      1     up   host-vpp2vpp1Link speed: unknownEthernet address 02:fe:5d:5e:17:8fLinux PACKET socket interface
...vpp# set int state host-vpp2vpp1 upvpp# show intName               Idx    State  MTU (L3/IP4/IP6/MPLS)     Counter          Count
host-vpp2vpp1                     1      up          9000/0/0/0
local0                            0     down          0/0/0/0
  1. Configure Bridge Domain on vpp1 and add host-interface to bridge domain ID 1(NOTE:bridge domain ID 0 是无效的,我们应该创建 bridge domain 1)。
vpp# show bridge-domain
no bridge-domains in usevpp# set int l2 bridge host-vpp1out 1
vpp# set int l2 bridge host-vpp1vpp2 1vpp# show bridge-domain 1 detailBD-ID   Index   BSN  Age(min)  Learning  U-Forwrd   UU-Flood   Flooding  ARP-Term  arp-ufwd   BVI-Intf1       1       off        on        on       flood        on       off       off        N/A
span-l2-input l2-input-classify l2-input-feat-arc l2-policer-classify l2-input-acl vpath-input-l2 l2-ip-qos-record l2-input-vtr l2-gbp-lpm-classify gbp-src-classify gbp-null-classify l2-gbp-lpm-anon-classify gbp-learn-l2 l2-emulation l2-learn l2-rw l2-fwd gbp-fwd l2-flood l2-flood l2-outputInterface           If-idx ISN  SHG  BVI  TxFlood        VLAN-Tag-Rewritehost-vpp1out            1     1    0    -      *                 nonehost-vpp1vpp2           2     1    0    -      *                 none
  1. Configure loopback interface on vpp2
vpp# create loopback interface
loop0vpp# set int state loop0 upvpp# set int ip address loop0 10.10.1.2/24vpp# show inter addr
host-vpp2vpp1 (up):
local0 (dn):
loop0 (up):L3 10.10.1.2/24
  1. Configure bridge domain on vpp2: Add interface loop0 as a bvi (bridge virtual interface) to bridge domain 1 and Add interface vpp2vpp1 to bridge domain 1.
vpp# set int l2 bridge loop0 1 bvi
vpp# set int l2 bridge host-vpp2vpp1 1
vpp# show bridge-domain 1 detailBD-ID   Index   BSN  Age(min)  Learning  U-Forwrd   UU-Flood   Flooding  ARP-Term  arp-ufwd   BVI-Intf1       1       off        on        on       flood        on       off       off       loop0
span-l2-input l2-input-classify l2-input-feat-arc l2-policer-classify l2-input-acl vpath-input-l2 l2-ip-qos-record l2-input-vtr l2-gbp-lpm-classify gbp-src-classify gbp-null-classify l2-gbp-lpm-anon-classify gbp-learn-l2 l2-emulation l2-learn l2-rw l2-fwd gbp-fwd l2-flood l2-flood l2-outputInterface           If-idx ISN  SHG  BVI  TxFlood        VLAN-Tag-Rewriteloop0               2     1    0    *      *                 nonehost-vpp2vpp1           1     1    0    -      *                 none
  1. Ping from host to vpp2 and vpp2 to host
$ ping 10.10.1.2
PING 10.10.1.2 (10.10.1.2) 56(84) bytes of data.
64 bytes from 10.10.1.2: icmp_seq=1 ttl=64 time=0.534 ms
  1. 查看 VPP1 L2 FIB(MAC 映射表):

vpp# show l2fib verboseMac-Address     BD-Idx If-Idx BSN-ISN Age(min) static filter bvi         Interface-Nameb6:36:04:ba:af:ac    1      2      0/1      -       -      -     -           host-vpp1vpp2aa:ac:58:9d:9b:33    1      1      0/1      -       -      -     -           host-vpp1outde:ad:00:00:00:00    1      2      0/1      -       -      -     -           host-vpp1vpp2c2:31:59:d8:27:26    1      2      0/1      -       -      -     -           host-vpp1vpp2
L2FIB total/learned entries: 4/4  Last scan time: 0.0000e0sec  Learn limit: 16777216
  1. 查看 VPP2 L2 FIB(MAC 映射表)和 ARP 表:
vpp# show l2fib verboseMac-Address     BD-Idx If-Idx BSN-ISN Age(min) static filter bvi         Interface-Nameb6:36:04:ba:af:ac    1      1      0/1      -       -      -     -           host-vpp2vpp1aa:ac:58:9d:9b:33    1      1      0/1      -       -      -     -           host-vpp2vpp1de:ad:00:00:00:00    1      2      0/0      no      *      -     *               loop0
L2FIB total/learned entries: 3/2  Last scan time: 0.0000e0sec  Learn limit: 16777216vpp# show ip neighborTime                       IP                    Flags      Ethernet              Interface1396.0497                10.10.1.1                  D    aa:ac:58:9d:9b:33 loop0

VLAN L2 Switcing

  • GE1 接口为 Access 模式,加入到 VLAN 10 中;
  • GE2 接口为 Trunk 模式,允许 VLAN 10 和 VLAN 11 的报文通过;
    • 创建 GE2 接口的 802.1q 类型子接口 GE2.10,加入到 VLAN 10 中,并修改 GE2.10 的 L2 Rewrite 类型为 pop-1(转发带单层 VLAN Tag)。
    • 创建 GE2 接口的 802.1q 类型子接口 GE2.11,加入到 VLAN 11 中,并修改 GE2.11 的 L2 Rewrite 类型为 pop-1(转发带单层 VLAN Tag)。
  • GE3 接口为 Access 模式,加入到 VLAN 11 中;

配置步骤:

# VLAN 10
create bridge-domain 10
set interface l2 bridge GigabitEthernet1/0/0 10
create sub-interfaces GigabitEthernet2/0/0 10 dot1q 10
set interface l2 bridge GigabitEthernet2/0/0.10 10
set interface l2 tag-rewrite GigabitEthernet2/0/0.10 pop 1
show bridge-domain 10 detail# VLAN 11
create bridge-domain 11
set interface l2 bridge GigabitEthernet3/0/0 11
create sub-interfaces GigabitEthernet2/0/0 11 dot1q 11
set interface l2 bridge GigabitEthernet2/0/0.11 11
set interface l2 tag-rewrite GigabitEthernet2/0/0.11 pop 1
show bridge-domain 11 detail

FD.io/VPP — L2 vSwitch相关推荐

  1. FD.io/VPP — Overview

    目录 文章目录 目录 FD.io VPP FD.io 官网:https://fd.io FD.io(Fast data – Input/Output)是 Linux 基金会下属的一个开源项目,成立于 ...

  2. FD.io VPP基本介绍:理解向量包处理(VPP)

    FD.io VPP:用户文档 向量包处理器 RToax 2020年9月 1. 什么是向量包处理器(VPP) FD.io的矢量包处理器(VPP)是一个快速,可扩展的2-4层多平台网络协议栈.它在Linu ...

  3. FD.io VPP 使用场景-用例

    目录 路由器/通用CPE等 宽带网络网关 云负载均衡器 入侵防御系统 部署模型 离散电器 虚拟网络功能 FD.io是一种联网技术,可用于构建网络功能星系.如今,一些主要的通信网络提供商和设备制造商正在 ...

  4. FD.io/VPP — 常用指令集合

    目录 文章目录 目录 前言 System Level Interface Add NIC into VPP as Interface Interface State Hardware Interfac ...

  5. FD.io VPP 20.09版本正式发布:往期VPP文章回顾+下载地址+相关链接

    目录 下载RPM/DEB包 往期文章回顾与推荐 FD.io是一些项目和库的集合,基于DPDK并逐渐演化,支持在通用硬件平台上部署灵活可变的业务.FD.io为软件定义基础设施的开发者提供了一个通用平台, ...

  6. FD.io VPP:探究分段场景下vlib_buf在收发包的处理(dpdk_plugin.so)、rte_mbuf与vlib_buf 关系

    Table of Contents rte_mbuf.vlib_buf 关系及内存分布 使用dpdk-收包接口函数 使用dpdk 发包接口函数 总结 参考阅读 在使用vpp老版本copy报文的时候,经 ...

  7. FD.io VPP:vlib buffer pool(vlib_buffer) 内存初始化

    Table of Contents vlib buffer创建过程 vlib_buffer相关内存初始化 1.函数一开始就查询numa的个数 2.遍历numa节点来初始化 3.查询系统大页大小. 4. ...

  8. 关于FD.io VPP的最新消息

    Table of Contents CuVPP:软件数据平面中基于过滤器的最长前缀匹配 快速数据项目的矢量包处理器(VPP)版本20.05 2020年打破神话的DPDK 在商品硬件上使用Calico ...

  9. FD.io VPP环境下运行用户应用程序教程

    FD.io VPP环境下运行用户应用程序教程 RToax 2020年9月 相关文章:<FD.io VPP利用iperf3进行UDP灌包测试-英特尔X520万兆网卡> 1. VPP简介 VP ...

最新文章

  1. Linux操作oracle——关闭、停止、重启
  2. hihoCoder1233(2015北京网络赛H题)
  3. Data truncation: Data truncated for column/Data too long for column
  4. 虚拟同步发电机_一种光储型虚拟同步机介绍
  5. c语言线性分类回归库 台湾,最全的线性回归算法库总结—— scikit-learn篇
  6. ewsa 字典_汉语字典小程序
  7. 项目投标注意点001---项目投标那点事
  8. 7-10 数组循环左移 (20 分)
  9. Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)
  10. eclipse JSP页面中的JS代码为黑色,JS单独文件是OK的
  11. oracle delete误删除表数据进行恢复
  12. ABAQUS二次开发手册【随书代码使用说明】
  13. CocosCreator矢量绘图组件(2)
  14. Kali Linux 下搜狗输入法换肤和设置快捷键
  15. 从时间上算,我和李笑来是同一批人 | 十年币圈生存实录
  16. java倒叙遍历list
  17. 十行代码完成公众号对话,VFP的能力就是这么强悍,你学会了吗?
  18. ctrl+alt+t 函数注释快捷键失效KoroFileHeader
  19. commvault备份mysql数据库_Oracle数据库的备份和恢复-Commvault.PDF
  20. Docker (八)容器数据卷使用

热门文章

  1. SQLite中使用全文搜索FTS
  2. php 数组 获取键值,PHP数组_filter获取无键值
  3. python学会后再学c_目前python熟练 ,想再学golang 需要先学c吗?
  4. windows命令大全_必收藏!电脑快捷键、组合键大全
  5. 你知道“淘宝意念购“吗?阿里巴巴也入局脑机接口领域了...,
  6. Python-EEG工具库MNE中文教程(9)-参考电极应用
  7. 这块DIY墨水屏手表火了!外观可盐可甜,无线蓝牙计步闹钟一应俱全 | 开源
  8. 亚马逊员工流动率150%,每8个月相当于“大换血”,网友:贝佐斯不知足
  9. 一批美国名校被曝监控学生:14秒记录一次手机位置,想翘课更难了
  10. NLP中文面试学习资料:面向算法面试,理论代码俱全,登上GitHub趋势榜