Neutron OVS agent - Dont Fragment flag

https://blueprints.launchpad.net/neutron/+spec/neutron-ovs-agent-df-gre-vxlan

Overlay network introduce an additionnal overhead. Depends on the underlying protocol and physical transport the ‘real’ MTU may have strong constraints. However, from an instance, or a cloud user point of view, this should not be a problem. And the Ethernet MTU inside VM should be, when possible, at least 1500 bytes.

Thus when using overlay protocol -here GRE and VXLAN- that use IP, it is possible under certain conditions to leverage the Dont Fragment -DF- bit. Once that bit will be set to 0, it will allow encapsulated packet to be split by the IP stack of the hypervisor. The main goal is to allow 1500 bytes MTU overlayed network to cross 1500 byte MTU physical network.

Problem description

The problem is to span overlayed network on physical network with a smaller (or equal MTU). As said before, the main usecase is to carry 1500 bytes MTU virtual network over 1500 bytes MTU physical network. It’s mainly required on older network part. Once the network will be upgraded, the MTU on physical adapter will be raised, and no fragementation will happen anymore.

Proposed change

Set the options:df_default option in OVS when creating VXLAN and GRE tunnels.

Alternatives

Use iptables with -j DF –clear somewehere.

Data model impact

None.

REST API impact

None.

Security impact

None.

Notifications impact

None.

Other end user impact

None.

Performance Impact

IP fragmentation could impact the network efficiency and causes some additional load on network nodes

Other deployer impact

It will ease some deployments by being able to span virtual networks over MTU-limited physical network.

Developer impact

None.

Implementation

Assignee(s)

Primary assignee:

pierre-rognant

Work Items

The work concern only the OVS agent. No impact on other neutron component.

Dependencies

None.

Testing

Ensure that the default behaviour remains unchanged.

Documentation Impact

Add the new ‘dont_fragment’ flag in the documentation.

References

OVS reference documentation: * http://openvswitch.org/ovs-vswitchd.conf.db.5.pdf (p. 24)