Bug 1801258

Summary: [RFE][OVN] OVN DHCP Server ignores DHCPINFORM messages from client
Product: Red Hat Enterprise Linux Fast Datapath Reporter: Alex Stupnikov <astupnik>
Component: ovn2.13Assignee: Numan Siddique <nusiddiq>
Status: CLOSED ERRATA QA Contact: ying xu <yinxu>
Severity: medium Docs Contact:
Priority: high    
Version: FDP 19.03CC: apevec, ctrautma, dcbw, jishi, lhh, lmartins, majopela, nusiddiq, ralongi, rkhan, scohen
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: ovn2.13-20.06.1-1 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1801734 (view as bug list) Environment:
Last Closed: 2020-08-18 11:23:51 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:    
Bug Blocks: 1801734    

Description Alex Stupnikov 2020-02-10 14:23:37 UTC
Description of problem:

OVN DHCP server doesn't process DHCPINFORM packages from clients and silently drops them.

P.S. Couldn't find OVN component for RHOSP.

Comment 1 Dan Williams 2020-05-28 20:47:00 UTC
Which specific OVN RPM version is the customer using here?

Comment 8 ying xu 2020-07-14 09:28:04 UTC
create the env 
# dhcp options
                local dhcp_102=$(ovn-nbctl create DHCP_Options cidr=42.42.42.0/24 \
                        options="\"server_id\"=\"42.42.42.254\" \"server_mac\"=\"00:de:ad:ff:01:02\" \
                        \"lease_time\"=\"3600\" \"router\"=\"42.42.42.254\"")
                echo $dhcp_102

                ovn-nbctl ls-add ls
                ovn-nbctl lsp-add ls vm1
                ovn-nbctl lsp-set-addresses vm1 "00:00:00:00:00:01 42.42.42.2"
                rlRun "ovn-nbctl lsp-set-dhcpv4-options vm1 $dhcp_102"
                rlRun "ovn-nbctl lsp-get-dhcpv4-options vm1"
                ovn-nbctl lsp-add ls vm2
                ovn-nbctl lsp-set-addresses vm2 "00:00:00:00:00:02 42.42.42.3"
                rlRun "ovn-nbctl lsp-set-dhcpv4-options vm2 $dhcp_102"
                rlRun "ovn-nbctl lsp-get-dhcpv4-options vm2"

                ip netns add vm1
                ovs-vsctl add-port br-int vm1 -- set interface vm1 type=internal
                ip link set vm1 netns vm1
                ip netns exec vm1 ip link set vm1 address 00:00:00:00:00:01
                ip netns exec vm1 ip link set vm1 up
                ip netns exec vm1 ip link set lo up
                ovs-vsctl set Interface vm1 external_ids:iface-id=vm1
ip netns add vm2
                ovs-vsctl add-port br-int vm2 -- set interface vm2 type=internal
                ip link set vm2 netns vm2
                ip netns exec vm2 ip link set vm2 address 00:00:00:00:00:02
                ip netns exec vm2 ip link set vm2 up
                ip netns exec vm2 ip link set lo up
                ovs-vsctl set Interface vm2 external_ids:iface-id=vm2
ip netns exec vm1 dhclient -i vm1 
ip netns exec vm2 dhclient -i vm2

on the old version,
ovn2.13-host-2.13.0-37.el8fdp.x86_64
ovn2.13-2.13.0-37.el8fdp.x86_64
ovn2.13-central-2.13.0-37.el8fdp.x86_64

when send release to the controller from vm1:
sendp(Ether(src="00:00:00:00:00:01", dst="00:de:ad:ff:01:02")/IP(src='42.42.42.2',dst='42.42.42.254')/UDP(sport=68,dport=67)/BOOTP(ciaddr='42.42.42.2',chaddr=hw,xid=random.randint(0, 0xFFFFFFFF),)/DHCP(options=[("message-type","release"),("server_id",'42.42.42.254'),("client_id",chr(1),hw),"end"]),iface="vm1")
# cat /var/log/ovn/ovn-controller.log|grep DHCP
2020-07-14T06:28:54.799Z|00007|pinctrl(ovn_pinctrl0)|INFO|DHCPACK 00:00:00:00:00:01 42.42.42.2
2020-07-14T06:28:57.525Z|00008|pinctrl(ovn_pinctrl0)|WARN|Invalid DHCP message type: 7
2020-07-14T06:32:11.921Z|00009|pinctrl(ovn_pinctrl0)|WARN|Invalid DHCP message type: 7

