OK, thanks for the explanation. I guess the part that I'm not entirely
sure about is what is the tradeoff in modeling this as being
per-bridge rather than per-port? It seems like like in the case of
per-bridge sampling you are still including the ifIndex with the
sample metadata so you don't lose any information. Is there any
disadvantage?

On Wed, Apr 24, 2013 at 2:04 PM, Neil Mckee <neil.mc...@inmon.com> wrote:
> Actually it wasn't just tunnel ports.  Anything that didn't have an ifIndex 
> was mapping to the same sFlow datasource.  Even if it was on another bridge.
>
> Besides, sFlow wouldn't want to model every tunnel as a separate datasource 
> either -- even if they did have ifIndex numbers.  There might be thousands.  
> The idea is to have a small number of fairly-persistent datasources and 
> report on tunnels by annotating individual packet samples (see below).
>
> I think the original thinking (years ago) was that we might ignore all 
> samples that did not ingress on an ifindex-interface,  but that's not what is 
> happening,  and it's not what we want to happen now anyway.   Now it's quite 
> common to see ingress-sampled packets that we really want to report on where 
> that ingress port doesn't have an ifIndex (GRE tunnels being just the most 
> obvious example).    So if we drop the per-interface-sampler representation 
> and adopt one that more accurately represents what is going on below then it 
> falls out correctly,  and still conforms to the sFlow v5 standard.
>
> So looking at the code,  the hash-table that the ofproto-sflow module 
> maintains to look up odp_port -> struct of_port becomes just a cache of the 
> ifindex ports.  It is still needed so that the counter-push data-sources can 
> retrieve the latest stats from the netdev,  and so that the packet samples 
> can have their ingress ifindex filled in where applicable.   However if an 
> ingress sample comes in for some other port and there is no lookup in the 
> table then it's no longer a show-stopper.  It just means that the packet 
> sample goes out with inputPort = 0 (meaning "ifindex unknown ").
>
> Ideally,  we would want to know the original ifIndex of the physical port 
> where that tunnel first entered the hypervisor,   but that seems hard to know.
>
> Looking ahead, it would  be good to know the details of the tunnel too,  so 
> we could annotate the packet-sample with another structure:
> http://sflow.org/sflow_tunnels.txt
>
> but that might be part of a broader discussion where we look at ways to 
> expose more state to the ofproto-sflow module.  For example,  I am currently 
> looking at how the bundle information might be exposed so that we can also 
> fill in these structures:
> http://www.sflow.org/sflow_lag.txt
>
> And sFlow has standard structures for reporting on MPLS too:
> http://www.sflow.org/SFLOW-STRUCTS5.txt
>
> It seems like there is choice between (1) pushing the information down to 
> ofproto-sflow on a state-change (as we do with that odp_port -> of_port 
> lookup) or (2) providing callback hooks that allow ofproto-dpif-sflow to ask 
> ofproto-dpif questions about tunnels, bundles and more.   Right now it looks 
> to me like the latter would be better,  because it allows ofproto-dpif to 
> completely control what is exposed and keep a tight grip on all it's internal 
> pointers.  But maybe there are other architectural considerations?
>
> Neil
>
>
> On Apr 24, 2013, at 11:09 AM, Jesse Gross wrote:
>
>> On Wed, Apr 24, 2013 at 10:46 AM, Neil Mckee <neil.mc...@inmon.com> wrote:
>>> Adjust sFlow packet samplers to better reflect the underlying per-bridge
>>> sampling that is really happening,  rather than modeling it as per-interface
>>> sampling. This fixes an aliasing issue: tunnel traffic sampled on different
>>> bridges was all being reported against the same sFlow datasource.
>>>
>>> The sFlow counter samples remain unchanged,  reporting only on interfaces
>>> that have valid ifIndex numbers.
>>>
>>> See definition of SFlowDataSource in http://sflow.org/sflow_version_5.txt.
>>>
>>> Signed-off-by: Neil McKee <neil.mc...@inmon.com>
>>
>> It actually is possible to disambiguate between tunnel ports in order
>> to continue reporting on a per-port basis, have you considered doing
>> that?
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to