[ovs-dev] [PATCH 1/2] vswitchd: Allow user to directly specify sFlow agent address.
Ben Pfaff
blp at ovn.org
Fri Apr 13 17:32:26 UTC 2018
The IPv6 feature was more work than I expected, but I did post the
series:
https://patchwork.ozlabs.org/project/openvswitch/list/?series=38837&state=*
On Tue, Apr 10, 2018 at 12:23:12PM -0700, Ben Pfaff wrote:
> It's currently IPv4 only but it's a good idea to add IPv6 support. I'll
> put that on my to-do list.
>
> It's also a good idea to warn about the potential perils of this
> feature. I'll do that too.
>
> I'll try to get to this soon, neither feature should be much work.
>
> On Tue, Apr 10, 2018 at 10:13:24AM -0700, Neil McKee wrote:
> > No objections. Sounds useful for testing, and for situations where
> > the agent-address selection has been made by a higher controller.
> > Just one question: it seems like it is only IPv4: can an IPv6
> > agent-address be configured this way too?
> >
> > I'll admit to this triggering bad memories of a situation when two
> > switches were sending sFlow using each other's agent address, so
> > perhaps a warning not to use this "manually" would be appropriate?
> >
> > ------
> > Neil McKee
> > InMon Corp.
> > http://www.inmon.com
> >
> >
> > On Sat, Mar 31, 2018 at 5:12 PM, Ben Pfaff <blp at ovn.org> wrote:
> > > At least for testing purposes, and perhaps in production, it is useful to
> > > be able to fix the agent IP address directly, rather that indirecting it
> > > through a device name or the routing table.
> > >
> > > This commit uses this feature to fix the agent IP address used in the unit
> > > tests. This will be particularly useful in an upcoming commit that
> > > disables the use of the system routing table in the unit tests, to make
> > > the tests' results independent of the host's routes.
> > >
> > > CC: Neil McKee <neil.mckee at inmon.com>
> > > Signed-off-by: Ben Pfaff <blp at ovn.org>
> > > ---
> > > ofproto/ofproto-dpif-sflow.c | 3 ++-
> > > tests/ofproto-dpif.at | 8 ++++----
> > > vswitchd/vswitch.xml | 25 ++++++++++++++++++-------
> > > 3 files changed, 24 insertions(+), 12 deletions(-)
> > >
> > > diff --git a/ofproto/ofproto-dpif-sflow.c b/ofproto/ofproto-dpif-sflow.c
> > > index 60e1b4e0a661..5d8c0e19f8e3 100644
> > > --- a/ofproto/ofproto-dpif-sflow.c
> > > +++ b/ofproto/ofproto-dpif-sflow.c
> > > @@ -453,7 +453,8 @@ sflow_choose_agent_address(const char *agent_device,
> > > agent_addr->type = SFLADDRESSTYPE_IP_V4;
> > >
> > > if (agent_device) {
> > > - if (!netdev_get_in4_by_name(agent_device, &in4)) {
> > > + if (!netdev_get_in4_by_name(agent_device, &in4)
> > > + || !lookup_ip(agent_device, &in4)) {
> > > goto success;
> > > }
> > > }
> > > diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at
> > > index d2058eddd3eb..60f28e2a08dd 100644
> > > --- a/tests/ofproto-dpif.at
> > > +++ b/tests/ofproto-dpif.at
> > > @@ -6333,7 +6333,7 @@ ovs-vsctl \
> > > set Interface p1 options:ifindex=1003 -- \
> > > set Bridge br0 sflow=@sf -- \
> > > --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" \
> > > - header=128 sampling=1 polling=1
> > > + header=128 sampling=1 polling=1 agent=127.0.0.1
> > >
> > > dnl sleep long enough to get the sFlow datagram flushed out (may be delayed for up to 1 second)
> > > AT_CHECK([ovs-appctl time/warp 2000 100], [0], [ignore])
> > > @@ -6382,7 +6382,7 @@ AT_CHECK([ovs-ofctl add-flow br0 action=3])
> > > dnl enable sflow
> > > ovs-vsctl \
> > > set Bridge br0 sflow=@sf -- \
> > > - --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" \
> > > + --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" agent=127.0.0.1 \
> > > header=128 sampling=1 polling=0
> > >
> > > dnl introduce a packet that will be flooded to the tunnel
> > > @@ -6474,7 +6474,7 @@ AT_CHECK([ovs-appctl netdev-dummy/receive p0 'recirc_id(0),in_port(1),eth(src=f8
> > > dnl configure sflow on int-br only
> > > ovs-vsctl \
> > > set Bridge int-br sflow=@sf -- \
> > > - --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" \
> > > + --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" agent=127.0.0.1 \
> > > header=128 sampling=1 polling=0
> > >
> > > dnl set up route to 192.168.1.2 via br0
> > > @@ -6553,7 +6553,7 @@ ovs-appctl time/stop
> > > dnl configure sflow
> > > ovs-vsctl \
> > > set Bridge br0 sflow=@sf -- \
> > > - --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" \
> > > + --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" agent=127.0.0.1 \
> > > header=128 sampling=1 polling=0
> > >
> > > AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x8847),mpls(label=11,tc=3,ttl=64,bos=1)'])
> > > diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
> > > index f899a19764a4..9c2a8263e604 100644
> > > --- a/vswitchd/vswitch.xml
> > > +++ b/vswitchd/vswitch.xml
> > > @@ -5099,13 +5099,24 @@ ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch options:peer=p1 \
> > > monitoring of switches.</p>
> > >
> > > <column name="agent">
> > > - Name of the network device whose IP address should be reported as the
> > > - ``agent address'' to collectors. If not specified, the agent device is
> > > - figured from the first target address and the routing table. If the
> > > - routing table does not contain a route to the target, the IP address
> > > - defaults to the <ref table="Controller" column="local_ip"/> in the
> > > - collector's <ref table="Controller"/>. If an agent IP address cannot be
> > > - determined any of these ways, sFlow is disabled.
> > > + <p>
> > > + Determines the agent address, that is, the IP address reported to
> > > + collectors as the source of the sFlow data. It may be an IP address or
> > > + the name of a network device. In the latter case, the network device's
> > > + IP address is used,
> > > + </p>
> > > +
> > > + <p>
> > > + If not specified, the agent device is figured from the first target
> > > + address and the routing table. If the routing table does not contain a
> > > + route to the target, the IP address defaults to the <ref
> > > + table="Controller" column="local_ip"/> in the collector's <ref
> > > + table="Controller"/>.
> > > + </p>
> > > +
> > > + <p>
> > > + If an agent IP address cannot be determined, sFlow is disabled.
> > > + </p>
> > > </column>
> > >
> > > <column name="header">
> > > --
> > > 2.16.1
> > >
More information about the dev
mailing list