>
>
>
> On Tue, Apr 16, 2024 at 1:22 AM <[email protected]> wrote:
>>
>> From: shylou <[email protected]>
>>
>> DHCP for VM fails when removing default security group rules
>> using a CMS like Neutron ML2/OVN [1]. This is because DHCP
>> requests from VMs may be dropped by ACLs. To fix this issue,
>> we add a lflow with a priority of 34000 to allow DHCP requests
>> from the logical port if the CMS has enabled native DHCPv4
>> for this port.
>>
>> [1]https://bugs.launchpad.net/neutron/+bug/1926515
>>
>> Signed-off-by: Xie Liu <[email protected]>
>
>
> Thanks for the patch.
>
> I don't think this is the correct fix.  If neutron wants to allow DHCP 
> overriding any ACL rules,
> it should add a high priority ACL to allow DHCP.   What if a user wants to 
> add an explicit ACL to
> drop DHCP from certain ports ?
>
> Thanks
> Numan
>
Thanks,  Numan
I have a puzzling question: Why would users want to block
DHCP request packets after enabling DHCP for any LSPs ?
They could justly not enable DHCP for them at all, right?
>
>> ---
>>  northd/northd.c     | 10 ++++++++++
>>  tests/ovn-northd.at |  5 +++++
>>  2 files changed, 15 insertions(+)
>>
>> diff --git a/northd/northd.c b/northd/northd.c
>> index 2c3560ce2..ca641a19e 100644
>> --- a/northd/northd.c
>> +++ b/northd/northd.c
>> @@ -8414,6 +8414,16 @@ build_dhcpv4_options_flows(struct ovn_port *op,
>>                                                       meter_groups),
>>                                        &op->nbsp->dhcpv4_options->header_,
>>                                        lflow_ref);
>> +            /* Add 34000 priority flow to allow DHCP request from the lport
>> +             * if the CMS has enabled native DHCPv4 for this lport.
>> +             * */
>> +            ovn_lflow_add_with_lport_and_hint(lflows, op->od,
>> +                                              S_SWITCH_IN_ACL_EVAL, 34000,
>> +                                              ds_cstr(&match),
>> +                                              REGBIT_ACL_VERDICT_ALLOW" = 
>> 1; next;",
>> +                                              op->key,
>> +                                              &op->nbsp->header_,
>> +                                              lflow_ref);
>>              ds_clear(&match);
>>
>>              /* If REGBIT_DHCP_OPTS_RESULT is set, it means the
>> diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
>> index 6fdd761da..7657aefff 100644
>> --- a/tests/ovn-northd.at
>> +++ b/tests/ovn-northd.at
>> @@ -4897,6 +4897,11 @@ ovn-nbctl --wait=sb lsp-set-dhcpv4-options sw0-port1 
>> $CIDR_UUID
>>  ovn-sbctl dump-flows sw0 > sw0flows
>>  AT_CAPTURE_FILE([sw0flows])
>>
>> +AT_CHECK([grep "_acl_eval" sw0flows | grep sw0-port1 | ovn_strip_lflows], 
>> [0], [dnl
>> +  table=??(ls_in_acl_eval     ), priority=34000, match=(inport == 
>> "sw0-port1" && eth.src == 50:54:00:00:00:01 && (ip4.src == {10.0.0.2, 
>> 0.0.0.0} && ip4.dst == {10.0.0.1, 255.255.255.255}) && udp.src == 68 && 
>> udp.dst == 67), action=(reg8[[16]] = 1; next;)
>> +  table=??(ls_out_acl_eval    ), priority=34000, match=(outport == 
>> "sw0-port1" && eth.src == c0:ff:ee:00:00:01 && ip4.src == 10.0.0.1 && udp && 
>> udp.src == 67 && udp.dst == 68), action=(reg8[[16]] = 1; next;)
>> +])
>> +
>>  AT_CHECK([grep -w "ls_in_dhcp_options" sw0flows | ovn_strip_lflows], [0], 
>> [dnl
>>    table=??(ls_in_dhcp_options ), priority=0    , match=(1), action=(next;)
>>    table=??(ls_in_dhcp_options ), priority=100  , match=(inport == 
>> "sw0-port1" && eth.src == 50:54:00:00:00:01 && (ip4.src == {10.0.0.2, 
>> 0.0.0.0} && ip4.dst == {10.0.0.1, 255.255.255.255}) && udp.src == 68 && 
>> udp.dst == 67), action=(reg0[[3]] = put_dhcp_opts(offerip = 10.0.0.2, 
>> hostname = "foo", lease_time = 3600, netmask = 255.255.255.0, router = 
>> 10.0.0.1, server_id = 10.0.0.1); next;)
>> --
>> 2.42.0.windows.2
>>
>> _______________________________________________
>> dev mailing list
>> [email protected]
>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to