summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/automake.mk2
-rw-r--r--Documentation/howto/index.rst1
-rw-r--r--Documentation/howto/sflow.pngbin0 -> 85755 bytes
-rw-r--r--Documentation/howto/sflow.rst171
4 files changed, 174 insertions, 0 deletions
diff --git a/Documentation/automake.mk b/Documentation/automake.mk
index a8fa927ef..e4d792d07 100644
--- a/Documentation/automake.mk
+++ b/Documentation/automake.mk
@@ -43,6 +43,8 @@ EXTRA_DIST += \
Documentation/howto/openstack-containers.rst \
Documentation/howto/qos.png \
Documentation/howto/qos.rst \
+ Documentation/howto/sflow.png \
+ Documentation/howto/sflow.rst \
Documentation/howto/vlan.png \
Documentation/howto/vlan.rst \
Documentation/howto/vtep.rst \
diff --git a/Documentation/howto/index.rst b/Documentation/howto/index.rst
index 0246b462d..2518043a0 100644
--- a/Documentation/howto/index.rst
+++ b/Documentation/howto/index.rst
@@ -42,6 +42,7 @@ topics covered herein, refer to :doc:`/topics/index`.
vlan
qos
vtep
+ sflow
.. toctree::
:maxdepth: 1
diff --git a/Documentation/howto/sflow.png b/Documentation/howto/sflow.png
new file mode 100644
index 000000000..42667ce0a
--- /dev/null
+++ b/Documentation/howto/sflow.png
Binary files differ
diff --git a/Documentation/howto/sflow.rst b/Documentation/howto/sflow.rst
new file mode 100644
index 000000000..1152a7db5
--- /dev/null
+++ b/Documentation/howto/sflow.rst
@@ -0,0 +1,171 @@
+..
+ Licensed under the Apache License, Version 2.0 (the "License"); you may
+ not use this file except in compliance with the License. You may obtain
+ a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ License for the specific language governing permissions and limitations
+ under the License.
+
+ Convention for heading levels in Open vSwitch documentation:
+
+ ======= Heading 0 (reserved for the title in a document)
+ ------- Heading 1
+ ~~~~~~~ Heading 2
+ +++++++ Heading 3
+ ''''''' Heading 4
+
+ Avoid deeper levels because they do not render well.
+
+================================
+Monitoring VM Trafic Using sFlow
+================================
+
+This document describes how to use Open vSwitch is to monitor traffic sent
+between two VMs on the same host using an sFlow collector.
+VLANs.
+
+.. image:: sflow.png
+ :align: center
+
+Setup
+-----
+
+This guide assumes the environment is configured as described below.
+
+Two Physical Networks
+~~~~~~~~~~~~~~~~~~~~~
+
+- Data Network
+
+ Ethernet network for VM data traffic. For experimentation, this physical
+ network is optional. You can instead connect all VMs to a bridge that is not
+ connected to a physical interface.
+
+- Management Network
+
+ This network must exist, as it is used to send sFlow data from the agent to
+ the remote collector.
+
+Two Physical Hosts
+~~~~~~~~~~~~~~~~~~
+
+The environment assumes the use of two hosts: `host1` and `hostMon`. `host` is
+a hypervisor that run Open vSwitch and has two NICs:
+
+- eth0 is connected to the Data Network. No IP address can be assigned on eth0
+ because it is part of an OVS bridge.
+
+- eth1 is connected to the Management Network. eth1 has an IP address for
+ management traffic, including sFlow.
+
+`hostMon` can be any computer that can run the sFlow collector. For this
+cookbook entry, we use `sFlowTrend
+<http://www.inmon.com/products/sFlowTrend.php>`__, a free sFlow collector that
+is a simple cross-platform Java download. Other sFlow collectors should work
+equally well. `hostMon` has a single NIC, `eth0`, that is connected to the
+Management Network. `eth0` has an IP adress that can reach `eth1` on `host1`.
+
+Two Virtual Machines
+~~~~~~~~~~~~~~~~~~~~
+
+This guide uses two virtual machines - `vm1` and `vm2`- running on `host1`.
+
+.. note::
+ For Xen/XenServer, VM interfaces appears as Linux devices with names like
+ ``vif1.0``. Other Linux systems may present these interfaces as ``vnet0``,
+ ``vnet1``, etc.
+
+Configuration Steps
+-------------------
+
+On `host1`, define the following configuration values in your shell
+environment::
+
+ COLLECTOR_IP=10.0.0.1
+ COLLECTOR_PORT=6343
+ AGENT_IP=eth1
+ HEADER_BYTES=128
+ SAMPLING_N=64
+ POLLING_SECS=10
+
+Port 6343 (``COLLECTOR_PORT``) is the default port number for sFlowTrend. If
+you are using an sFlow collector other than sFlowTrend, set this value to the
+appropriate port for your particular collector. Set your own IP address for the
+collector in the place of 10.0.0.1 (``COLLECTOR_IP``). Setting the ``AGENT_IP``
+value to eth1 indicates that the sFlow agent should send traffic from `eth1`'s
+IP address. The other values indicate settings regarding the frequency and type
+of packet sampling that sFlow should perform.
+
+Still on `host1`, run the following command to create an sFlow configuration
+and attach it to bridge br0::
+
+ $ ovs-vsctl -- --id=@sflow create sflow agent=${AGENT_IP} \
+ target="${COLLECTOR_IP}:${COLLECTOR_PORT}" header=${HEADER_BYTES} \
+ sampling=${SAMPLING_N} polling=${POLLING_SECS} \
+ -- set bridge br0 sflow=@sflow
+
+Make note of the UUID that is returned by this command; this value is necessary
+to remove the sFlow configuration.
+
+On `hostMon`, go to the `sFlowTrend
+<http://www.inmon.com/products/sFlowTrend.php>`__ and click "Install" in the
+upper right-hand corner. If you have Java installed, this will download and
+start the sFlowTrend application. Once sFlowTrend is running, the light in the
+lower right-hand corner of the sFlowTrend application should blink green to
+indicate that the collector is receiving traffic.
+
+The sFlow configuration is now complete, and sFlowTrend on `hostMon` should be
+receiving sFlow data from OVS on `host1`.
+
+To configure sFlow on additional bridges, just replace ``br0`` in the above
+command with a different bridge name.
+
+To remove sFlow configuration from a bridge (in this case, ``br0``), run this
+command, where "sFlow UUID" is the UUID returned by the command used to set the
+sFlow configuration initially::
+
+ $ ovs-vsctl remove bridge br0 sflow <sFlow UUID>
+
+To see all current sets of sFlow configuration parameters, run::
+
+ $ ovs-vsctl list sflow
+
+Troubleshooting
+---------------
+
+If sFlow data isn't being collected and displayed by sFlowTrend, check the
+following items:
+
+- Make sure the VMs are sending/receiving network traffic over bridge br0,
+ preferably to multiple other hosts and using a variety of protocols.
+
+- To confirm that the agent is sending traffic, check that running the
+ following command shows that the agent on the physical server is sending
+ traffic to the collector IP address (change the port below to match the port
+ your collector is using)::
+
+ $ tcpdump -ni eth1 udp port 6343
+
+If no traffic is being sent, there is a problem with the configuration of OVS.
+If traffic is being sent but nothing is visible in the sFlowTrend user
+interface, this may indicate a configuration problem with the collector.
+
+Check to make sure the host running the collector (`hostMon`) does not have a
+firewall that would prevent UDP port 6343 from reaching the collector.
+
+Credit
+------
+
+This document is heavily based on content from Neil McKee at InMon:
+
+- `https://mail.openvswitch.org/pipermail/ovs-dev/2010-July/165245.html
+ <https://mail.openvswitch.org/pipermail/ovs-dev/2010-July/165245.html>`__
+
+- `http://blog.sflow.com/2010/01/open-vswitch.html
+ <http://blog.sflow.com/2010/01/open-vswitch.html>`__ (note: the configuration
+ syntax is out of date, but the high-level descriptions are correct)