Bug 1804590

Summary: [ovn2.12-rhel8]router_preference doesn't take effect if send_periodic is false
Product: Red Hat Enterprise Linux Fast Datapath Reporter: Jianlin Shi <jishi>
Component: ovn2.12Assignee: lorenzo bianconi <lorenzo.bianconi>
Status: CLOSED WONTFIX QA Contact: Jianlin Shi <jishi>
Severity: medium Docs Contact:
Priority: medium    
Version: FDP 20.ACC: ctrautma, fhallal, jishi, mmichels, ovs-team, ralongi
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1804576 Environment:
Last Closed: 2020-06-25 12:57:10 UTC Type: ---
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: 1804576, 1804595, 1851788    
Bug Blocks:    

Description Jianlin Shi 2020-02-19 08:26:46 UTC
following issue also exists on ovn2.12.0-21:

[root@dell-per740-12 ra]# rpm -qa | grep -E "openvswitch|ovn"
openvswitch2.12-2.12.0-21.el8fdp.x86_64                                                               
kernel-kernel-networking-openvswitch-ovn-common-1.0-7.noarch
ovn2.12-2.12.0-27.el8fdp.x86_64                                                                       
ovn2.12-central-2.12.0-27.el8fdp.x86_64                                                               
ovn2.12-host-2.12.0-27.el8fdp.x86_64                                                                  
kernel-kernel-networking-openvswitch-ovn-basic-1.0-19.noarch
python3-openvswitch2.12-2.12.0-21.el8fdp.x86_64                                                       
openvswitch-selinux-extra-policy-1.0-19.el8fdp.noarch

+++ This bug was initially created as a clone of Bug #1804576 +++

Description of problem:
router_preference doesn't take effect if send_periodic is false

Version-Release number of selected component (if applicable):
ovn2.13-2.13.0-0.20200217git7886ac9.el8fdp.x86_64

How reproducible:
always

Steps to Reproduce:
1. set router_preference as low
2. set send_periodic as false
3. send router solicitation to ovn, and ovn would reply router advertisement

Actual results:
pref is medium in the router advertisement

Expected results:
perf should be low

Additional info:

[root@dell-per740-12 test]# cat setup.sh
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:20.0.30.25:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=20.0.30.25
systemctl restart ovn-controller
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 lo up
ip netns exec server0 ip link set veth0_s0 up
ip netns exec server0 ip link set veth0_s0 address 00:00:00:01:01:02
ip netns exec server0 ip addr add 192.168.1.1/24 dev veth0_s0                                         
ovs-vsctl add-port br-int veth0_s0_p
ip link set veth0_s0_p up                                                                             
ovs-vsctl set interface veth0_s0_p external_ids:iface-id=ls1p1                                        
ovn-nbctl ls-add ls1
ovn-nbctl lsp-add ls1 ls1p1
ovn-nbctl lsp-set-addresses ls1p1 00:00:00:01:01:02
ovn-nbctl lsp-add ls1 ls1p2                                                                           
ovn-nbctl lsp-set-addresses ls1p2 00:00:00:01:02:02
ovn-nbctl lr-add lr1
ovn-nbctl lrp-add lr1 lr1-ls1 00:00:00:00:00:01 aef0:0:0:0:0:0:0:1/64                                 
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 00:00:00:00:00:01                                                 
ovn-nbctl lsp-add ls1 ls1p3
ovn-nbctl lsp-set-addresses ls1p3 00:00:00:01:03:02
ovn-nbctl set Logical_Router_Port lr1-ls1 ipv6_ra_configs:send_periodic=true
ovn-nbctl set Logical_Router_Port lr1-ls1 ipv6_ra_configs:address_mode=slaac
ovn-nbctl set Logical_Router_Port lr1-ls1 ipv6_ra_configs:max_interval=4
ovn-nbctl set Logical_Router_Port lr1-ls1 ipv6_ra_configs:min_interval=3
ovn-nbctl --wait=hv set Logical_Router_port lr1-ls1 ipv6_ra_configs:rdnss=aef0::11
ovn-nbctl --wait=hv set Logical_Router_port lr1-ls1 ipv6_ra_configs:router_preference=LOW
ovn-nbctl --wait=hv set Logical_Router_port lr1-ls1 ipv6_ra_configs:dnssl=aa.bb.cc
ovn-nbctl --wait=hv set Logical_Router_port lr1-ls1 ipv6_ra_configs:route_info=HIGH-aef1::11/48,LOW-aef2::11/96
ovn-nbctl list logical_router_port lr1-ls1

after setup, run following command:

[root@dell-per740-12 test]# ovn-nbctl set Logical_Router_Port lr1-ls1 ipv6_ra_configs:send_periodic=false

[root@dell-per740-12 test]# ovn-nbctl list logical_router_port lr1-ls1                                                                                                                                      
_uuid               : 7d565042-d5d2-415f-97eb-39880a674612
enabled             : []                                                                                      
external_ids        : {}                                                 
gateway_chassis     : []                     
ha_chassis_group    : []                                                                                                  
ipv6_ra_configs     : {address_mode=slaac, dnssl=aa.bb.cc, max_interval="4", min_interval="3", rdnss="aef0::11", route_info="HIGH-aef1::11/48,LOW-aef2::11/96", router_preference=LOW, send_periodic="false"
}                                                      
mac                 : "00:00:00:00:00:01"                                                                                                                                                                   
name                : lr1-ls1                                                                              
networks            : ["aef0:0:0:0:0:0:0:1/64"]                                                                                                                                                             
options             : {}                          
peer                : []

[root@dell-per740-12 test]# ip netns exec server0 ip link set veth0_s0 down
[root@dell-per740-12 test]# ip netns exec server0 ip link set veth0_s0 up && ip netns exec server0 tcpdump -i veth0_s0 -nnle -vvv
tcpdump: listening on veth0_s0, link-type EN10MB (Ethernet), capture size 262144 bytes
              
fe80::200:ff:fe01:102 > ff02::2: [icmp6 sum ok] ICMP6, rou
ter solicitation, length 16                                                       
          source link-address option (1), length 8 (1): 00:00:00:01:01:02                
            0x0000:  0000 0001 0102                                                                                                                                
03:08:13.123692 00:00:00:00:00:01 > 00:00:00:01:01:02, ethertype IPv6 (0x86dd), length 110: (hlim 255, next-header ICMPv6 (58) payload length: 56) fe80::200:ff:fe00:1 > fe80::200:ff:fe01:102: [icmp6 sum o
k] ICMP6, router advertisement, length 56 
        hop limit 255, Flags [none], pref medium, router lifetime 65535s, reachable time 0ms, retrans time 0ms
          source link-address option (1), length 8 (1): 00:00:00:00:00:01 
            0x0000:  0000 0000 0001
          prefix info option (3), length 32 (4): aef0::/64, Flags [onlink, auto], valid time infinity, pref. time infinity
            0x0000:  40c0 ffff ffff ffff ffff 0000 0000 aef0
            0x0010:  0000 0000 0000 0000 0000 0000 0000 

<=== pref is medium in the router advertisement, in addition, other ra configuration are not contained in the packet: dnssl, rdnss, etc.

[root@dell-per740-12 test]# ip netns exec server0 ip -6 route list default
default via fe80::200:ff:fe00:1 dev veth0_s0 proto ra metric 1024 expires 65176sec hoplimit 255 pref medium

<== pref is medium