Support Support Downloads Knowledge Base Case Manager My Juniper Community

Knowledge Base

Search our Knowledge Base sites to find answers to your questions.

Ask All Knowledge Base Sites All Knowledge Base Sites JunosE Defect (KA)Knowledge BaseSecurity AdvisoriesTechnical BulletinsTechnotes Sign in to display secure content and recently viewed articles

[Contrail] How to modify MTU size on DPDK vRouter to support jumbo non-fragmented packets

0

0

Article ID: KB34020 KB Last Updated: 25 Mar 2019Version: 1.0
Summary:

In a contrail cluster, tenants often want jumbo non-fragmented packets to pass from end to end due to the requirement of certain applications. This requires all network interfaces along the L3 forwarding path to have a proper MTU value (for example, 9160) configured to support jumbo frames. This article describes, for contrail version 3.2.x and 3.0.x, how to change the default MTU size from 1500 to 9160 on a DPDK compute node so that jumbo PING can succeed without fragmentation. We assume that all compute nodes, switches or routers along the forwarding path have already had MTU configured properly on the corresponding network interfaces. 

Symptoms:

Tenant starts a jumbo non-fragmented PING from a VM to another VM located in a different compute node. The following error is observed:

ubuntu@ubuntu-charging-dpdk:~$ ping 10.85.190.104 -M do -s 8000
PING 10.85.190.104 (10.85.190.104) 8000(8028) bytes of data.
ping: local error: Message too long, mtu=1500
ping: local error: Message too long, mtu=1500
ping: local error: Message too long, mtu=1500


This is because the local network interface has a default value of 1500 configured.

ubuntu@ubuntu-charging-dpdk:~$ ifconfig ens3
ens3      Link encap:Ethernet  HWaddr 02:3d:d8:d5:6d:ca 
          inet addr:10.85.190.105  Bcast:10.85.190.127  Mask:255.255.255.224
          inet6 addr: fe80::3d:d8ff:fed5:6dca/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:613 errors:0 dropped:0 overruns:0 frame:0
          TX packets:392 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:476148 (476.1 KB)  TX bytes:30904 (30.9 KB)


But even after increasing the MTU size to 9160, the PING still failed with a similar error message:

ubuntu@ubuntu-charging-dpdk:~$ sudo ifconfig ens3 mtu 9160
ubuntu@ubuntu-charging-dpdk:~$ ifconfig ens3
ens3      Link encap:Ethernet  HWaddr 02:3d:d8:d5:6d:ca 
          inet addr:10.85.190.105  Bcast:10.85.190.127  Mask:255.255.255.224
          inet6 addr: fe80::3d:d8ff:fed5:6dca/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9160  Metric:1
          RX packets:935 errors:0 dropped:0 overruns:0 frame:0
          TX packets:581 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:503536 (503.5 KB)  TX bytes:53018 (53.0 KB)

ubuntu@ubuntu-charging-dpdk:~$ ping 10.85.190.104 -M do -s 8000
PING 10.85.190.104 (10.85.190.104) 8000(8028) bytes of data.
ping: local error: Message too long, mtu=1454
ping: local error: Message too long, mtu=1454
Solution:

From the compute node's prospective, we need to make sure physical interfaces in the underlay network supports jumbo packets with a proper MTU configured. In the following example, we have two physical interfaces p1p2 and p2p1 configured in LACP bundle bond0, where we need to set MTU value to 9160 on both NIC ports as well bond0, bond0.<vlan> and vhost0. Please note that a vrouter restart is necessary, i.e., service supervisor-vrouter restart, for DPDK compute to load MTU settings correctly. The command, 'ifconfig <eth> mtu <mtu_size>' does not work for physical interfaces p1p2 or p2p1 which has DPDK driver instead of OS driver loaded.

Snippet before specifying MTU in /etc/network/interfaces file:

root@bcomp80:/etc/network# grep bond0 -C2 /etc/network/interfaces
iface p2p1 inet manual
    down ip addr flush dev p2p1
    bond-master bond0

--
iface p1p2 inet manual
    down ip addr flush dev p1p2
    bond-master bond0

​auto bond0

iface bond0 inet manual
    hwaddress 14:02:ec:66:b8:dc
    down ip addr flush dev bond0
    bond-slaves none
    bond-miimon 100
-- 
auto bond0.722
iface bond0.722 inet manual
    vlan-raw-device bond0


Snippet after specifying large MTU values on p2p1, p1p2, vhost0, bond0 and bond0.<vlan>

root@bcomp80:/etc/network# grep 9160 -C3 /etc/network/interfaces

iface p2p1 inet manual
    down ip addr flush dev p2p1
    bond-master bond0
    mtu 9160

auto p1p2
iface p1p2 inet manual
    down ip addr flush dev p1p2
    bond-master bond0
    mtu 9160

auto bond0
iface bond0 inet manual
--
    bond-miimon 100
    bond-mode 802.3ad
    bond-xmit_hash_policy layer3+4
    mtu 9160
   

auto bond0.722
iface bond0.722 inet manual
    vlan-raw-device bond0
    mtu 9160

auto vhost0
iface vhost0 inet static
--
    network_name contrail
    dns-nameservers 172.22.199.11
    post-up ip link set vhost0 address 14:02:ec:66:b8:dc
    mtu 9160


After vrouter restarts and loads the jumbo MTU on all those interfaces, jumbo packets PING test now passes from the tenant side:

​ubuntu@ubuntu-charging-dpdk:~$ ping 10.85.190.104 -M do -s 8000
PING 10.85.190.104 (10.85.190.104) 8000(8028) bytes of data.
8008 bytes from 10.85.190.104: icmp_seq=1 ttl=64 time=2.34 ms
8008 bytes from 10.85.190.104: icmp_seq=2 ttl=64 time=0.724 ms
8008 bytes from 10.85.190.104: icmp_seq=3 ttl=64 time=0.540 ms
8008 bytes from 10.85.190.104: icmp_seq=4 ttl=64 time=0.494 ms
8008 bytes from 10.85.190.104: icmp_seq=5 ttl=64 time=0.557 ms
8008 bytes from 10.85.190.104: icmp_seq=6 ttl=64 time=0.667 ms
^C
--- 10.85.190.104 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5001ms
rtt min/avg/max/mdev = 0.494/0.887/2.341/0.655 ms
Comment on this article > Affected Products Browse the Knowledge Base for more articles related to these product categories. Select a category to begin.

Getting Up and Running with Junos

Getting Up and Running with Junos Security Alerts and Vulnerabilities Product Alerts and Software Release Notices Problem Report (PR) Search Tool EOL Notices and Bulletins JTAC User Guide Customer Care User Guide Pathfinder SRX High Availability Configurator SRX VPN Configurator Training Courses and Videos End User Licence Agreement Global Search