Bug 1827090

Summary: ovn should discards any prefixes for which the preferred lifetime is greater than the valid lifetime
Product: Red Hat Enterprise Linux Fast Datapath Reporter: Jianlin Shi <jishi>
Component: ovn2.13Assignee: lorenzo bianconi <lorenzo.bianconi>
Status: CLOSED ERRATA QA Contact: Jianlin Shi <jishi>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: FDP 20.DCC: ctrautma, jishi, ralongi
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: ovn2.13-2.13.0-24.el7fdn Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-05-26 14:07:18 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 Jianlin Shi 2020-04-23 09:13:47 UTC
Description of problem:
ovn should discards any prefixes for which the preferred lifetime is greater than the valid lifetime

from https://tools.ietf.org/html/rfc3633#section-10:
A requesting router discards any prefixes for which the preferred
   lifetime is greater than the valid lifetime. 

but the code https://github.com/ovn-org/ovn/blob/master/controller/pinctrl.c#L835 doesn't do that

Version-Release number of selected component (if applicable):
ovn2.13.0-18

How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 4 Jianlin Shi 2020-05-13 06:59:47 UTC
Verified on ovn2.13.0-30.el7:


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:10.16.216.112:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=10.16.216.112
systemctl restart ovn-controller
ovn-nbctl ls-add ls1    
                              
ovn-nbctl lr-add lr1                 
ovn-nbctl lrp-add lr1 lr1-ls1 00:00:00:00:00:01 172.16.1.1/24
ovn-nbctl lsp-add ls1 ls1-lr1             
ovn-nbctl lsp-set-type ls1-lr1 router
ovn-nbctl lsp-set-options ls1-lr1 router-port=lr1-ls1                 
ovn-nbctl lsp-set-addresses ls1-lr1 router                    
                                                                      
ovn-nbctl lsp-add ls1 lnls1
ovn-nbctl lsp-set-options lnls1 network_name=provider
ovn-nbctl lsp-set-type lnls1 localnet                            
ovn-nbctl lsp-set-addresses lnls1 unknown    

ovn-nbctl set logical_router lr1 options:chassis=hv1

ovn-nbctl lrp-add lr1 lr1-ls2 00:00:00:00:00:02 172.16.1.2/24
ovn-nbctl lrp-add lr1 lr1-ls3 00:00:00:00:00:03 172.16.1.3/24
ovn-nbctl ls-add ls2
ovn-nbctl lsp-add ls2 ls2-lr1
ovn-nbctl lsp-set-type ls2-lr1 router
ovn-nbctl lsp-set-options ls2-lr1 router-port=lr1-ls2
ovn-nbctl lsp-set-addresses ls2-lr1 router

ovn-nbctl ls-add ls3
ovn-nbctl lsp-add ls3 ls3-lr1
ovn-nbctl lsp-set-type ls3-lr1 router
ovn-nbctl lsp-set-options ls3-lr1 router-port=lr1-ls3
ovn-nbctl lsp-set-addresses ls3-lr1 router

ovs-vsctl add-br br-test
ip link set br-test up
ovs-vsctl set open . external-ids:ovn-bridge-mappings=provider:br-test

ip netns add server0
ip link add veth0_s0 netns server0 type veth peer name veth0_s0_p
ip netns exec server0 ip link set veth0_s0 up
ip netns exec server0 ip addr add 2001:1db8:3333::2/64 dev veth0_s0
ovs-vsctl add-port br-test veth0_s0_p
ip link set veth0_s0_p up

ip addr add 2001:1db8:3333::1/64 dev br-test

ovn-nbctl set logical_router_port lr1-ls1 options:prefix_delegation=true
ovn-nbctl set logical_router_port lr1-ls1 options:prefix=true
ovn-nbctl set logical_router_port lr1-ls2 options:prefix=true
ovn-nbctl set logical_router_port lr1-ls3 options:prefix=true

