记录vpp 二层转发bridge-domain使用过程和遇到的问题

记录vpp中二层转发,bridge-domian的使用
先上一张拓扑图,如图,服务器有两个网口,分别与两个pc机用网线直连,连个pc机的ip分别为192.168.10.1和192.168.10.2。目标是通过配置vpp的二层转发达到pc1可以ping通pc2的目的。
在这里插入图片描述
首先配置vpp中两个interface启动:

set int state TenGigabitEthernet19/0/2 up
vppctl set int state TenGigabitEthernet19/0/3 up

然后创建一个bridge-domain,将两个interface搭载桥上:

vppctl create bridge-domain 10
vppctl set interface l2 bridge TenGigabitEthernet19/0/2 10
vppctl set interface l2 bridge TenGigabitEthernet19/0/3 10

注意bridge的id,这里面我给的id为10,尽量不要用id 为0的bridge,官网有介绍。
然后可以用pc1和pc2进行ping操作,现象为可以ping通。
以上是正常官网的流程操作。借鉴
https://wenku.baidu.com/view/0650452e01d8ce2f0066f5335a8102d277a26154.html
https://blog.csdn.net/wjian1997/article/details/84567494

--------------------------------------不正经的分割线-----------------------------------------------
以下是我在这个过程中遇到的一些现象和解决办法。
1.host-interface
在vpp配置文件中,dpdk插件这个选项我设置为disable,这样进入vpp中是没有interface的
在这里插入图片描述
在这里插入图片描述
这时候我按照官方的创建host-interface的方式创建了两个interface,然后将两个host-interface搭在一个bridge上,结果不能完成两个pc机连通,原因是host-interface转包方式是af_packet。
2.dpdk驱动的网卡
在vpp配置文件中,dpdk插件这个选项我设置为enable,我这边显示出来四个interface
在这里插入图片描述
如果配置文件中没有配置dpdk_plugin项,默认是enable。
在这里插入图片描述
这时候查看自己的系统网卡信息在这里插入图片描述
发现两个好像对应不上,而且当我把vpp中四个interface状态启动之后是没有流量的,然后检查机器发现机器除了两个网口之外还有四个光口。
然后找到了dpdk配置的路径进行网口绑定查看发现了这个现象
在这里插入图片描述
其中dpdk绑定的网卡驱动是上面四个,下面有两个是内核绑定的。然后将两个内核绑定的驱动转移到dpdk绑定的驱动上。

./dpdk-devbind.py -b vfio-pci 19:00.2
./dpdk-devbind.py -b vfio-pci 19:00.3

然后重启vpp之后,vpp中出现6个interface,把其中两个对应网卡的启动起来,搭在一个bridge上,这样pc1和pc2就能通信了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
VPP 中,可以使用 `dns_plugin` 插件来实现 DNS 拦截和回复功能。下面是一个示例配置,用于在 `ip4-unicast` 节点后增加 DNS 拦截和回复节点: ``` # 启用 dns_plugin 插件 unix { cli-listen 0.0.0.0:5002 } plugin default { disable } plugin dpdk_plugin.so { enable } # 配置 ip4-unicast 节点 create interface tap0 set interface tap0 ip address 10.0.0.1/24 set interface tap0 state up create host-interface name vpp1 set interface ip address host-vpp1 10.0.0.2/24 set interface state host-vpp1 up ip route add 0.0.0.0/0 via 10.0.0.2 ip4-unicast { # ... } # 配置 dns_plugin 节点 dns-plugin { # 配置 DNS 服务器地址 set server address 8.8.8.8 # 配置 DNS 拦截规则 set domain name example.com set action ip4-lookup set ip4 address 10.0.0.3 # 配置 DNS 回复规则 set reply name google.com set ip4 address 10.0.0.4 } # 配置 ip4-lookup 节点 ip4-lookup { # ... } # 配置 ip4-forward 节点 ip4-forward { # ... } ``` 在这个示例配置中,我们先启用了 `dns_plugin` 插件,并配置了 `ip4-unicast` 节点。然后,我们在 `dns_plugin` 节点中配置了 DNS 服务器地址、DNS 拦截规则和 DNS 回复规则。在 DNS 拦截规则中,我们指定了域名 `example.com`,并将其转发到 IP 地址为 `10.0.0.3` 的节点。在 DNS 回复规则中,我们指定了域名 `google.com`,并将其回复到 IP 地址为 `10.0.0.4` 的节点。 需要注意的是,以上只是一个示例配置,实际配置需要根据具体情况进行调整。另外,还需要在 VPP 中加载 `dns_plugin` 插件,可以使用以下命令加载插件: ``` vpp# set plugin path /usr/lib/vpp_plugins/ vpp# load plugin dns_plugin.so ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值