Bug 1925421 - [RFE][RHOSP16.1][OVN] Neutron OVN Vlan Transparency Enhancement - support 802.1ad
Summary: [RFE][RHOSP16.1][OVN] Neutron OVN Vlan Transparency Enhancement - support 802...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux Fast Datapath
Classification: Red Hat
Component: OVN
Version: FDP 21.A
Hardware: All
OS: All
high
high
Target Milestone: ---
: ---
Assignee: Ihar Hrachyshka
QA Contact: Jianlin Shi
URL:
Whiteboard:
Depends On: 1925375 1926839
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-02-05 07:45 UTC by Slawek Kaplonski
Modified: 2022-06-30 18:00 UTC (History)
10 users (show)

Fixed In Version: ovn-2021-21.06.0-12.el8fdp ovn2.13-20.12.0-171.el8fdp
Doc Type: Enhancement
Doc Text:
Clone Of: 1925375
Environment:
Last Closed: 2022-06-30 17:59:57 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker FD-1072 0 None None None 2021-10-06 21:20:30 UTC
Red Hat Product Errata RHBA-2022:5446 0 None None None 2022-06-30 18:00:24 UTC

Comment 1 Ihar Hrachyshka 2021-02-17 03:13:49 UTC
The idea to implement here is to introduce a LS port level (?) attribute to store the ethertype for the vlan network (default still to 0x8100), as we do for tag, then modify the code that pushes vlan tag to something like:

put_OFPAT11_PUSH_VLAN(out, htons(ETH_TYPE_VLAN_8021AD));
vlan_vid = ofpact_put_SET_VLAN_VID(ofpacts_p);

The reason to keep it per port is to accommodate for different ethertypes on different fabric networks. In most environments, we expect it to be the same though.

Comment 2 Ihar Hrachyshka 2021-03-30 01:31:39 UTC
u/s implementation: https://patchwork.ozlabs.org/project/ovn/list/?series=236429

Will need to follow up with a OSP level fix to support it for the described environment. The OSP patch would set ethtype via config file or API and would translate it into localnet port options:ethtype=8a88 if needed.

Comment 3 Ihar Hrachyshka 2021-05-06 02:58:36 UTC
Final patch merged: https://github.com/ovn-org/ovn/commit/50f4ea011622a63c5ac0eec200c4176b1afe6fb6

Comment 4 Jianlin Shi 2021-10-11 03:38:40 UTC
tested with following script:

systemctl start openvswitch
systemctl start ovn-northd
ovn-nbctl set-connection ptcp:6641
ovn-sbctl set-connection ptcp:6642
ovs-vsctl set open . external_ids:system-id=hv1 external_ids:ovn-remote=tcp:127.0.0.1:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=127.0.0.1
systemctl restart ovn-controller

ovs-vsctl set Open_vSwitch . other_config:vlan-limit=0

ovs-vsctl add-br br-provider
ovs-vsctl set open . external_ids:ovn-bridge-mappings=provider:br-provider

ovn-nbctl ls-add ls1
ovn-nbctl lsp-add ls1 ls1p1
ovn-nbctl lsp-set-addresses ls1p1 "00:00:00:01:01:01"

ovn-nbctl lsp-add ls1 ls1p2
ovn-nbctl lsp-set-addresses ls1p2 "00:00:00:01:01:02"
                                                                                                      
ovn-nbctl lsp-add ls1 ls1_ln "" 4                                                                     
ovn-nbctl lsp-set-options ls1_ln network_name=provider ethtype=802.11ad
ovn-nbctl lsp-set-type ls1_ln localnet                                                                
ovn-nbctl lsp-set-addresses ls1_ln unknown                                                            

ovn-nbctl set logical_switch ls1 other_config:vlan-passthru=true

ovs-vsctl add-port br-int ls1p1 -- set interface ls1p1 type=internal external_ids:iface-id=ls1p1
                                                                                                      
ip netns add ls1p1                                                                                    
ip link set ls1p1 netns ls1p1
ip netns exec ls1p1 ip link set ls1p1 address 00:00:00:01:01:01
ip netns exec ls1p1 ip link set ls1p1 up
ip netns exec ls1p1 ip addr add 1.1.1.1/24 dev ls1p1
                                                                                                      
ip netns exec ls1p1 ip link add link ls1p1 name ls1p1.3 type vlan id 3
ip netns exec ls1p1 ip link set ls1p1.3 up                                                            
ip netns exec ls1p1 ip addr add 1.1.3.1/24 dev ls1p1.3
                                                                                                      
