Bug 1914388 - VLAN Transparency: neutron network mtu should be 4 bytes lower for transparent-vlan networks
Summary: VLAN Transparency: neutron network mtu should be 4 bytes lower for transparen...
Keywords:
Status: CLOSED DUPLICATE of bug 1922497
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: documentation
Version: 16.1 (Train)
Hardware: Unspecified
OS: Unspecified
high
high
Target Milestone: ---
: ---
Assignee: James Smith
QA Contact: RHOS Documentation Team
URL:
Whiteboard: docs-accepted
Depends On:
Blocks: 1846019
TreeView+ depends on / blocked
 
Reported: 2021-01-08 17:33 UTC by Eduardo Olivares
Modified: 2021-02-17 19:21 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-02-17 19:21:03 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Eduardo Olivares 2021-01-08 17:33:32 UTC
Description of problem:
When VLAN transparency is configured (only supported on OVN, see BZ1846019), tenant or provider networks can be created with is_vlan_transparent=true
In those cases, a VLAN can be manually created on VM instances. For example:
- vm1, whose port eth0 is connected to tenant network net1 - vlan10 is created on eth0 with IP 192.168.0.10
- vm2, whose port eth0 is connected to tenant network net1 - vlan10 is created on eth0 with IP 192.168.0.20

Connectivity between 192.168.0.10 and 192.168.0.20 should work fine.
However, there might be a problem with MTU due to the 4 bytes added by the vlan 10:
- neutron configured mtu is 1500:
[root@controller-1 ~]# crudini --get /var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron.conf DEFAULT global_physnet_mtu                                                                                                       
1500
- in that case, neutron network mtu will 1500 too:
(overcloud) [stack@undercloud-0 ~]$ openstack network show db0f1ae2-2a58-4590-9f92-0beb741c1e2f -c mtu -f value
1500
- eth0 default MTU will be 1500 too

In this case, compute interface mtu should be configured to 1504 or higher in order to avoid packet drops. With a lower value, VLAN header with 4 bytes are added to packets with size 1500 and they are dropped on the compute node.

Comment 1 Sadique Puthen 2021-01-09 06:44:31 UTC
Isn't it better to advise to use 1496 (like we set for vxlan) as MTU for networks than requesting to set 1504 as the MTU for infrastructure?

Comment 2 Eduardo Olivares 2021-01-11 08:57:52 UTC
(In reply to Sadique Puthen from comment #1)
> Isn't it better to advise to use 1496 (like we set for vxlan) as MTU for
> networks than requesting to set 1504 as the MTU for infrastructure?

You are right. Thanks.

Let me add some more details about this bug:
- There is an upstream bug to modify default neutron network's mtu value when vlan transparency is enabled: https://bugs.launchpad.net/neutron/+bug/1906318
This change is not expected for 16.1.4 (when VLAN transparency support for OVN is expected, BZ1846019), so this documentation bug is needed.

- With OVN, the following default MTU values are used at network creation:
flat and vlan networks -> default_mtu = global_physnet_mtu (1500 in the example from the description)
geneve networks -> default_mtu = global_physnet_mtu - 58 (1442) -> the reason for this difference is the lenght of the geneve headers added to the packet
If vlan transparency is enabled and underlay network interfaces mtu is global_physnet_mtu (1500), some packets might be dropped. 

- Two alternative solutions that could be documented:
a. reduce network mtu in 4 bytes at network creation when vlan-transparency is enabled:
openstack network create --mtu 1438 --transparent-vlan n1
b. increase underlay network interfaces mtu:
[root@compute-0 ~]# ip link set dev ens4 mtu 1504


Note You need to log in before you can comment on or make changes to this bug.