Bug 2238494

Summary: E/W routed traffic does not handle different network MTU sizes
Product: Red Hat Enterprise Linux Fast Datapath Reporter: Rodolfo Alonso <ralonsoh>
Component: ovn22.12Assignee: lorenzo bianconi <lorenzo.bianconi>
Status: CLOSED DEFERRED QA Contact: Jianlin Shi <jishi>
Severity: medium Docs Contact:
Priority: medium    
Version: FDP 22.LCC: ctrautma, jiji, lorenzo.bianconi, mmichels, rsafrono
Target Milestone: ---Keywords: Reopened
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2024-03-19 20:35:21 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Rodolfo Alonso 2023-09-12 08:29:13 UTC
Description of problem:
The E/W routed traffic between two networks (not GW networks) cannot handle networks with different MTU sizes. The flag "ovn_emit_need_to_frag" is configured in the Neutron configuration (although this is affecting only to the GW ports).

Even if the packets sent have DF (Do-Not-Fragment bit) unset, the ICMP packets are not reaching the port in the network with lower MTU.

Version-Release number of selected component (if applicable):
* RHEL 9.0
* OSP17.1
* ovn-nbctl 22.12.1
* Open vSwitch Library 3.0.90
* DB Schema 7.0.0

How reproducible:
See steps to reproduce.

Steps to Reproduce:
1. Deploy an OpenStack environment, using any OVN (geneve, vxlan) backend type: https://rhos-ci-jenkins.lab.eng.tlv2.redhat.com/view/QE/view/OSP17.1/
2. Create two networks and one router between them. The MTUs must be different
  $ openstack network create --mtu 1500 net1
  $ openstack network create --mtu 1200 net2
  $ openstack subnet create --network net1 --subnet-range 10.0.201.0/28 snet1
  $ openstack subnet create --network net2 --subnet-range 10.0.202.0/28 snet2
  $ openstack router create router1
  $ openstack router add subnet router1 snet1
  $ openstack router add subnet router1 snet2
3. Spawn two VMs, each one in a different network
  $ openstack server create --network net1 --flavor cirros --image cirros server1
  $ openstack server create --network net2 --flavor cirros --image cirros server2
4. Access the VMs and ping from server1 (MTU 1500) to server2 (MTU 1200). Use the "ping -M dont" flag to unset the DF flag.

Actual results:
The datapath flow is received in the compute node of server2: https://paste.opendev.org/show/bVhsu1RdXnF7tquQN4Hg/. However, the TAP interface of server2 does not receive any packet. When the MTU is 1200 or lower, this TAP interface receives the ping packets; e.g.: https://paste.opendev.org/show/bdblIQENJeUp2kWio7Ac/

Expected results:
OVN should fragment the traffic and sent the fragments to the 1200 TAP interface, that should be received by server2.

Additional info:
---

Comment 3 OVN Bot 2024-02-14 21:16:15 UTC
This issue is being closed as an automatic process due to the issue's age. If you wish to re-open this issue, please do so in Jira (https://issues.redhat.com) in the 'FDP' project. Please be sure to set the component to the latest OVN version where this issue is known to occur. If this is a feature request or improvement, please set the component to 'OVN'.