ovs-vsctl add-port br-provider ext1 -- set interface ext1 type=internal
ip netns add ext1                                                                                     
ip link set ext1 netns ext1                                                                           
ip netns exec ext1 ip link set ext1 up                                                                
ip netns exec ext1 ip link add link ext1 name ext1.4 type vlan proto 802.1ad id 4
ip netns exec ext1 ip link set ext1.4 up                                                              
ip netns exec ext1 ip addr add 1.1.1.3/24 dev ext1.4
                                                                                                      
ip netns exec ext1 ip link add link ext1.4 name ext1.4.3 type vlan id 3
ip netns exec ext1 ip link set ext1.4.3 up                                                            
ip netns exec ext1 ip addr add 1.1.3.3/24 dev ext1.4.3

ip netns exec ls1p1 ping 1.1.1.3 -c 1                                                                 
ip netns exec ls1p1 ping 1.1.3.3 -c 1

failed on ovn-2021-21.03.0-21.el8:

[root@wsfd-advnetlab16 bz1925421]# rpm -qa | grep -E "openvswitch2.16|ovn-2021"
ovn-2021-21.03.0-21.el8fdp.x86_64
ovn-2021-central-21.03.0-21.el8fdp.x86_64
openvswitch2.16-2.16.0-10.el8fdp.x86_64
ovn-2021-host-21.03.0-21.el8fdp.x86_64
python3-openvswitch2.16-2.16.0-10.el8fdp.x86_64

+ ip netns exec ls1p1 ping 1.1.1.3 -c 1              
PING 1.1.1.3 (1.1.1.3) 56(84) bytes of data.                                                          
                                                                                                      
--- 1.1.1.3 ping statistics ---                                        
1 packets transmitted, 0 received, 100% packet loss, time 0ms                                         
                                                                                                      
+ ip netns exec ls1p1 ping 1.1.3.3 -c 1
PING 1.1.3.3 (1.1.3.3) 56(84) bytes of data.                    

--- 1.1.3.3 ping statistics ---                                                                 
1 packets transmitted, 0 received, 100% packet loss, time 0ms 


Verified on ovn-2021-21.06.0-29.el8fdp.x86_64:

[root@wsfd-advnetlab16 bz1925421]# rpm -qa | grep -E "openvswitch2.16|ovn-2021"
ovn-2021-central-21.06.0-29.el8fdp.x86_64
ovn-2021-21.06.0-29.el8fdp.x86_64
ovn-2021-host-21.06.0-29.el8fdp.x86_64
openvswitch2.16-2.16.0-10.el8fdp.x86_64
python3-openvswitch2.16-2.16.0-10.el8fdp.x86_64

+ ip netns exec ls1p1 ping 1.1.1.3 -c 1
PING 1.1.1.3 (1.1.1.3) 56(84) bytes of data.
64 bytes from 1.1.1.3: icmp_seq=1 ttl=64 time=1061 ms

--- 1.1.1.3 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1061.042/1061.042/1061.042/0.000 ms
+ ip netns exec ls1p1 ping 1.1.3.3 -c 1
PING 1.1.3.3 (1.1.3.3) 56(84) bytes of data.
64 bytes from 1.1.3.3: icmp_seq=1 ttl=64 time=1.24 ms

--- 1.1.3.3 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.244/1.244/1.244/0.000 ms

Comment 8 Jianlin Shi 2022-06-13 05:25:50 UTC
Verified on ovn22.03-22.03.0-52.el8:

[root@wsfd-advnetlab20 bz1925421]# rpm -qa | grep -E "openvswitch2.15|ovn22.03"
ovn22.03-host-22.03.0-52.el8fdp.x86_64
python3-openvswitch2.15-2.15.0-104.el8fdp.x86_64
ovn22.03-22.03.0-52.el8fdp.x86_64
ovn22.03-central-22.03.0-52.el8fdp.x86_64
openvswitch2.15-2.15.0-104.el8fdp.x86_64

