Bug 1915739 - Add IPv6 support to OVN BFD implemetation
Summary: Add IPv6 support to OVN BFD implemetation
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux Fast Datapath
Classification: Red Hat
Component: OVN
Version: FDP 20.I
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
: ---
Assignee: lorenzo bianconi
QA Contact: ying xu
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-01-13 11:39 UTC by lorenzo bianconi
Modified: 2021-03-15 14:36 UTC (History)
3 users (show)

Fixed In Version: ovn2.13-20.12.0-5.el8
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-03-15 14:36:02 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2021:0836 0 None None None 2021-03-15 14:36:23 UTC

Description lorenzo bianconi 2021-01-13 11:39:56 UTC
Description of problem:

In order to complete https://bugzilla.redhat.com/show_bug.cgi?id=1847570 introduce IPv6 support to OVN BFD implemetation 


Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 1 lorenzo bianconi 2021-01-13 11:42:05 UTC
upstream commit:
https://github.com/ovn-org/ovn/commit/ecc7bd74d8c045c15ea27954f5441d8d21198d50

Comment 4 Zhiqiang Fang 2021-02-15 16:49:48 UTC
~~~~~~~~~~~~ Modified script in bug 1918997 adding ipv6 ~~~~~~~~~~~~

systemctl start ovn-northd                                                                            
ovn-nbctl set-connection ptcp:6641                                                                    
ovn-sbctl set-connection ptcp:6642                                                                    
                                                                                                      
systemctl start openvswitch                                                                           
ovs-vsctl set open . external_ids:system-id=hv0 external_ids:ovn-remote=tcp:1.1.173.25:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=1.1.173.25
systemctl start ovn-controller                                                                        
                                                                                                     
ovn-nbctl lr-add lr1                                                                                  
ovn-nbctl lrp-add lr1 lr1p1 00:00:00:01:0f:01 1.1.1.1/24 2001:db8:1000::1/64                                 
ovn-nbctl lr-route-add lr1 2001:db8:2000::/48 2001:db8:1000::2 lr1p1                                                  
                                                                                                      
