On Mon, Feb 3, 2014 at 9:36 AM, Ben Pfaff <b...@nicira.com> wrote:
> On Sun, Feb 02, 2014 at 10:45:29PM -0800, Jesse Gross wrote:
>> On Fri, Jan 31, 2014 at 4:59 PM, Ben Pfaff <b...@nicira.com> wrote:
>> > On Fri, Jan 31, 2014 at 10:38:20AM -0800, Jesse Gross wrote:
>> >> On Thu, Jan 30, 2014 at 1:31 PM, Thomas Morin <thomas.mo...@orange.com> 
>> >> wrote:
>> >> > Hi,
>> >> >
>> >> > I ran into the same issue as the one described below (post on 
>> >> > ovs-discuss a
>> >> > few months back).
>> >> >
>> >> > The goal is to use a vport tunnel configured to use a flow-based remote 
>> >> > IP,
>> >> > e.g:
>> >> >     ovs-vscl add-port br-vnet tun-port -- set Interface tun-port 
>> >> > type=gre
>> >> > options:remote_ip=flow
>> >> >
>> >> > This works fine on the sending OVS, but on the receiving OVS the same 
>> >> > vport
>> >> > won't receive any traffic (packets received trigger a "receive tunnel 
>> >> > port
>> >> > not found" warning, and are not further processed).
>> >> >
>> >> > The original poster had found a workaround relying on also using
>> >> > options:key=flow, but as far as I understand, this work around should 
>> >> > not be
>> >> > necessary: it just seems that the tunnel matching code is missing a 
>> >> > match.
>> >> >
>> >> > --- a/ofproto/tunnel.c
>> >> > +++ b/ofproto/tunnel.c
>> >> > @@ -427,8 +427,9 @@ tnl_find(const struct flow *flow) 
>> >> > OVS_REQ_RDLOCK(rwlock)
>> >> >          { false, false, IP_SRC_ANY },  /* remote_ip, in_key. */
>> >> >          { true,  false, IP_SRC_CFG },  /* remote_ip, local_ip. */
>> >> >          { true,  false, IP_SRC_ANY },  /* remote_ip. */
>> >> > -        { true,  true,  IP_SRC_ANY },  /* Flow-based remote. */
>> >> > +        { true,  true,  IP_SRC_ANY },  /* Flow-based remote and 
>> >> > flow-based
>> >> > key. */
>> >> >          { true,  true,  IP_SRC_FLOW }, /* Flow-based everything. */
>> >> > +        { false, true,  IP_SRC_ANY },  /* Flow-based remote */
>> >> >      };
>> >> >
>> >> >      const struct tnl_match_pattern *p;
>> >> >
>> >> > With this patch, a tunnel configured with just remote_ip=flow will work 
>> >> > fine
>> >> > on the receiving end.
>> >> > One thing that I'm not sure is at which position this pattern should 
>> >> > appear
>> >> > in the list.
>> >> > The patch also changes the comment for true/true/IP_SRC_ANY.
>> >>
>> >> This looks fine to me although I think that it the new entry belongs
>> >> first in the list of flow-based types. Can you submit a formal patch
>> >> with this change?
>> >
>> > By my count there are 12 possible entries in the list of
>> > possibilities.  I don't know if there's any point in adding them one
>> > by one.  I guess we might as well add all of them at one
>> > systematically.
>> >
>> > How about this, then?  It's not correct--I haven't debugged it--but it
>> > gives the flavor of the idea.
>>
>> I think it is a reasonable thing to do although I think it might
>> change the priority order that we have now - should we switch the two
>> outer loops when we do the lookup?
>
> I'm fairly sure that the order here is correct because this program:
>
>     #include <stdio.h>
>
>     int
>     main(void)
>     {
>         int in_key_flow, ip_dst_flow, ip_src;
>         for (in_key_flow = 0; in_key_flow < 2; in_key_flow++) {
>             for (ip_dst_flow = 0; ip_dst_flow < 2; ip_dst_flow++) {
>                 for (ip_src = 0; ip_src < 3; ip_src++) {
>                     printf("%d %d %d\n", in_key_flow, ip_dst_flow, ip_src);
>                 }
>             }
>         }
>         return 0;
>     }
>
> prints an order that matches the patterns[] array (with lines
> deleted):

You're right, I just eyeballed it before.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to