+ ovn-nbctl lsp-add ls1 ls1_ln '' 4                                                                   
+ ovn-nbctl lsp-set-options ls1_ln network_name=provider ethtype=802.11ad                             
+ ovn-nbctl lsp-set-type ls1_ln localnet                                                              
+ ovn-nbctl lsp-set-addresses ls1_ln unknown                                                          
+ ovn-nbctl set logical_switch ls1 other_config:vlan-passthru=true                                    
+ ovs-vsctl add-port br-int ls1p1 -- set interface ls1p1 type=internal external_ids:iface-id=ls1p1    
+ ip netns add ls1p1                                                                                  
+ ip link set ls1p1 netns ls1p1                                                                       
+ ip netns exec ls1p1 ip link set ls1p1 address 00:00:00:01:01:01                                     
+ ip netns exec ls1p1 ip link set ls1p1 up                                                            
+ ip netns exec ls1p1 ip addr add 1.1.1.1/24 dev ls1p1                                                
+ ip netns exec ls1p1 ip link add link ls1p1 name ls1p1.3 type vlan id 3                              
+ ip netns exec ls1p1 ip link set ls1p1.3 up                                                          
+ ip netns exec ls1p1 ip addr add 1.1.3.1/24 dev ls1p1.3                                              
+ ovs-vsctl add-port br-provider ext1 -- set interface ext1 type=internal                             
+ ip netns add ext1                                                                                   
+ ip link set ext1 netns ext1                                                                         
+ ip netns exec ext1 ip link set ext1 up                                                              
+ ip netns exec ext1 ip link add link ext1 name ext1.4 type vlan proto 802.1ad id 4                   
+ ip netns exec ext1 ip link set ext1.4 up                                                            
+ ip netns exec ext1 ip addr add 1.1.1.3/24 dev ext1.4                                                
+ ip netns exec ext1 ip link add link ext1.4 name ext1.4.3 type vlan id 3                             
+ ip netns exec ext1 ip link set ext1.4.3 up                                                          
+ ip netns exec ext1 ip addr add 1.1.3.3/24 dev ext1.4.3                                              
+ ip netns exec ls1p1 ping 1.1.1.3 -c 1                                                               
PING 1.1.1.3 (1.1.1.3) 56(84) bytes of data.                                                          
64 bytes from 1.1.1.3: icmp_seq=1 ttl=64 time=1014 ms                                                 
                                                                                                      
--- 1.1.1.3 ping statistics ---                                                                       
1 packets transmitted, 1 received, 0% packet loss, time 0ms                                           
rtt min/avg/max/mdev = 1014.418/1014.418/1014.418/0.000 ms                                            
+ ip netns exec ls1p1 ping 1.1.3.3 -c 1                                                               
PING 1.1.3.3 (1.1.3.3) 56(84) bytes of data.                                                          
64 bytes from 1.1.3.3: icmp_seq=1 ttl=64 time=1.20 ms                                                 
                                                                                                      
--- 1.1.3.3 ping statistics ---                                                                       
1 packets transmitted, 1 received, 0% packet loss, time 0ms                                           
rtt min/avg/max/mdev = 1.195/1.195/1.195/0.000 ms

Comment 9 Jianlin Shi 2022-06-13 05:27:41 UTC
Verified on ovn-2021-21.12.0-73.el8:

+ ovn-nbctl lsp-add ls1 ls1_ln '' 4
+ ovn-nbctl lsp-set-options ls1_ln network_name=provider ethtype=802.11ad
+ ovn-nbctl lsp-set-type ls1_ln localnet
+ ovn-nbctl lsp-set-addresses ls1_ln unknown
+ ovn-nbctl set logical_switch ls1 other_config:vlan-passthru=true
+ ovs-vsctl add-port br-int ls1p1 -- set interface ls1p1 type=internal external_ids:iface-id=ls1p1
+ ip netns add ls1p1
+ ip link set ls1p1 netns ls1p1
+ ip netns exec ls1p1 ip link set ls1p1 address 00:00:00:01:01:01
+ ip netns exec ls1p1 ip link set ls1p1 up
+ ip netns exec ls1p1 ip addr add 1.1.1.1/24 dev ls1p1
+ ip netns exec ls1p1 ip link add link ls1p1 name ls1p1.3 type vlan id 3
+ ip netns exec ls1p1 ip link set ls1p1.3 up
+ ip netns exec ls1p1 ip addr add 1.1.3.1/24 dev ls1p1.3
+ ovs-vsctl add-port br-provider ext1 -- set interface ext1 type=internal
+ ip netns add ext1
+ ip link set ext1 netns ext1
+ ip netns exec ext1 ip link set ext1 up
+ ip netns exec ext1 ip link add link ext1 name ext1.4 type vlan proto 802.1ad id 4
+ ip netns exec ext1 ip link set ext1.4 up
+ ip netns exec ext1 ip addr add 1.1.1.3/24 dev ext1.4
+ ip netns exec ext1 ip link add link ext1.4 name ext1.4.3 type vlan id 3
+ ip netns exec ext1 ip link set ext1.4.3 up
+ ip netns exec ext1 ip addr add 1.1.3.3/24 dev ext1.4.3
+ ip netns exec ls1p1 ping 1.1.1.3 -c 1
PING 1.1.1.3 (1.1.1.3) 56(84) bytes of data.
64 bytes from 1.1.1.3: icmp_seq=1 ttl=64 time=1042 ms