bfd_uuid=$(ovn-nbctl create bfd logical_port=lr1p1 dst_ip=\"2001:db8:1000::3\" min_tx=250 min_rx=250 detect_mult=10)    

ovn-nbctl --bfd=$bfd_uuid lr-route-add lr1 2001:db8:3000::/48 2001:db8:1000::3 lr1p1                                   

ovn-nbctl --ecmp lr-route-add lr1 2001:db8:4000::/48 2001:db8:1000::4 lr1p1                                            
ovn-nbctl --ecmp lr-route-add lr1 2001:db8:4000::/48 2001:db8:1000::5 lr1p1                                            
ovn-nbctl --ecmp-symmetric-reply lr-route-add lr1 2001:db8:5000::/48 2001:db8:1000::5 lr1p1                            
ovn-nbctl --ecmp-symmetric-reply lr-route-add lr1 2001:db8:5000::/48 2001:db8:1000::4 lr1p1                            
                                                                                                 
ovn-nbctl lr-route-list lr1


~~~~~~~~~~~~~~~~~ As below is the output ~~~~~~~~~~~~

+ systemctl start ovn-northd
+ ovn-nbctl set-connection ptcp:6641
+ ovn-sbctl set-connection ptcp:6642
+ systemctl start openvswitch
+ ovs-vsctl set open . external_ids:system-id=hv0 external_ids:ovn-remote=tcp:1.1.173.25:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=1.1.173.25
+ systemctl start ovn-controller
+ ovn-nbctl lr-add lr1
+ ovn-nbctl lrp-add lr1 lr1p1 00:00:00:01:0f:01 1.1.1.1/24 2001:db8:1000::1/64
+ ovn-nbctl lr-route-add lr1 2001:db8:2000::/48 2001:db8:1000::2 lr1p1
++ ovn-nbctl create bfd logical_port=lr1p1 'dst_ip="2001:db8:1000::3"' min_tx=250 min_rx=250 detect_mult=10
+ bfd_uuid=786f3e99-0054-4e53-83d8-4f11e61c934d

+ ovn-nbctl --bfd=786f3e99-0054-4e53-83d8-4f11e61c934d lr-route-add lr1 2001:db8:3000::/48 2001:db8:1000::3 lr1p1
+ ovn-nbctl --ecmp lr-route-add lr1 2001:db8:4000::/48 2001:db8:1000::4 lr1p1
+ ovn-nbctl --ecmp lr-route-add lr1 2001:db8:4000::/48 2001:db8:1000::5 lr1p1
+ ovn-nbctl --ecmp-symmetric-reply lr-route-add lr1 2001:db8:5000::/48 2001:db8:1000::5 lr1p1
+ ovn-nbctl --ecmp-symmetric-reply lr-route-add lr1 2001:db8:5000::/48 2001:db8:1000::4 lr1p1
+ ovn-nbctl lr-route-list lr1
IPv6 Routes
       2001:db8:2000::/48          2001:db8:1000::2 dst-ip lr1p1
       2001:db8:3000::/48          2001:db8:1000::3 dst-ip lr1p1 bfd
       2001:db8:4000::/48          2001:db8:1000::4 dst-ip lr1p1 ecmp
       2001:db8:4000::/48          2001:db8:1000::5 dst-ip lr1p1 ecmp
       2001:db8:5000::/48          2001:db8:1000::4 dst-ip lr1p1 ecmp ecmp-symmetric-reply
       2001:db8:5000::/48          2001:db8:1000::5 dst-ip lr1p1 ecmp ecmp-symmetric-reply

Comment 5 ying xu 2021-02-18 10:15:16 UTC
add function test for this feature:(use the script and procedure in bz1847570)

topo:
vm1-----network1----router1-------public------external-----pc
           |
           vm2

script:
		ovn-nbctl ls-add network1
		ovn-nbctl lsp-add network1 vm1
		ovn-nbctl lsp-set-addresses vm1 "40:44:00:00:00:01 192.168.1.11 2000::11"
		ovn-nbctl lsp-add network1 vm2
		ovn-nbctl lsp-set-addresses vm2 "40:44:00:00:00:02 192.168.1.12 2000::12"

		ovn-nbctl ls-add public
		ovn-nbctl lsp-add public public-localnet
		ovn-nbctl lsp-set-type public-localnet localnet
		ovn-nbctl lsp-set-addresses public-localnet unknown
		ovn-nbctl lsp-set-options public-localnet network_name=external
		ovs-vsctl add-br br-labNet
		ovs-vsctl set Open_vSwitch . external-ids:ovn-bridge-mappings=external:br-labNet
		ovs-vsctl add-port br-labNet ha_veth0
		ip link set br-labNet up

		ovn-nbctl lr-add router1
		ovn-nbctl lrp-add router1 router1-net1 40:44:00:00:00:04 192.168.1.1/24 2000::1/64
		ovn-nbctl lsp-add network1 net1-router1
		ovn-nbctl lsp-set-type net1-router1 router
		ovn-nbctl lsp-set-addresses net1-router1 router
		ovn-nbctl lsp-set-options net1-router1 router-port=router1-net1

		ovn-nbctl lrp-add router1 router1-net2 40:44:00:00:00:05 192.168.2.1/24 2001::1/64
		ovn-nbctl lsp-add network2 net2-router1
		ovn-nbctl lsp-set-type net2-router1 router
		ovn-nbctl lsp-set-addresses net2-router1 router
		ovn-nbctl lsp-set-options net2-router1 router-port=router1-net2

		ovn-nbctl lrp-add router1 router1-public 40:44:00:00:00:06 172.16.1.1/24 2002::1/64
		ovn-nbctl lsp-add public public-router1
		ovn-nbctl lsp-set-type public-router1 router
		ovn-nbctl lsp-set-addresses public-router1 router
		ovn-nbctl lsp-set-options public-router1 router-port=router1-public

		ovn-nbctl --id=@gc0 create Gateway_Chassis name=public-gw1 chassis_name=hv1 priority=20 -- --id=@gc1 create Gateway_Chassis name=public-gw2 chassis_name=hv0 priority=10 -- set Logical_Router_Port router1-public 'gateway_chassis=[@gc0,@gc1]'


		ovs-vsctl add-port br-int vm1 -- set interface vm1 type=internal
		ip netns add vm1
		ip link set vm1 netns vm1
		ip netns exec vm1 ip link set lo up
		ip netns exec vm1 ip link set vm1 up
		ip netns exec vm1 ip link set vm1 address 40:44:00:00:00:01
		ip netns exec vm1 ip addr add 192.168.1.11/24 dev vm1
		ip netns exec vm1 ip -6 addr add 2000::11/64 dev vm1
		ip netns exec vm1 ip route add default via 192.168.1.1 dev vm1
		ip netns exec vm1 ip -6 route add default via 2000:: dev vm1
		ovs-vsctl set Interface vm1 external_ids:iface-id=vm1

		ovs-vsctl add-port br-int vm2 -- set interface vm2 type=internal
		ip netns add vm2
		ip link set vm2 netns vm2
		ip netns exec vm2 ip link set lo up
		ip netns exec vm2 ip link set vm2 up
		ip netns exec vm2 ip link set vm2 address 40:44:00:00:00:02
		ip netns exec vm2 ip addr add 192.168.1.12/24 dev vm2
		ip netns exec vm2 ip -6 addr add 192.168.1.12/24 dev vm2
		ip netns exec vm2 ip route add default via 192.168.1.1 dev vm2
		ip netns exec vm2 ip -6 route add default via 2000:: dev vm2
		ovs-vsctl set Interface vm2 external_ids:iface-id=vm2

		ip netns add external
		ip link add ha_veth0 type veth peer name ha_veth0_p netns external
		ip netns exec external ip link set lo up
		ip netns exec external ip link set ha_veth0_p up
		ip link set ha_veth0 up
		ip netns exec external ip addr add 172.16.1.50/24 dev ha_veth0_p
		ip netns exec external ip addr add 172.16.1.51/24 dev ha_veth0_p
		ip netns exec external ip -6 addr add 2002::50/64 dev ha_veth0_p
		ip netns exec external ip -6 addr add 2002::51/64 dev ha_veth0_p
		ip link add veth0 type veth peer name veth0_peer

		ip link set up dev veth0
		ip link set veth0_peer netns external
		ip netns exec external ip link set up dev veth0_peer
		ip netns exec external ip addr add 192.168.100.1/24 dev veth0_peer
		ip netns exec external ip -6 addr add 2003::1/24 dev veth0_pee
		ip addr add 192.168.100.2/24 dev veth0
		ip -6 addr add 2003::2/24 dev veth0
		ip route add 172.16.1.0/24 via 192.168.100.1
		ip -6 route add 2002::/64 via 2003::1
		ip netns exec external ip route add default via 172.16.1.1
		ip netns exec external ip -6 route add default via 2002::1
		ip netns exec external sysctl net.ipv4.ip_forward=1
		ip netns exec external sysctl net.ipv6.ip_forward=1

		uuid=$(ovn-nbctl create bfd logical_port=router1-public dst_ip=172.16.1.50 min_tx=250 min_rx=250 detect_mult=10)
		uuid1=$(ovn-nbctl create bfd logical_port=router1-public dst_ip="2002\:\:50" min_tx=250 min_rx=250 detect_mult=10)
		uuid2=$(ovn-nbctl create bfd logical_port=router1-public dst_ip="2002\:\:51" min_tx=250 min_rx=250 detect_mult=10)
		uuid3=$(ovn-nbctl create bfd logical_port=router1-public dst_ip=172.16.1.51 min_tx=250 min_rx=250 detect_mult=10)

                ovn-nbctl  --ecmp lr-route-add router1 192.168.100.0/24 172.16.1.50
                ovn-nbctl --bfd=$uuid3 --ecmp lr-route-add router1 192.168.100.0/24 172.16.1.51
                ovn-nbctl  --ecmp lr-route-add router1 2003::/24 2002::50
                ovn-nbctl --bfd=$uuid2 --ecmp lr-route-add router1 2003::/24 2002::51
                uid=$(ovn-nbctl --bare --columns _uuid find logical_router_static_route nexthop=172.16.1.50)
                uid1=$(ovn-nbctl --bare --columns _uuid find logical_router_static_route nexthop="2002\:\:50")
                ovn-nbctl set logical_router_static_route $route_uuid bfd=$uuid
                ovn-nbctl set logical_router_static_route $route_uuid1 bfd=$uuid1
                ovn-nbctl --wait=hv sync
                ip netns exec external bfdd-beacon --listen=::
                ip netns exec external bfdd-control allow 2002::1

now check the bfd status:
# ovn-nbctl list bfd
_uuid               : 5e0ce2bc-d556-4e35-b860-7b44e7c61f47
detect_mult         : 10
dst_ip              : "172.16.1.51"
external_ids        : {}
logical_port        : router1-public
min_rx              : 250
min_tx              : 250
options             : {}
status              : down

_uuid               : 5df64215-4ef1-4e08-b2b9-82b9ec5b987c
detect_mult         : 10
dst_ip              : "2002::51"
external_ids        : {}
logical_port        : router1-public
min_rx              : 250
min_tx              : 250
options             : {}
status              : up

_uuid               : c2b026d3-3f86-4fea-841d-a2361f0651f4
detect_mult         : 10
dst_ip              : "172.16.1.50"
external_ids        : {}
logical_port        : router1-public
min_rx              : 250
min_tx              : 250
options             : {}
status              : down

_uuid               : 9ac508df-cca7-4fd9-8638-30388236293f
detect_mult         : 10
dst_ip              : "2002::50"
external_ids        : {}
logical_port        : router1-public
min_rx              : 250
min_tx              : 250
options             : {}
status              : up

now ping pass
# ip netns exec vm1 ping6 2003::1
PING 2003::1(2003::1) 56 data bytes
64 bytes from 2003::1: icmp_seq=1 ttl=62 time=1.24 ms
^C
--- 2003::1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1024ms
# ovn-nbctl list bfd
_uuid               : 5e0ce2bc-d556-4e35-b860-7b44e7c61f47
detect_mult         : 10
dst_ip              : "172.16.1.51"
external_ids        : {}
logical_port        : router1-public
min_rx              : 250
min_tx              : 250
options             : {}
status              : down

_uuid               : 5df64215-4ef1-4e08-b2b9-82b9ec5b987c
detect_mult         : 10
dst_ip              : "2002::51"
external_ids        : {}
logical_port        : router1-public
min_rx              : 250
min_tx              : 250
options             : {}
status              : down

_uuid               : c2b026d3-3f86-4fea-841d-a2361f0651f4
detect_mult         : 10
dst_ip              : "172.16.1.50"
external_ids        : {}
logical_port        : router1-public
min_rx              : 250
min_tx              : 250
options             : {}
status              : down

_uuid               : 9ac508df-cca7-4fd9-8638-30388236293f
detect_mult         : 10
dst_ip              : "2002::50"
external_ids        : {}
logical_port        : router1-public
min_rx              : 250
min_tx              : 250
options             : {}
status              : down


stop the bfd(but the link is ok),ping fail
# ip netns exec vm1 ping6 2003::1
PING 2003::1(2003::1) 56 data bytes
^C
--- 2003::1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2030ms

Comment 7 errata-xmlrpc 2021-03-15 14:36:02 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 (ovn2.13 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-2021:0836


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