【问题标题】:DPDK nes: Qemu due to missing usvhost-1 char deviceDPDK nes:Qemu 由于缺少 usvhost-1 字符设备
【发布时间】:2018-01-25 11:05:49
【问题描述】:

在使用 DPDK 为移动边缘计算配置 NES 环境的过程中,系统正在生成如下错误消息:

Qemu-System-X86_64: -Chardev Socket,Id=Char1,Path=/Usr/Bin/Usvhost-1: 连接套接字失败:没有这样的文件或目录

注意:我使用的是 CentOS 7。

使用的命令列表如下:

mkdir -p /mnt/huge-1048576kB
mount -t hugetlbfs nodev /mnt/huge-1048576kB

./scripts/setup.sh

nginx
redis-server /etc/redis/redis.conf &

tunctl -t tap0
brctl addif virbr0 tap0
ifconfig eno1 0 up
ip addr add 10.138.77.17/24 dev virbr0

export RTE_SDK=/opt/dpdk-stable-16.07.2
export RTE_TARGET=x86_64-native-linuxapp-gcc
make

export NES_SERVER_CONF=/opt/intel/nev_sdk/nes_root/scripts/nes.cfg

cd scripts/
./nes-daemon-start 
0000:1c:00.1 already bound to driver igb_uio, skipping
0000:1c:00.0 already bound to driver igb_uio, skipping


/usr/local/bin/qemu-system-x86_64 -enable-kvm -cpu host -m 4096 -no-reboot -no-hpet -drive file=/home/tcs/ubuntu-14.04.5-desktop-amd64.iso,if=virtio,id=drive-virtio-disk1,format=raw -object memory-backend-file,id=mem,size=4096M,mem-path=/mnt/huge-1048576kB/,share=on -numa node,memdev=mem -mem-prealloc -device virtio-net-pci,netdev=net0,mac=ac:1f:6b:09:cb:9a -netdev type=tap,id=net0 -chardev socket,id=char1,path=/usr/bin/usvhost-1 -netdev type=vhost-user,id=mynet1,chardev=char1 -device virtio-net-pci,mac=52:54:00:00:00:01,netdev=mynet1,id=net1,csum=off,gso=off,guest_csum=off,guest_tso4=off,guest_tso6=off,guest_ecn=off
Qemu-System-X86_64: -Chardev Socket,Id=Char1,Path=/Usr/Bin/Usvhost-1: Failed To Connect Socket: No Such File Or Directory

【问题讨论】:

    标签: dpdk


    【解决方案1】:

    我不熟悉 NES,但从列出的命令来看,./nes-daemon-start 之后应该有一个 Unix 套接字,/Usr/Bin/Usvhost-1

    由于 QEMU 无法连接到套接字 /Usr/Bin/Usvhost-1,显然 nes-daemon-start 在另一个地方创建了套接字。

    解决方案是检查路径/Usr/Bin/Usvhost-1 是否正确。在大多数 Unix 文件系统上,字母大小写有所不同,即 /Usr/usr 是不同的路径。所以也许这就是 QEMU 找不到提供的路径的情况。

    【讨论】:

    • 感谢您的回复。提到的路径/Usr/Bin/Usvhost-1(Typo error)实际上是/usr/bin/usvhost-1。文件 usvhost-1 尚未创建。所以这个错误来了。实际上,我将其创建为同一路径中的字符设备。打开此文件时出错。有什么建议吗?
    • 不是文件,应该是nes-daemon-start创建的socket。无需手动创建它,只需检查 nes-daemon-start 在哪里创建它并相应地更改 QEMU 参数中的路径。
    • 对,nes-daemon-start 使用 nes.cfg,我为 PORT0 定义了:[PORT0] name = ENB pci-address = 0000:1c:00.0 traffic-type = LTE traffic-direction = 上游出口端口 = 1 ip-addresses = 10.138.77.32:1,10.138.77.10:1 mac = ac:1f:6b:09:cb:9a #./nes-daemon-start SW 仅检测到的平台 路由表指示该接口 0000:1c:00.0 处于活动状态。未修改 /var/log/nes.log ES:[ERR] 无法找到 pci_addr=0000:1c:00.0 的端口 ID NES:[EMERG] nes_dev_port_new_device 初始化失败!NES:[ERR] 无法初始化接口。
    • 所以未创建 usvhost-1 套接字文件。如上所述,用于 PORT0 配置的 nes.cfg 文件中有任何问题。请帮忙。
    • @sanjay 我不熟悉NES,抱歉:(
    猜你喜欢
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多