openvswitch(ovs) 命令--vhost-user相关的配置

本文详细介绍如何清除旧环境并部署Open vSwitch (OVS) 2.12.0版本,结合DPDK进行高性能网络处理。具体步骤包括启动ovsdb、配置DPDK参数、创建网桥和端口等,并提供了启动虚拟机的示例命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

OVS-SETUP

1、清除之前的环境

killall ovsdb-server ovs-vswitchd
rm -f /var/run/openvswitch/vhost-user*
rm -f /etc/openvswitch/conf.db

2、启动ovsdb


[root@dpdktest openvswitch-2.12.0]export DB_SOCK=/var/run/openvswitch/db.sock

[root@dpdktest openvswitch-2.12.0]ovsdb-tool create /etc/openvswitch/conf.db /usr/share/openvswitch/vswitch.ovsschema
[root@dpdktest openvswitch-2.12.0]ovsdb-server --remote=punix:$DB_SOCK --remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach
[root@dpdktest openvswitch-2.12.0]ovs-vsctl --no-wait init
[root@dpdktest openvswitch-2.12.0]ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-lcore-mask=0x2 //绑定到第2个cpu核上
[root@dpdktest openvswitch-2.12.0]ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-socket-mem=4096
[root@dpdktest openvswitch-2.12.0]ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true
启动ovs-vswitch
[root@dpdktest openvswitch-2.12.0]ovs-vswitchd unix:$DB_SOCK --pidfile --detach --log-file=/var/log/openvswitch/ovs-vswitchd.log


3、查看支持DPDK是否成功:


ovs-vsctl get Open_vSwitch . dpdk_initialized
true

配置bridge
1 [root@dpdktest openvswitch-2.12.0]# ovs-vsctl add-br ovsbr0 -- set bridge ovsbr0 datapath_type=netdev

2、添加vhost-user-client-0/1 端口需要指定vhost-server-path值,表示socket文件路径。
ovs-vsctl add-port ovsbr0 vhost-client-0 -- set Interface vhost-client-0 type=dpdkvhostuserclient options:vhost-server-path=/usr/local/var/run/sock0
ovs-vsctl add-port ovsbr0 vhost-client-1 -- set Interface vhost-client-1 type=dpdkvhostuserclient options:vhost-server-path=/usr/local/var/run/sock1
ovs-vsctl show

在网桥ovsbr0上绑定真实dpdk的物理网卡

ovs-vsctl add-port ovsbr0 dpdkport0 -- set Interface dpdkport0 type=dpdk option:dpdk-devargs=0000:02:00.0

注:可以修改ovs桥中端口的mtu值方法如下:该命令设置可以在数据库持久,也可以配置物理接口
ovs-vsctl set interface ovsbr0 mtu_request=9000
ovs-vsctl set interface dpdkport0 mtu_request=9000
ovs-vsctl set interface vhost-client-1 mtu_request=9000
ovs-vsctl set interface vhost-client-0 mtu_request=9000

该命令清除恢复到默认的MTU

ovs-vsctl set interface vhost-client-0 mtu_request=[]

也可以直接使用添加端口的时候指定mtu值如下方式:

[root@dpdktest ~]# ovs-vsctl add-port ovsbr0 vhost-client-0 -- set Interface vhost-client-0 type=dpdkvhostuserclient options:vhost-server-path=/usr/local/var/run/sock0 mtu_request=9000
[root@dpdktest ~]# ovs-vsctl add-port ovsbr0 vhost-client-1 -- set Interface vhost-client-1 type=dpdkvhostuserclient options:vhost-server-path=/usr/local/var/run/sock1 mtu_request=9000
[root@dpdktest ~]# ovs-vsctl add-port ovsbr0 dpdkport0 -- set Interface dpdkport0 type=dpdk option:dpdk-devargs=0000:02:00.0 mtu_request=9000
[root@dpdktest ~]#

 

启动虚拟机命令:

taskset 0x3 qemu-system-mips64el -name guest=dpdk-test \
    -m 2048 -boot c -smp 2 \
    -drive file=/home/kvm/Loongnix-Server-1.7-gui-2007-RC14-clone.qcow2,if=virtio \
    -bios /usr/share/qemu/ls3a_bios.bin -M loongson7a -cpu Loongson-3A4000-COMP  \
    --enable-kvm \
    -net user,hostfwd=tcp::10022-:22 -net nic \
    -object memory-backend-file,id=mem,size=2048M,mem-path=/dev/hugepages,share=on \
    -numa node,memdev=mem -mem-prealloc \
    -chardev socket,id=char1,path=/usr/local/var/run/sock1,server \
    -netdev type=vhost-user,id=hostnet1,chardev=char1 \
    -device virtio-net-pci,netdev=hostnet1,id=net1,mac=52:54:00:02:d9:02 \

    -vga qxl -spice port=5911,addr=127.0.0.1,disable-ticketing \
    -d int -serial stdio -monitor telnet:localhost:3333,server,nowait

 

启动虚拟机后ssh登录虚拟机

ssh root@localhost -p 10022

稍后在补充完整的拓扑以及编译过程

参考链接:

https://wiki.qemu.org/Documentation/vhost-user-ovs-dpdk

https://blog.youkuaiyun.com/boilerplate/article/details/107740404

https://docs.openvswitch.org/en/latest/howto/dpdk/

https://www.cnblogs.com/wangjq19920210/p/8999887.html

http://doc.dpdk.org/dts/test_plans/vhost_qemu_mtu_test_plan.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值