cat > dhcpd6.conf << EOF
option dhcp-rebinding-time 10;
option dhcp-renewal-time 15;
option dhcp6.unicast fe80::f455:8ff:fe20:6d66;
subnet6 2001:1db8:3333::/64 {

        # Some /64 prefixes available for Prefix Delegation (RFC 3633)
        prefix6 2001:1db8:3333:100:: 2001:1db8:3333:111:: /80;
}
EOF

ip netns exec server0 dhcpd -6 -cf ./dhcpd6.conf veth0_s0

<==== set rebinding time to be larger than renewal time

after setup, check ipv6_prefix for logical_router_port:

[root@hpe-dl380pgen8-02-vm-13 bz1826623]# ovn-nbctl list logical_router_port lr1-ls1
_uuid               : 40334b9a-a0c4-46fa-b93a-495f5b54cf18
enabled             : []
external_ids        : {}
gateway_chassis     : []
ha_chassis_group    : []
ipv6_prefix         : []
ipv6_ra_configs     : {}
mac                 : "00:00:00:00:00:01"
name                : lr1-ls1
networks            : ["172.16.1.1/24"]
options             : {prefix="true", prefix_delegation="true"}
peer                : []
[root@hpe-dl380pgen8-02-vm-13 bz1826623]# ovn-nbctl list logical_router_port lr1-ls2
_uuid               : 92c3aa4f-49b5-4ff4-8a42-698f2c5ba7f4
enabled             : []
external_ids        : {}
gateway_chassis     : []
ha_chassis_group    : []
ipv6_prefix         : []
ipv6_ra_configs     : {}
mac                 : "00:00:00:00:00:02"
name                : lr1-ls2
networks            : ["172.16.1.2/24"]
options             : {prefix="true"}
peer                : []
[root@hpe-dl380pgen8-02-vm-13 bz1826623]# ovn-nbctl list logical_router_port lr1-ls3
_uuid               : 209d9369-8050-41bd-a62d-820b12f08514
enabled             : []
external_ids        : {}
gateway_chassis     : []
ha_chassis_group    : []
ipv6_prefix         : []

<==== no ipv6_prefix generated

ipv6_ra_configs     : {}
mac                 : "00:00:00:00:00:03"
name                : lr1-ls3
networks            : ["172.16.1.3/24"]
options             : {prefix="true"}
peer                : []
[root@hpe-dl380pgen8-02-vm-13 bz1826623]# rpm -qa | grep -E "openvswitch|ovn"
openvswitch2.13-2.13.0-17.el7fdp.x86_64
ovn2.13-2.13.0-30.el7fdp.x86_64
openvswitch-selinux-extra-policy-1.0-15.el7fdp.noarch
ovn2.13-central-2.13.0-30.el7fdp.x86_64
ovn2.13-host-2.13.0-30.el7fdp.x86_64

Comment 5 Jianlin Shi 2020-05-13 07:05:43 UTC
Verified on ovn2.13.0-30.el8:

[root@kvm-04-guest09 bz1826623]# ovn-nbctl list logical_router_port lr1-ls2
_uuid               : a68fe7f1-fc7a-4fa3-b629-15d155b28cf1
enabled             : []
external_ids        : {}
gateway_chassis     : []
ha_chassis_group    : []
ipv6_prefix         : []
ipv6_ra_configs     : {}
mac                 : "00:00:00:00:00:02"
name                : lr1-ls2
networks            : ["172.16.1.2/24"]
options             : {prefix="true"}
peer                : []
[root@kvm-04-guest09 bz1826623]# rpm -qa | grep ovn
ovn2.13-2.13.0-30.el8fdp.x86_64
ovn2.13-central-2.13.0-30.el8fdp.x86_64
ovn2.13-host-2.13.0-30.el8fdp.x86_64

Comment 9 errata-xmlrpc 2020-05-26 14:07:18 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-2020:2317