Bug 1339178

Summary: RFE: add Geneve support
Product: Red Hat Enterprise Linux 7 Reporter: Thadeu Lima de Souza Cascardo <cascardo>
Component: iprouteAssignee: Phil Sutter <psutter>
Status: CLOSED ERRATA QA Contact: Jaroslav Aster <jaster>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.3CC: aloughla, atragler, jtluka, mleitner, psutter, rkhan
Target Milestone: rcKeywords: FutureFeature
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: iproute-3.10.0-73.el7 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1371170 (view as bug list) Environment:
Last Closed: 2016-11-03 23:39: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:
Bug Depends On: 1283886    
Bug Blocks:    

Description Thadeu Lima de Souza Cascardo 2016-05-24 10:38:27 UTC
Geneve netdev support is about to be added in RHEL7.3 kernel, so it should be supported by iproute in order to be able to create those tunnels. That's specially important for openvswitch tests with such tunnels.

Comment 3 Phil Sutter 2016-06-21 21:11:44 UTC
At least the following upstream commits need to be backported:

908755dc49df0 iproute2: GENEVE support
f4c05c2e99538 iplink_geneve: add ttl configuration at link creation
f4739b2ee780e iplink_geneve: add tos configuration at link creation
906ac5437ab8e geneve: add support for IPv6 link partners
9450c5ec63b0c geneve: add support for lwt tunnel creation and dst port selection
56f5daac98da0 ip: code cleanup
a418e451643e7 make format_host non-reentrant by default
325d02b44ce31 geneve: Add support for configuring UDP checksums.
29bb2373a8777 geneve: add support to set flow label
2642b6b03e546 geneve: fix IPv6 remote address reporting

Comment 5 Jaroslav Aster 2016-08-10 12:27:25 UTC
Hi Phil,

man-page ip-link is incomplete for geneve protocol and it needs to be updated. There are less options in ip-link man-page for geneve protocol than command ip link geneve help shows. Missing options, which are not in ip-link man-page, are

dstport
[no]external
[no]udpcsum
[no]udp6zerocsumtx
[no]udp6zerocsumrx

Documentation between ip link help and man page should be consistent. Switching it to assigned state.

Functionality seems to be ok.

Comment 7 Jaroslav Aster 2016-08-10 14:45:53 UTC
If flowlabel for ipv6 is set, iproute does not show it.

# ip link add test type geneve id 10 remote _IPv6_ADDRESS_ flowlabel 10
# ip -d link show test
54: test: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether e6:71:0a:04:ba:5b brd ff:ff:ff:ff:ff:ff promiscuity 0 
    geneve id 10 remote _IPV6_ADDRESS_ dstport 6081 noudpcsum noudp6zerocsumtx noudp6zerocsumrx addrgenmode eui64

Comment 8 Phil Sutter 2016-08-11 23:22:51 UTC
Hi Jaroslav,

(In reply to Jaroslav Aster from comment #5)
> Hi Phil,
> 
> man-page ip-link is incomplete for geneve protocol and it needs to be
> updated. There are less options in ip-link man-page for geneve protocol than
> command ip link geneve help shows. Missing options, which are not in ip-link
> man-page, are
> 
> dstport
> [no]external
> [no]udpcsum
> [no]udp6zerocsumtx
> [no]udp6zerocsumrx
> 
> Documentation between ip link help and man page should be consistent.
> Switching it to assigned state.
> 
> Functionality seems to be ok.

I've sent a patch adding the missing documentation bits upstream.


(In reply to Jaroslav Aster from comment #7)
> If flowlabel for ipv6 is set, iproute does not show it.
> 
> # ip link add test type geneve id 10 remote _IPv6_ADDRESS_ flowlabel 10
> # ip -d link show test
> 54: test: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT
> qlen 1000
>     link/ether e6:71:0a:04:ba:5b brd ff:ff:ff:ff:ff:ff promiscuity 0 
>     geneve id 10 remote _IPV6_ADDRESS_ dstport 6081 noudpcsum
> noudp6zerocsumtx noudp6zerocsumrx addrgenmode eui64

Hmm. I can't reproduce this:

# ip link add test type geneve id 10 remote feed:babe::1 flowlabel 10
# ip -d link show test
3: test: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether 7a:9a:20:70:1b:e5 brd ff:ff:ff:ff:ff:ff promiscuity 0 
    geneve id 10 remote feed:babe::1 flowlabel 0xa dstport 6081 udpcsum noudp6zerocsumtx noudp6zerocsumrx addrgenmode eui64 

What kernel version are you testing against? You need at least kernel-3.10.0-433.el7 to have support for flowlabel in there.

Thanks, Phil

Comment 9 Jaroslav Aster 2016-08-15 11:41:56 UTC
Hi Phil,

ok, I can confirm it on new kernel. Thanks. So only doc missing.

# uname -r
3.10.0-489.el7.s390x

# ip link add test type geneve id 10 remote feed:babe::1 flowlabel 10

# ip -d link show test
15: test: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether 26:f0:e0:a9:77:6d brd ff:ff:ff:ff:ff:ff promiscuity 0 
    geneve id 10 remote feed:babe::1 flowlabel 0xa dstport 6081 udpcsum noudp6zerocsumtx noudp6zerocsumrx addrgenmode eui64

Comment 10 Jaroslav Aster 2016-08-23 13:19:08 UTC
Hi Phil,

everything seems to be good, except aarch64.

# uname -r
4.5.0-3.el7.aarch64

# ip link add test type geneve id 10 remote feed:babe::1 flowlabel 10

# ip -d link show test
119: test: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether 4e:f2:18:d4:a9:d2 brd ff:ff:ff:ff:ff:ff promiscuity 0 
    geneve id 10 remote feed:babe::1 dstport 6081 noudpcsum noudp6zerocsumtx noudp6zerocsumrx addrgenmode eui64

Could you confirm to me, that aarch64's kernel does not support it? Thanks.

Comment 11 Phil Sutter 2016-08-26 12:38:29 UTC
Hi Jaroslav,

(In reply to Jaroslav Aster from comment #10)
> Hi Phil,
> 
> everything seems to be good, except aarch64.
> 
> # uname -r
> 4.5.0-3.el7.aarch64
> 
> # ip link add test type geneve id 10 remote feed:babe::1 flowlabel 10
> 
> # ip -d link show test
> 119: test: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT
> qlen 1000
>     link/ether 4e:f2:18:d4:a9:d2 brd ff:ff:ff:ff:ff:ff promiscuity 0 
>     geneve id 10 remote feed:babe::1 dstport 6081 noudpcsum noudp6zerocsumtx
> noudp6zerocsumrx addrgenmode eui64
> 
> Could you confirm to me, that aarch64's kernel does not support it? Thanks.

ARM64 kernel development is still quite unclear in our team, but looking at the most recent branches of git://git.app.eng.bos.redhat.com/rhelsa7.git, it seems that GENEVE is indeed not enabled there. Please feel free to file a ticket if that blocks you from testing. I guess at some point ARM64 kernel configs have to be aligned with the other supported architectures anyway, but as said this is all pretty unclear at this point.

Thanks, Phil

Comment 14 errata-xmlrpc 2016-11-03 23:39: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://rhn.redhat.com/errata/RHEA-2016-2162.html