Bug 1720371

Summary: [RFE] OVN: ability to set GENEVE/VXLAN port
Product: Red Hat Enterprise Linux Fast Datapath Reporter: Dan Williams <dcbw>
Component: ovn2.11Assignee: lorenzo bianconi <lorenzo.bianconi>
Status: CLOSED ERRATA QA Contact: haidong li <haili>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: FDP 19.ECC: atragler, ctrautma, jishi, kfida, lorenzo.bianconi, nusiddiq, ovs-qe, qding, tredaelli
Target Milestone: ---Keywords: FutureFeature
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: ovn2.11-2.11.0-23.el7fdn Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-08-20 11:05:11 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 Dan Williams 2019-06-13 20:44:18 UTC
OpenShift needs to be able to change the default VXLAN port, and even though we we'll be using GENEVE with OVN we likely need the ability to change the port there too.

Unless I'm mistaken you cannot set external-ids that will change the port, just the encap source IP. So perhaps we could enhance ovn to:

ovs-vsctl set Open_vSwitch . external_ids:ovn-encap-type=geneve:1234

and chassis_run() would be able to parse that out, stuff the port type into a new sbrec in the Encap table, and then poke that into OVS as options:dst_port=1234.

Comment 5 haidong li 2019-07-26 08:29:59 UTC
Hi Lorenzo,
   Is this the new command below?I have configured this on both chassises,and restart openvswitch,the traffic can't pass.The traffic can pass if I set the geneve without port number.Can you tell the whole configuration if I missed anything?Thanks!

ovs-vsctl set Open_vSwitch . external_ids:ovn-encap-type=geneve:1234

Comment 6 lorenzo bianconi 2019-07-29 17:06:45 UTC
(In reply to haidong li from comment #5)
> Hi Lorenzo,
>    Is this the new command below?I have configured this on both
> chassises,and restart openvswitch,the traffic can't pass.The traffic can
> pass if I set the geneve without port number.Can you tell the whole
> configuration if I missed anything?Thanks!
> 
> ovs-vsctl set Open_vSwitch . external_ids:ovn-encap-type=geneve:1234

Hi Haidong,

you can set vxlan/geneve destination udp port with ovn-sbctl, e.g:

$ovn-sbctl set encap <UUID> options:dst_port=12345

Comment 7 haidong li 2019-07-30 03:10:46 UTC
The feature is verified on the latest version:

[root@dell-per730-19 ~]# uname -a
Linux dell-per730-19.rhts.eng.pek2.redhat.com 3.10.0-1061.el7.x86_64 #1 SMP Thu Jul 11 21:02:44 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@dell-per730-19 ~]# rpm -qa |grep openvswitch
kernel-kernel-networking-openvswitch-ovn-1.0-130.noarch
openvswitch-selinux-extra-policy-1.0-13.el7fdp.noarch
openvswitch2.11-2.11.0-18.el7fdp.x86_64
[root@dell-per730-19 ~]# rpm -qa |grep ovn
kernel-kernel-networking-openvswitch-ovn-1.0-130.noarch
ovn2.11-central-2.11.0-26.el7fdp.x86_64
ovn2.11-2.11.0-26.el7fdp.x86_64
ovn2.11-host-2.11.0-26.el7fdp.x86_64
[root@dell-per730-19 ~]# 
[root@dell-per730-19 ~]# ovn-sbctl set encap 12853834-8a1f-4799-ae55-f4069d32462a options:dst_port=12345
ovn-sbctl: no row "12853834-8a1f-4799-ae55-f4069d32462a" in table Encap
[root@dell-per730-19 ~]# ovn-sbctl list encap
_uuid               : 0cdb7b86-184f-4ce7-9d43-bb0f9a425a3e
chassis_name        : "hv0"
ip                  : "20.0.0.2"
options             : {csum="true"}
type                : geneve

_uuid               : 3a65dc0e-84f6-4684-8768-c4b06dbe826d
chassis_name        : "12853834-8a1f-4799-ae55-f4069d32462a"
ip                  : "20.0.0.1"
options             : {csum="true"}
type                : geneve
[root@dell-per730-19 ~]# ovn-sbctl set encap 3a65dc0e-84f6-4684-8768-c4b06dbe826d options:dst_port=12345
[root@dell-per730-19 ~]# ovn-sbctl set encap 0cdb7b86-184f-4ce7-9d43-bb0f9a425a3e options:dst_port=12345
[root@dell-per730-19 ~]# ovn-sbctl show
Chassis "hv0"
    hostname: "dell-per730-57.rhts.eng.pek2.redhat.com"
    Encap geneve
        ip: "20.0.0.2"
        options: {csum="true", dst_port="12345"}
    Port_Binding "lsp2"
Chassis "12853834-8a1f-4799-ae55-f4069d32462a"
    hostname: "dell-per730-19.rhts.eng.pek2.redhat.com"
    Encap geneve
        ip: "20.0.0.1"
        options: {csum="true", dst_port="12345"}
    Port_Binding "lsp1"
[root@dell-per730-19 ~]# 

[root@dell-per730-19 ~]# tcpdump -ei p4p1 -nn

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on p4p1, link-type EN10MB (Ethernet), capture size 262144 bytes
22:44:04.280633 90:e2:ba:29:c0:ac > f8:f2:1e:02:c4:80, ethertype IPv4 (0x0800), length 156: 20.0.0.2.52816 > 20.0.0.1.12345: UDP, length 114
22:44:04.280696 f8:f2:1e:02:c4:80 > 90:e2:ba:29:c0:ac, ethertype IPv4 (0x0800), length 156: 20.0.0.1.2737 > 20.0.0.2.12345: UDP, length 114
22:44:05.280586 90:e2:ba:29:c0:ac > f8:f2:1e:02:c4:80, ethertype IPv4 (0x0800), length 156: 20.0.0.2.52816 > 20.0.0.1.12345: UDP, length 114
22:44:05.280648 f8:f2:1e:02:c4:80 > 90:e2:ba:29:c0:ac, ethertype IPv4 (0x0800), length 156: 20.0.0.1.2737 > 20.0.0.2.12345: UDP, length 114
22:44:06.280609 90:e2:ba:29:c0:ac > f8:f2:1e:02:c4:80, ethertype IPv4 (0x0800), length 156: 20.0.0.2.52816 > 20.0.0.1.12345: UDP, length 114
22:44:06.280682 f8:f2:1e:02:c4:80 > 90:e2:ba:29:c0:ac, ethertype IPv4 (0x0800), length 156: 20.0.0.1.2737 > 20.0.0.2.12345: UDP, length 114
22:44:07.280585 90:e2:ba:29:c0:ac > f8:f2:1e:02:c4:80, ethertype IPv4 (0x0800), length 156: 20.0.0.2.52816 > 20.0.0.1.12345: UDP, length 114
22:44:07.280662 f8:f2:1e:02:c4:80 > 90:e2:ba:29:c0:ac, ethertype IPv4 (0x0800), length 156: 20.0.0.1.2737 > 20.0.0.2.12345: UDP, length 114
22:44:08.280675 90:e2:ba:29:c0:ac > f8:f2:1e:02:c4:80, ethertype IPv4 (0x0800), length 156: 20.0.0.2.52816 > 20.0.0.1.12345: UDP, length 114
22:44:08.280730 f8:f2:1e:02:c4:80 > 90:e2:ba:29:c0:ac, ethertype IPv4 (0x0800), length 156: 20.0.0.1.2737 > 20.0.0.2.12345: UDP, length 114

Comment 9 errata-xmlrpc 2019-08-20 11:05:11 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, 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-2019:2527