DPDK nes: Qemu из-за отсутствия символьного устройства usvhost-1

В процессе настройки среды NES для мобильных граничных вычислений с использованием DPDK система выдает следующее сообщение об ошибке:

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

person sanjay    schedule 25.01.2018    source источник


Ответы (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 не может найти указанный путь.

person Andriy Berestovskyy    schedule 25.01.2018
comment
Спасибо за ответ. Упомянутый путь /Usr/Bin/Usvhost-1 (опечатка) на самом деле является /usr/bin/usvhost-1. Файл usvhost-1 не создан. Итак, эта ошибка приходит. Фактически, я создаю это как символьное устройство по тому же пути. Ошибка при открытии этого файла. Любое предложение? - person sanjay; 29.01.2018
comment
Это не файл, это должен быть сокет, созданный nes-daemon-start. Нет необходимости создавать его вручную, просто проверьте, где nes-daemon-start его создает, и соответствующим образом измените путь в аргументах QEMU. - person Andriy Berestovskyy; 29.01.2018
comment
Правильно, nes-daemon-start с использованием nes.cfg, где я определил для PORT0: [PORT0] name = ENB pci-address = 0000:1c:00.0 traffic-type = LTE traffic-direction = upstream egress-port = 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 NES: [EMERG] Ошибка инициализации nes_dev_port_new_device! NES: [ERR] Не удалось инициализировать интерфейсы. - person sanjay; 31.01.2018
comment
поэтому файл сокета usvhost-1 не создан. Что-то не так в файле nes.cfg для конфигурации PORT0, как упоминалось выше. Пожалуйста, помогите в этом. - person sanjay; 31.01.2018
comment
@sanjay Я не знаком с РЭШ, извините :( - person Andriy Berestovskyy; 31.01.2018