--- 1.1.1.3 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1041.532/1041.532/1041.532/0.000 ms
+ ip netns exec ls1p1 ping 1.1.3.3 -c 1
PING 1.1.3.3 (1.1.3.3) 56(84) bytes of data.
64 bytes from 1.1.3.3: icmp_seq=1 ttl=64 time=1.12 ms

--- 1.1.3.3 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.119/1.119/1.119/0.000 ms
[root@wsfd-advnetlab20 bz1925421]# rpm -qa | grep -E "openvswitch2.15|ovn-2021"
python3-openvswitch2.15-2.15.0-104.el8fdp.x86_64
ovn-2021-central-21.12.0-73.el8fdp.x86_64
ovn-2021-host-21.12.0-73.el8fdp.x86_64
openvswitch2.15-2.15.0-104.el8fdp.x86_64
ovn-2021-21.12.0-73.el8fdp.x86_64

Comment 10 Jianlin Shi 2022-06-13 05:32:14 UTC
also verified on ovn22.03-22.03.0-52.el9:

+ ovn-nbctl lsp-add ls1 ls1_ln '' 4                                                                   
+ ovn-nbctl lsp-set-options ls1_ln network_name=provider ethtype=802.11ad                             
+ ovn-nbctl lsp-set-type ls1_ln localnet                                                              
+ ovn-nbctl lsp-set-addresses ls1_ln unknown                                                          
+ ovn-nbctl set logical_switch ls1 other_config:vlan-passthru=true                                    
+ ovs-vsctl add-port br-int ls1p1 -- set interface ls1p1 type=internal external_ids:iface-id=ls1p1    
+ ip netns add ls1p1                                                                                  
+ ip link set ls1p1 netns ls1p1                                                                       
+ ip netns exec ls1p1 ip link set ls1p1 address 00:00:00:01:01:01                                     
+ ip netns exec ls1p1 ip link set ls1p1 up                                                            
+ ip netns exec ls1p1 ip addr add 1.1.1.1/24 dev ls1p1                                                
+ ip netns exec ls1p1 ip link add link ls1p1 name ls1p1.3 type vlan id 3                              
+ ip netns exec ls1p1 ip link set ls1p1.3 up                                                          
+ ip netns exec ls1p1 ip addr add 1.1.3.1/24 dev ls1p1.3                                              
+ ovs-vsctl add-port br-provider ext1 -- set interface ext1 type=internal                             
+ ip netns add ext1                                                                                   
+ ip link set ext1 netns ext1                                                                         
+ ip netns exec ext1 ip link set ext1 up                                                              
+ ip netns exec ext1 ip link add link ext1 name ext1.4 type vlan proto 802.1ad id 4                   
+ ip netns exec ext1 ip link set ext1.4 up                                                            
+ ip netns exec ext1 ip addr add 1.1.1.3/24 dev ext1.4                                                
+ ip netns exec ext1 ip link add link ext1.4 name ext1.4.3 type vlan id 3                             
+ ip netns exec ext1 ip link set ext1.4.3 up                                                          
+ ip netns exec ext1 ip addr add 1.1.3.3/24 dev ext1.4.3                                              
+ ip netns exec ls1p1 ping 1.1.1.3 -c 1                                                               
PING 1.1.1.3 (1.1.1.3) 56(84) bytes of data.                                                          
64 bytes from 1.1.1.3: icmp_seq=1 ttl=64 time=1010 ms                                                 
                                                                                                      
--- 1.1.1.3 ping statistics ---                                                                       
1 packets transmitted, 1 received, 0% packet loss, time 0ms                                           
rtt min/avg/max/mdev = 1009.987/1009.987/1009.987/0.000 ms                                            
+ ip netns exec ls1p1 ping 1.1.3.3 -c 1                                                               
PING 1.1.3.3 (1.1.3.3) 56(84) bytes of data.                                                          
64 bytes from 1.1.3.3: icmp_seq=1 ttl=64 time=1.22 ms                                                 
                                                                                                      
--- 1.1.3.3 ping statistics ---                                                                       
1 packets transmitted, 1 received, 0% packet loss, time 0ms                                           
rtt min/avg/max/mdev = 1.221/1.221/1.221/0.000 ms                                                     
[root@wsfd-advnetlab18 bz1925421]# rpm -qa | grep -E "openvswitch2.17|ovn"                            
ovn22.03-22.03.0-52.el9fdp.x86_64                                                                     
openvswitch2.17-2.17.0-22.el9fdp.x86_64                                                               
ovn22.03-central-22.03.0-52.el9fdp.x86_64                                                             
ovn22.03-host-22.03.0-52.el9fdp.x86_64

Comment 12 errata-xmlrpc 2022-06-30 17:59:57 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (ovn bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2022:5446


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