If a server has an ovs bridge with a dpdk device for external
network access and a network namespace attached then sending data out of
the namespace fails if jumbo frames are enabled.
Setup:
root@node-licetus:~# uname -r
5.0.0-20-generic
root@node-licetus:~# ovs-vsctl show
523eab62-8d03-4445-a7ba-7570f5027ff6
Bridge br-test
Port "tap1" Interface "tap1" type: internal
Port br-test Interface br-test type: internal
Port "dpdk-nic1" Interface "dpdk-nic1" type: dpdk options: {dpdk-devargs="0000:03:00.0"}
ovs_version: "2.11.0"
root@node-licetus:~# ovs-vsctl get Interface dpdk-nic1 mtu
9000
root@node-licetus:~# ip netns exec ns1 ip addr show tap1
12: tap1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9000 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether 0a:dd:76:38:52:54 brd ff:ff:ff:ff:ff:ff
inet 10.246.112.101/21 scope global tap1
valid_lft forever preferred_lft forever
inet6 fe80::8dd:76ff:fe38:5254/64 scope link
valid_lft forever preferred_lft forever
* Using iperf to send data out of the netns fails:
root@node-licetus:~# ip netns exec ns1 iperf -c 10.246.114.29
------------------------------------------------------------
Client connecting to 10.246.114.29, TCP port 5001
TCP window size: 325 KByte (default)
------------------------------------------------------------
[ 3] local 10.246.112.101 port 51590 connected with 10.246.114.29 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.3 sec 323 KBytes 257 Kbits/sec
root@node-hippalus:~# iperf -s -m
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
root@node-hippalus:~#
* Switching the direction of flow and sending data into the namespace works:
root@node-licetus:~# ip netns exec ns1 iperf -s -m
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
[ 4] local 10.246.112.101 port 5001 connected with 10.246.114.29 port 59454
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 6.06 GBytes 5.20 Gbits/sec
[ 4] MSS size 8948 bytes (MTU 8988 bytes, unknown interface)
root@node-hippalus:~# iperf -c 10.246.112.101
------------------------------------------------------------
Client connecting to 10.246.112.101, TCP port 5001
TCP window size: 942 KByte (default)
------------------------------------------------------------
[ 3] local 10.246.114.29 port 59454 connected with 10.246.112.101 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 6.06 GBytes 5.20 Gbits/sec
* Using iperf to send data out of the netns after dropping tap mtu works:
root@node-licetus:~# ip netns exec ns1 ip link set dev tap1 mtu 1500
root@node-licetus:~# ip netns exec ns1 iperf -c 10.246.114.29
------------------------------------------------------------
Client connecting to 10.246.114.29, TCP port 5001
TCP window size: 845 KByte (default)
------------------------------------------------------------
[ 3] local 10.246.112.101 port 51594 connected with 10.246.114.29 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 508 MBytes 426 Mbits/sec
root@node-hippalus:~# iperf -s -m
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
[ 4] local 10.246.114.29 port 5001 connected with 10.246.112.101 port 51594
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.1 sec 508 MBytes 424 Mbits/sec
[ 4] MSS size 1448 bytes (MTU 1500 bytes, ethernet)
Ubuntu: eoan
DPDK pkg: 18.11.1-3
OVS DPDK pkg: 2.11.0-0ubuntu2
Kerenl: 5.0.0-20-generic
If a server has an ovs bridge with a dpdk device for external
network access and a network namespace attached then sending data out of
the namespace fails if jumbo frames are enabled.
Setup:
root@node- licetus: ~# uname -r
5.0.0-20-generic
root@node- licetus: ~# ovs-vsctl show 8d03-4445- a7ba-7570f5027f f6
Interface "tap1"
type: internal
Interface br-test
type: internal
Interface "dpdk-nic1"
type: dpdk
options: {dpdk-devargs= "0000:03: 00.0"}
523eab62-
Bridge br-test
Port "tap1"
Port br-test
Port "dpdk-nic1"
ovs_version: "2.11.0"
root@node- licetus: ~# ovs-vsctl get Interface dpdk-nic1 mtu
9000
root@node- licetus: ~# ip netns exec ns1 ip addr show tap1 MULTICAST, PROMISC, UP,LOWER_ UP> mtu 9000 qdisc fq_codel state UNKNOWN group default qlen 1000 76ff:fe38: 5254/64 scope link
12: tap1: <BROADCAST,
link/ether 0a:dd:76:38:52:54 brd ff:ff:ff:ff:ff:ff
inet 10.246.112.101/21 scope global tap1
valid_lft forever preferred_lft forever
inet6 fe80::8dd:
valid_lft forever preferred_lft forever
* Using iperf to send data out of the netns fails:
root@node- licetus: ~# ip netns exec ns1 iperf -c 10.246.114.29 ------- ------- ------- ------- ------- ------- ------- ---- ------- ------- ------- ------- ------- ------- ------- ----
-------
Client connecting to 10.246.114.29, TCP port 5001
TCP window size: 325 KByte (default)
-------
[ 3] local 10.246.112.101 port 51590 connected with 10.246.114.29 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.3 sec 323 KBytes 257 Kbits/sec
root@node- hippalus: ~# iperf -s -m ------- ------- ------- ------- ------- ------- ------- ---- ------- ------- ------- ------- ------- ------- ------- ---- hippalus: ~#
-------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
-------
root@node-
* Switching the direction of flow and sending data into the namespace works:
root@node- licetus: ~# ip netns exec ns1 iperf -s -m ------- ------- ------- ------- ------- ------- ------- ---- ------- ------- ------- ------- ------- ------- ------- ----
-------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
-------
[ 4] local 10.246.112.101 port 5001 connected with 10.246.114.29 port 59454
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 6.06 GBytes 5.20 Gbits/sec
[ 4] MSS size 8948 bytes (MTU 8988 bytes, unknown interface)
root@node- hippalus: ~# iperf -c 10.246.112.101 ------- ------- ------- ------- ------- ------- ------- ---- ------- ------- ------- ------- ------- ------- ------- ----
-------
Client connecting to 10.246.112.101, TCP port 5001
TCP window size: 942 KByte (default)
-------
[ 3] local 10.246.114.29 port 59454 connected with 10.246.112.101 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 6.06 GBytes 5.20 Gbits/sec
* Using iperf to send data out of the netns after dropping tap mtu works:
root@node- licetus: ~# ip netns exec ns1 ip link set dev tap1 mtu 1500 licetus: ~# ip netns exec ns1 iperf -c 10.246.114.29 ------- ------- ------- ------- ------- ------- ------- ---- ------- ------- ------- ------- ------- ------- ------- ----
root@node-
-------
Client connecting to 10.246.114.29, TCP port 5001
TCP window size: 845 KByte (default)
-------
[ 3] local 10.246.112.101 port 51594 connected with 10.246.114.29 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 508 MBytes 426 Mbits/sec
root@node- hippalus: ~# iperf -s -m ------- ------- ------- ------- ------- ------- ------- ---- ------- ------- ------- ------- ------- ------- ------- ----
-------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
-------
[ 4] local 10.246.114.29 port 5001 connected with 10.246.112.101 port 51594
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.1 sec 508 MBytes 424 Mbits/sec
[ 4] MSS size 1448 bytes (MTU 1500 bytes, ethernet)