Hi all,

For learning purposes, I'm trying to set up a test topology using
multiple instances of VPP running in different network namespaces.

I see that there's documentation showing how to use VPP as a router
between namespaces, but in all examples I found VPP is always running
in the default network namespace.

If I try to run VPP in a non-default network namespace, something
weird happens: all interfaces from the default netns disappear!

Does anyone know what might be the cause of this?

I'm using the official vagrant VM (Ubuntu 16.04) and VPP v17.04.1, and
I can see that the same problem occurs on master and on older releases
as well.

More details about the issue below.

1 - My VPP config:
# cat /etc/vpp/startup.conf
unix {
  nodaemon
  log /tmp/vpp.log
  full-coredump
}

api-trace {
  on
}

api-segment {
  gid vpp
}

2 - VPP running ok in the default netns:
# vpp -c /etc/vpp/startup.conf
vlib_plugin_early_init:356: plugin path /usr/lib/vpp_plugins
load_one_plugin:184: Loaded plugin: acl_plugin.so (Access Control Lists)
load_one_plugin:184: Loaded plugin: dpdk_plugin.so (Data Plane
Development Kit (DPDK))
load_one_plugin:184: Loaded plugin: flowperpkt_plugin.so (Flow per Packet)
load_one_plugin:184: Loaded plugin: gtpu_plugin.so (GTPv1-U)
load_one_plugin:184: Loaded plugin: ila_plugin.so (Identifier-locator
addressing for IPv6)
load_one_plugin:184: Loaded plugin: ioam_plugin.so (Inbound OAM)
load_one_plugin:114: Plugin disabled (default): ixge_plugin.so
load_one_plugin:184: Loaded plugin: lb_plugin.so (Load Balancer)
load_one_plugin:184: Loaded plugin: libsixrd_plugin.so (IPv6 Rapid
Deployment on IPv4 Infrastructure (RFC5969))
load_one_plugin:184: Loaded plugin: memif_plugin.so (Packet Memory
Interface (experimetal))
load_one_plugin:184: Loaded plugin: snat_plugin.so (Network Address Translation)
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/dpdk_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/snat_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/lb_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/flowperpkt_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/udp_ping_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/acl_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/ioam_export_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/ioam_trace_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/vxlan_gpe_ioam_export_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/gtpu_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/ioam_vxlan_gpe_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/ioam_pot_test_plugin.so
vlib_pci_bind_to_uio: Skipping PCI device 0000:00:03.0 as host
interface enp0s3 is up
vlib_pci_bind_to_uio: Skipping PCI device 0000:00:08.0 as host
interface enp0s8 is up
vlib_pci_bind_to_uio: Skipping PCI device 0000:00:09.0 as host
interface enp0s9 is up
vpp[1180]: dpdk_ipsec_process:239: not enough Cryptodevs, default to
OpenSSL IPsec
vpp[1180]: dpdk_lib_init:182: DPDK drivers found no ports...
vpp[1180]: dpdk_lib_init:186: DPDK drivers found 0 ports...
vpp[1180]: received signal SIGINT, PC 0x7fad6a98ea37
DPDK physical memory layout:
Segment 0: phys:0x34000000, len:8388608, virt:0x7facdbc00000,
socket_id:0, hugepage_sz:2097152, nchannel:0, nrank:0
Segment 1: phys:0x70800000, len:2097152, virt:0x7facdb800000,
socket_id:0, hugepage_sz:2097152, nchannel:0, nrank:0
Segment 2: phys:0x70c00000, len:257949696, virt:0x7fac76200000,
socket_id:0, hugepage_sz:2097152, nchannel:0, nrank:0

3 - Now running VPP in a non-default netns:
root@localhost:~# unshare -n bash
root@localhost:~# vpp -c /etc/vpp/startup.conf
vlib_plugin_early_init:356: plugin path /usr/lib/vpp_plugins
load_one_plugin:184: Loaded plugin: acl_plugin.so (Access Control Lists)
load_one_plugin:184: Loaded plugin: dpdk_plugin.so (Data Plane
Development Kit (DPDK))
load_one_plugin:184: Loaded plugin: flowperpkt_plugin.so (Flow per Packet)
load_one_plugin:184: Loaded plugin: gtpu_plugin.so (GTPv1-U)
load_one_plugin:184: Loaded plugin: ila_plugin.so (Identifier-locator
addressing for IPv6)
load_one_plugin:184: Loaded plugin: ioam_plugin.so (Inbound OAM)
load_one_plugin:114: Plugin disabled (default): ixge_plugin.so
load_one_plugin:184: Loaded plugin: lb_plugin.so (Load Balancer)
load_one_plugin:184: Loaded plugin: libsixrd_plugin.so (IPv6 Rapid
Deployment on IPv4 Infrastructure (RFC5969))
load_one_plugin:184: Loaded plugin: memif_plugin.so (Packet Memory
Interface (experimetal))
load_one_plugin:184: Loaded plugin: snat_plugin.so (Network Address Translation)
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/dpdk_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/snat_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/lb_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/flowperpkt_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/udp_ping_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/acl_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/ioam_export_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/ioam_trace_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/vxlan_gpe_ioam_export_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/gtpu_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/ioam_vxlan_gpe_test_plugin.so
load_one_plugin:63: Loaded plugin:
/usr/lib/vpp_api_test_plugins/ioam_pot_test_plugin.so
vpp[1264]: dpdk_ipsec_process:239: not enough Cryptodevs, default to
OpenSSL IPsec
vpp[1264]: dpdk_lib_init:186: DPDK drivers found 3 ports...
vpp[1264]: svm_client_scan_this_region_nolock:1140: /vpe-api: cleanup
ghost pid 1180
vpp[1264]: svm_client_scan_this_region_nolock:1140: /global_vm:
cleanup ghost pid 1180
vpp[1264]: received signal SIGINT, PC 0x7f2e2d976a37
DPDK physical memory layout:
Segment 0: phys:0x34000000, len:8388608, virt:0x7f2d9ec00000,
socket_id:0, hugepage_sz:2097152, nchannel:0, nrank:0
Segment 1: phys:0x70800000, len:2097152, virt:0x7f2d9e800000,
socket_id:0, hugepage_sz:2097152, nchannel:0, nrank:0
Segment 2: phys:0x70c00000, len:257949696, virt:0x7f2d39200000,
socket_id:0, hugepage_sz:2097152, nchannel:0, nrank:0

4 - In another shell I can see all interfaces being removed (except lo):
# ip monitor link
2: enp0s3: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN
group default
    link/ether 08:00:27:33:82:8a brd ff:ff:ff:ff:ff:ff
Deleted 2: enp0s3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state
DOWN group default
    link/ether 08:00:27:33:82:8a brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN
group default
    link/ether 08:00:27:b1:f8:99 brd ff:ff:ff:ff:ff:ff
Deleted 3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state
DOWN group default
    link/ether 08:00:27:b1:f8:99 brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN
group default
    link/ether 08:00:27:be:61:9f brd ff:ff:ff:ff:ff:ff
Deleted 4: enp0s9: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state
DOWN group default
    link/ether 08:00:27:be:61:9f brd ff:ff:ff:ff:ff:ff

Any help would be appreciated.

Best Regards,
-- 
Renato Westphal
_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io
https://lists.fd.io/mailman/listinfo/vpp-dev

Reply via email to