[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openvswitch-dev
Subject:    [ovs-dev] [PATCH RFC 0/3] - send garp on localnet
From:       dlu998 () gmail ! com (Darrell Ball)
Date:       2016-03-31 23:48:31
Message-ID: CAKgLnsFSQupX3oDM4ZQCbKTnxUbjv5coG2TBz+ytskqAReeYhw () mail ! gmail ! com
[Download RAW message or body]

On Thu, Mar 31, 2016 at 3:02 PM, Ramu Ramamurthy <ramu.ramamurthy at gmail.com>
wrote:

> >
> > Why did you choose to use reply packets ?
> >
> > request packets are less likely to be rejected by external networks
> > and I think thats discussed in the RFC
> >
> >
>
> I wanted to use the GARP request, but found a problem.
>
> OVN currently programs flows to respond to gratuitous arp requests from
> VMs,
> Such flows also respond to ARP probes from VMs. This behavior needs to
> change so that OVN must not respond to GARP requests or ARP probes.
> It must flood them. This change is a work in progress.
> In fact, some DHCP clients send ARP probes after the DHCP ACK to
> verify no address collisions, and upon seeing ARP probe response will
> decline
> dhcp offered IP.
>
> As soon as the above problem is fixed, I can update the code to
> generate GARP requests.
>



Practically speaking, you will need to fix that for real world utility,
although I am sure an
autotest test can be written that "passes" now.


On a separate but related topic, northd programs localnet to not respond to
regular
arp requests coming from the network via a localnet port.

How can IP traffic be initiated from a VM outside OVN control or from the
physical network to a VM inside OVN controlled HV, connected via a localnet
port ?

Are you depending on flooding the network with gARPs periodically (to
handle new external hosts) for all VMs on all HVs inside OVN, attached to
localnet ?

    /* Ingress table 3: ARP responder, skip requests coming from localnet
ports.
     * (priority 100). */
    HMAP_FOR_EACH (op, key_node, ports) {
        if (!op->nbs) {
            continue;
        }

        if (!strcmp(op->nbs->type, "localnet")) {
            char *match = xasprintf("inport == %s", op->json_key);
            ovn_lflow_add(lflows, op->od, S_SWITCH_IN_ARP_RSP, 100,
                          match, "next;");
            free(match);
        }
    }

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic