On 20/02/2022 23:38, Han Zhou wrote:


On Thu, Feb 17, 2022 at 3:23 AM Brendan Doyle <[email protected]> wrote:
>
> Hi,
>
> So I have a Distributed Gateway Port (DGP) on a Gateway through which
> VMs in the overlay can access
> underlay networks. If the VM is not on the chassis where the DGP is
> scheduled then the traffic takes
> the extra tunneled hop to the chassis where the DGP is and is then sent
> to the underlay via the localnet
> switch there.  It would be great if I could avoid that extra hop, whilst
> still having the Gateway do NAT
> and routing.  So I'm wondering if 'reside-on-redirect-chassis'  or '
> redirect-type' can be used to
> do this? and if so which one? Also will normal traffic between to VMs in
> the overlay on different chassis
> still be tunneled through the underlay?
>
> I'll do some experimentation later, but a nod in the right direction
> would be appreciated.
>
Hi Brendan,

Not sure if I understood your question well. If you want to avoid the gateway hop, you can just configure NAT rules with "dnat_and_snat" to do distributed NAT. 'reside-on-redirect-chassis' and 'redirect-type' don't seem to help for your use case because you mentioned your VMs are in overlay, while those options are for VLAN based logical networks.

I must admit I found the ovn-nb/ovn-architetcure doc quite confusing on this. I tracked down the patches and some ovn-discuss exchange and I think I understand it better now. It seems that rather then avoiding the extra hop to the gateway chassis, these redirect options just let you take that extra hop as a VLAN tagged packet in the underlay rather than a geneve encapsulated packet. Which is not what I was hoping they would do. I'm not sure what you mean by " you can just configure NAT rules with "dnat_and_snat" to do distributed NAT" I could not find any reference to "distributed NAT" in the man pages. We use a distributed router
port Gateway for HA. Consider this config:

switch 2ffbd2d8-5421-452a-b776-e32cc55f4789 (ls_vcn3)
    port 269089c4-9464-41ec-9f63-6b3804b34b07
        addresses: ["52:54:00:30:38:35 192.16.1.5"]
    port ls_vcn3_net1-lr_vcn3_net1
        type: router
        addresses: ["40:44:00:00:00:90"]
        router-port: lr_vcn3_net1-ls_vcn3_net1
    port 284195d2-9280-4334-900e-571ecd00327a
        addresses: ["52:54:00:02:55:96 192.16.1.6"]

switch af0f96b0-d7af-41ef-b5b7-fa8ae0186c2c (ls_vcn3_backbone)
    port lsb_vcn3-lr_vcn3
        type: router
        router-port: lr_vcn3-lsb_vcn3
    port lsb_vcn3_net1-lr_vcn3_net1
        type: router
        router-port: lr_vcn3_net1-lsb_vcn3_net1

switch 29bdf630-8326-4aa4-aee1-d9bca9ea298c (ls_vcn3_external_ugw)
    port ls_vcn3_external_ugw-lr_vcn3
        type: router
        router-port: lr_vcn3-ls_vcn3_external_ugw
    port ln-ls_vcn3_external_ugw
        type: localnet
        addresses: ["unknown"]

router 638a1401-4e5f-450b-9d35-fe74defc8769 (lr_vcn3)
    port lr_vcn3-ls_vcn3_external_ugw
        mac: "40:44:00:00:01:60"
        networks: ["253.255.80.4/16"]
        gateway chassis: [sca15-rain17 sca15-rain05 sca15-rain06]
    port lr_vcn3-lsb_vcn3
        mac: "40:44:00:00:01:50"
        networks: ["253.255.25.2/25"]
    nat cb880ef9-d51c-4265-abdc-db6accaa4d4a
        external ip: "253.255.80.4"
        logical ip: "192.16.0.0/16"
        type: "snat"

router f370260a-c90c-4824-91a8-fba787272dc2 (lr_vcn3_net1)
    port lr_vcn3_net1-lsb_vcn3_net1
        mac: "40:44:00:00:00:a0"
        networks: ["253.255.25.1/25"]
    port lr_vcn3_net1-ls_vcn3_net1
        mac: "40:44:00:00:00:90"
        networks: ["192.16.1.1/24"]

ovn-nbctl lr-nat-list lr_vcn3
TYPE             EXTERNAL_IP        EXTERNAL_PORT LOGICAL_IP            EXTERNAL_MAC         LOGICAL_PORT
snat             253.255.80.4                        192.16.0.0/16

ovn-sbctl show

Chassis sca15-rain05
    hostname: sca15-rain05
    Encap geneve
        ip: "253.255.2.5"
        options: {csum="true"}
    Port_Binding "269089c4-9464-41ec-9f63-6b3804b34b07"
    Port_Binding cr-lr_vcn3-ls_vcn3_external_ugw

Chassis sca15-rain06
    hostname: sca15-rain06
    Encap geneve
        ip: "253.255.2.6"
        options: {csum="true"}
    Port_Binding "284195d2-9280-4334-900e-571ecd00327a"


So if the overlay VM with IP 192.16.1.5  (hosted on chassis sca15-rain05) is sending traffic to the underlay it will use "physical"/localnet bridge on  sca15-rain05. But if the overlay VM with IP 192.16.1.6 (hosted on chassis sca15-rain06) is sending traffic to the underlay, the traffic is tunneled to sca15-rain05 first, because that is where the DR port is, and then it is sent to the underlay via the physical/localnet bridge there. It was that extra hop I was trying to avoid. i.e Have the NAT done by the flows on chassis sca15-rain06 and be sent to the underlay by the localnet/physical bridge on that
chassis. But seems like this is not possible?

Brendan





Thanks,
Han

> Thanks
>
>
> Brendan
>
> _______________________________________________
> discuss mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss <https://urldefense.com/v3/__https://mail.openvswitch.org/mailman/listinfo/ovs-discuss__;!!ACWV5N9M2RV99hQ!eLeDr4V5M3ZpUlT0c16IbDo2a_BA68nhN4zwO1UE3Vb2WRcEBGPpuJUdL8yiQIsRHic$>
_______________________________________________
discuss mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to