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

List:       openvswitch-discuss
Subject:    [ovs-discuss] How to support traceroute using OVS
From:       blp () ovn ! org (Ben Pfaff)
Date:       2015-11-29 19:38:35
Message-ID: 20151129193835.GP12474 () ovn ! org
[Download RAW message or body]

On Fri, Nov 27, 2015 at 11:23:09PM -1000, Nicholas Bastin wrote:
> On Thu, Nov 26, 2015 at 9:44 PM, Chao Hu <chao.hu at ericsson.com> wrote:
> 
> >  In the ovs-ofctl manual, it's said in dec_ttl action that "If controller
> > ids are not specified, the "packet_in" message will be sent only to the
> > controllers having controller id zero which have registered for the invalid
> > ttl packets."  In my test, I didn't specify the controller's controller-id,
> > which should have 0 by default.  And it's said in the code of ofproto.c
> > that "OFPC_INVALID_TTL_TO_CONTROLLER is deprecated in OF 1.3", does it
> > mean in OF1.3, "packet_in" on invalid ttl will be sent by default and no
> > register is needed? Or such packet-in is not supported in OF1.3?
> >
> 
> The spec is unclear.  In fact it doesn't even specify what an "invalid TTL"
> value would actually be.  (The OF 1.1 spec specified "invalid" as 0 or 1 in
> a code comment, but future specs seem to have eliminated even that hint of
> what values qualifies as "invalid" - I did not then, nor do I now, know why
> 1 would be regarded as an invalid TTL value for a packet transiting a
> layer-2 switch).

Well, that's a mess.

I've filed a bug report EXT-559 with the ONF working group, so perhaps
we can at least get "invalid TTL" defined for OF1.6.

> > BTW, match on "nw_ttl" seems also not supported in OF1.3.
> >
> 
> This was never supported in the spec, but it's possible that OVS supported
> that match field at some point (I'm not sure).

Yes, OVS has supported matching on the IPv4/v6 TTL/hop limit since Open
vSwitch version 1.4.

> > How to solve this problem?
> >
> 
> You probably can't, at least not in a wholly satisfactory way, without
> modifying the source to OVS, or inlining a function (linux tap interface
> driver, etc.) in the path on each port.  What you really want to do is get
> OVS to issue a packet-out of an ICMP Time Exceeded when an incoming packet
> reaches a TTL of 0 within the pipeline (modulo the times when you actually
> should send a Destination Unreachable reply), but this has all kinds of
> nasty edge cases.  

We're working to make this possible.  What kinds of nasty edge cases do
you have in mind?  I'd like to make everything as correct as possible,
obviously.

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

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