when send inform to the controller from vm2:
sendp(Ether(src="00:00:00:00:00:02", dst="00:de:ad:ff:01:02")/IP(src='42.42.42.3',dst='42.42.42.254')/UDP(sport=68,dport=67)/BOOTP(ciaddr='42.42.42.3',chaddr=hw,xid=random.randint(0, 0xFFFFFFFF),)/DHCP(options=[("message-type","inform"),("server_id",'42.42.42.254'),("client_id",chr(1),hw),"end"]),iface="vm2")

# cat /var/log/ovn/ovn-controller.log|grep DHCP
2020-07-14T08:19:28.269Z|00007|pinctrl(ovn_pinctrl0)|INFO|DHCPOFFER 00:00:00:00:00:02 42.42.42.3
2020-07-14T08:19:28.269Z|00008|pinctrl(ovn_pinctrl0)|INFO|DHCPACK 00:00:00:00:00:02 42.42.42.3
2020-07-14T08:30:04.530Z|00007|pinctrl(ovn_pinctrl0)|INFO|DHCPACK 00:00:00:00:00:02 42.42.42.3
2020-07-14T08:38:03.740Z|00007|pinctrl(ovn_pinctrl0)|INFO|DHCPACK 00:00:00:00:00:02 42.42.42.3
2020-07-14T08:38:11.472Z|00008|pinctrl(ovn_pinctrl0)|WARN|Invalid DHCP message type: 8

on the latest version:
# rpm -qa|grep ovn
ovn2.13-host-20.06.1-2.el8fdp.x86_64
ovn2.13-20.06.1-2.el8fdp.x86_64
ovn2.13-central-20.06.1-2.el8fdp.x86_64

send release:
cat /var/log/ovn/ovn-controller.log|grep DHCPRELEASE'
2020-07-14T08:19:21.785Z|00007|pinctrl(ovn_pinctrl0)|INFO|DHCPRELEASE 00:00:00:00:00:01 42.42.42.2
2020-07-14T08:29:58.180Z|00008|pinctrl(ovn_pinctrl0)|INFO|DHCPRELEASE 00:00:00:00:00:01 42.42.42.2


send inform:
cat /var/log/ovn/ovn-controller.log|grep DHCPINFORM'
2020-07-14T08:42:18.096Z|00008|pinctrl(ovn_pinctrl0)|INFO|DHCPINFORM from 00:00:00:00:00:02 42.42.42.3
2020-07-14T08:47:22.758Z|00008|pinctrl(ovn_pinctrl0)|INFO|DHCPINFORM from 00:00:00:00:00:02 42.42.42.3

# tcpdump -r dhcp.pcap -nn -v
reading from file dhcp.pcap, link-type EN10MB (Ethernet)
04:58:41.540300 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 16) fe80::200:ff:fe00:2 > ff02::2: [icmp6 sum ok] ICMP6, router solicitation, length 16
	  source link-address option (1), length 8 (1): 00:00:00:00:00:02
04:58:44.254323 IP (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto UDP (17), length 287)
    42.42.42.3.68 > 42.42.42.254.67: BOOTP/DHCP, Request from 00:00:00:00:00:02, length 259, xid 0xe075864f, Flags [none]
	  Client-IP 42.42.42.3
	  Client-Ethernet-Address 00:00:00:00:00:02
	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message Option 53, length 1: Inform
	    Server-ID Option 54, length 4: 42.42.42.254
	    Client-ID Option 61, length 7: ether 00:00:00:00:00:02
04:58:44.256446 IP (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto UDP (17), length 292)
    42.42.42.254.67 > 42.42.42.3.68: BOOTP/DHCP, Reply, length 264, xid 0xe075864f, Flags [none]
	  Client-IP 42.42.42.3
	  Client-Ethernet-Address 00:00:00:00:00:02
	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message Option 53, length 1: ACK
	    Default-Gateway Option 3, length 4: 42.42.42.254
	    Server-ID Option 54, length 4: 42.42.42.254

Comment 10 errata-xmlrpc 2020-08-18 11:23:51 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-2020:3488