From bcbb119b20d33321c047cdc738541acfe666dda1 Mon Sep 17 00:00:00 2001 From: Pim van Pelt Date: Sun, 9 Feb 2025 17:51:05 +0100 Subject: [PATCH] Add article sflow-3 --- content/articles/2025-02-08-sflow-3.md | 849 +++++++++++++++++++++ static/assets/sflow/sflow-all.pcap | Bin 0 -> 458278 bytes static/assets/sflow/sflow-host.pcap | Bin 0 -> 3894 bytes static/assets/sflow/sflow-interface.pcap | Bin 0 -> 4778 bytes static/assets/sflow/sflow-lab-trex.png | 3 + static/assets/sflow/sflow-lab.png | 3 + static/assets/sflow/sflow-overview.png | 3 + static/assets/sflow/sflow-vpp-overview.png | 3 + static/assets/sflow/sflow-wireshark.png | 3 + 9 files changed, 864 insertions(+) create mode 100644 content/articles/2025-02-08-sflow-3.md create mode 100644 static/assets/sflow/sflow-all.pcap create mode 100644 static/assets/sflow/sflow-host.pcap create mode 100644 static/assets/sflow/sflow-interface.pcap create mode 100644 static/assets/sflow/sflow-lab-trex.png create mode 100644 static/assets/sflow/sflow-lab.png create mode 100644 static/assets/sflow/sflow-overview.png create mode 100644 static/assets/sflow/sflow-vpp-overview.png create mode 100644 static/assets/sflow/sflow-wireshark.png diff --git a/content/articles/2025-02-08-sflow-3.md b/content/articles/2025-02-08-sflow-3.md new file mode 100644 index 0000000..9b09e6d --- /dev/null +++ b/content/articles/2025-02-08-sflow-3.md @@ -0,0 +1,849 @@ +--- +date: "2025-02-08T07:51:23Z" +title: 'VPP with sFlow - Part 3' +--- + +# Introduction + +{{< image float="right" src="/assets/sflow/sflow.gif" alt="sFlow Logo" width="12em" >}} + +In the second half of last year, I picked up a project together with Neil McKee of +[[inMon](https://inmon.com/)], the care takers of [[sFlow](https://sflow.org)]: an industry standard +technology for monitoring high speed networks. `sFlow` gives complete visibility into the +use of networks enabling performance optimization, accounting/billing for usage, and defense against +security threats. + +The open source software dataplane [[VPP](https://fd.io)] is a perfect match for sampling, as it +forwards packets at very high rates using underlying libraries like [[DPDK](https://dpdk.org/)] and +[[RDMA](https://en.wikipedia.org/wiki/Remote_direct_memory_access)]. A clever design choice in the +so called _Host sFlow Daemon_ [[host-sflow](https://github.com/sflow/host-sflow)], which allows for +a small portion of code to _grab_ the samples, for example in a merchant silicon ASIC or FPGA, but +also in the VPP software dataplane. The agent then _transmits_ these samples using a Linux kernel +feature called [[PSAMPLE](https://github.com/torvalds/linux/blob/master/net/psample/psample.c)]. +This greatly reduces the complexity of code to be implemented in the forwarding path, while at the +same time bringing consistency to the `sFlow` delivery pipeline by (re)using the `hsflowd` business +logic for the more complex state keeping, packet marshalling and transmission from the _Agent_ to a +central _Collector_. + +In this third article, I wanted to spend some time discussing how samples make their way out of the +VPP dataplane, and into higher level tools. + +## Recap: sFlow + +{{< image float="left" src="/assets/sflow/sflow-overview.png" alt="sFlow Overview" width="14em" >}} + +sFlow describes a method for Monitoring Traffic in Switched/Routed Networks, originally described in +[[RFC3176](https://datatracker.ietf.org/doc/html/rfc3176)]. The current specification is version 5 +and is homed on the sFlow.org website [[ref](https://sflow.org/sflow_version_5.txt)]. Typically, a +Switching ASIC in the dataplane (seen at the bottom of the diagram to the left) is asked to copy +1-in-N packets to local sFlow Agent. + +**Samples**: The agent will copy the first N bytes (typically 128) of the packet into a sample. As +the ASIC knows which interface the packet was received on, the `inIfIndex` will be added. After the +egress port(s) are found in an L2 FIB, or a next hop (and port) is found after a routing decision, +the ASIC can annotate the sample with this `outIfIndex` and `DstMAC` metadata as well. + +**Drop Monitoring**: There's one rather clever insight that sFlow gives: what if the packet _was +not_ routed or switched, but rather discarded? For this, sFlow is able to describe the reason for +the drop. For example, the ASIC receive queue could have been overfull, or it did not find a +destination to forward the packet to (no FIB entry), perhaps it was instructed by an ACL to drop the +packet or maybe even tried to transmit the packet but the physical datalink layer had to abandon the +transmission for whatever reason (link down, TX queue full, link saturation, and so on). It's hard +to overstate how important it is to have this so-called _drop monitoring_, as operators often spend +hours and hours figuring out _why_ packets are lost their network or datacenter switching fabric. + +**Metadata**: The agent may have other metadata as well, such as which prefix was the source and +destination of the packet, what additional RIB information do we have (AS path, BGP communities, and +so on). This may be added to the sample record as well. + +**Counters**: Since we're doing sampling of 1:N packets, we can estimate total traffic in a +reasonably accurate way. Peter and Sonia wrote a succint +[[paper](https://sflow.org/packetSamplingBasics/)] about the math, so I won't get into that here. +Mostly because I am but a software engineer, not a statistician... :) However, I will say this: if we +sample a fraction of the traffic but know how many bytes and packets we saw in total, we can provide +an overview with a quantifiable accuracy. This is why the Agent will periodically get the interface +counters from the ASIC. + +**Collector**: One or more samples can be concatenated into UDP messages that go from the Agent to a +central _sFlow Collector_. The heavy lifting in analysis is done upstream from the switch or router, +which is great for performance. Many thousands or even tens of thousands of agents can forward +their samples and interface counters to a single central collector, which in turn can be used to +draw up a near real time picture of the state of traffic through even the largest of ISP networks or +datacenter switch fabrics. + +In sFlow parlance [[VPP](https://fd.io/)] and its companion `hsflowd` is an _Agent_ (it sends the +UDP packets over the network), and for example the commandline tool `sflowtool` could be a +_Collector_ (it receives the UDP packets). + +## Recap: sFlow in VPP + +First, I have some pretty good news to report - our work on this plugin was +[[merged](https://gerrit.fd.io/r/c/vpp/+/41680)] and will be included in the VPP 25.02 release in a +few weeks! Last weekend, I gave a lightning talk at +[[FOSDEM](https://fosdem.org/2025/schedule/event/fosdem-2025-4196-vpp-monitoring-100gbps-with-sflow/)] +and caught up with a lot of community members and network- and software engineers. I had a great +time. + +in the dataplane low, we get both high performance, and a smaller probability of bugs causing harm. +And I do like simple implementations, as they tend to cause less _SIGSEGVs_. The architecture of the +end to end solution consists of three distinct parts, each with their own risk and performance +profile: + +{{< image float="left" src="/assets/sflow/sflow-vpp-overview.png" alt="sFlow VPP Overview" width="18em" >}} + +**sFlow worker node**: Its job is to do what the ASIC does in the hardware case. As VPP moves +packets from `device-input` to the `ethernet-input` nodes in its forwarding graph, the sFlow plugin +will inspect 1-in-N, taking a sample for further processing. Here, we don't try to be clever, simply +copy the `inIfIndex` and the first bytes of the ethernet frame, and append them to a +[[FIFO](https://en.wikipedia.org/wiki/FIFO_(computing_and_electronics))] queue. If too many samples +arrive, samples are dropped at the tail, and a counter incremented. This way, I can tell when the +dataplane is congested. Bounded FIFOs also provide fairness: it allows for each VPP worker thread to +get their fair share of samples into the Agent's hands. + +**sFlow main process**: There's a function running on the _main thread_, which shifts further +processing time _away_ from the dataplane. This _sflow-process_ does two things. Firstly, it +consumes samples from the per-worker FIFO queues (both forwarded packets in green, and dropped ones +in red). Secondly, it keeps track of time and every few seconds (20 by default, but this is +configurable), it'll grab all interface counters from those interfaces for which we have sFlow +turned on. VPP produces _Netlink_ messages and sends them to the kernel. + +**host-sflow**: The third component is external to VPP: `hsflowd` subscribes to the _Netlink_ +messages. It goes without saying that `hsflowd` is a battle-hardened implementation running on +hundreds of different silicon and software defined networking stacks. The PSAMPLE stuff is easy, +this module already exists. But Neil implements a _mod_vpp_ which can grab interface names and their +`ifIndex`, and counter statistics. VPP emits this data as _Netlink_ `USERSOCK` messages alongside +the PSAMPLEs. + + +By the way, I've written about _Netlink_ before when discussing the [[Linux Control Plane]({{< ref +2021-08-25-vpp-4 >}})] plugin. It's a mechanism for programs running in userspace to share +information with the kernel. In the Linux kernel, packets can be sampled as well, and sent from +kernel to userspace using a _PSAMPLE_ Netlink channel. However, the pattern is that of a message +producer/subscriber queue and nothing precludes one userspace process (VPP) to be the producer while +another (hsflowd) is the consumer! + +Assuming the sFlow plugin in VPP produces samples and counters properly, `hsflowd` will do the rest, +giving correctness and upstream interoperability pretty much for free. That's slick! + +### VPP: sFlow Configuration + +The solution that I offer is based on two moving parts. First, the VPP plugin configuration, which +turns on sampling at a given rate on physical devices, also known as _hardware-interfaces_. Second, +the open source component [[host-sflow](https://github.com/sflow/host-sflow/releases)] can be +configured as of release v2.11-5 [[ref](https://github.com/sflow/host-sflow/tree/v2.1.11-5)]. + +I can configure VPP in three ways: + +***1. VPP Configuration via CLI*** + +``` +pim@vpp0-0:~$ vppctl +vpp0-0# sflow sampling-rate 100 +vpp0-0# sflow polling-interval 10 +vpp0-0# sflow header-bytes 128 +vpp0-0# sflow enable GigabitEthernet10/0/0 +vpp0-0# sflow enable GigabitEthernet10/0/0 disable +vpp0-0# sflow enable GigabitEthernet10/0/2 +vpp0-0# sflow enable GigabitEthernet10/0/3 +``` + +The first three commands set the global defaults - in my case I'm going to be sampling at 1:100 +which is unusually high frequency. A production setup may take 1: so for a +1Gbps device 1:1'000 is appropriate. For 100GE, something between 1:10'000 and 1:100'000 is more +appropriate. The second command sets the interface stats polling interval. The default is to gather +these statistics every 20 seconds, but I set it to 10s here. Then, I instruct the plugin how many +bytes of the sampled ethernet frame should be taken. Common values are 64 and 128. I want enough +data to see the headers, like MPLS label(s), Dot1Q tag(s), IP header and TCP/UDP/ICMP header, but +the contents of the payload are rarely interesting for statistics purposes. Finally, I can turn on +the sFlow plugin on an interface with the `sflow enable-disable` CLI. In VPP, an idiomatic way to +turn on and off things is to have an enabler/disabler. It feels a bit clunky maybe to write `sflow +enable $iface disable` but it makes more logical sends if you parse that as "enable-disable" with +the default being the "enable" operation, and the alternate being the "disable" operation. + +***2. VPP Configuration via API*** + +I wrote a few API calls for the most common operations. Here's a snippet that shows the same calls +as from the CLI above, but in Python APIs: + +```python +from vpp_papi import VPPApiClient, VPPApiJSONFiles +import sys + +vpp_api_dir = VPPApiJSONFiles.find_api_dir([]) +vpp_api_files = VPPApiJSONFiles.find_api_files(api_dir=vpp_api_dir) +vpp = VPPApiClient(apifiles=vpp_api_files, server_address="/run/vpp/api.sock") +vpp.connect("sflow-api-client") +print(vpp.api.show_version().version) +# Output: 25.06-rc0~14-g9b1c16039 + +vpp.api.sflow_sampling_rate_set(sampling_N=100) +print(vpp.api.sflow_sampling_rate_get()) +# Output: sflow_sampling_rate_get_reply(_0=655, context=3, sampling_N=100) + +vpp.api.sflow_polling_interval_set(polling_S=10) +print(vpp.api.sflow_polling_interval_get()) +# Output: sflow_polling_interval_get_reply(_0=661, context=5, polling_S=10) + +vpp.api.sflow_header_bytes_set(header_B=128) +print(vpp.api.sflow_header_bytes_get()) +# Output: sflow_header_bytes_get_reply(_0=665, context=7, header_B=128) + +vpp.api.sflow_enable_disable(hw_if_index=1, enable_disable=True) +vpp.api.sflow_enable_disable(hw_if_index=2, enable_disable=True) +print(vpp.api.sflow_interface_dump()) +# Output: [ sflow_interface_details(_0=667, context=8, hw_if_index=1), +# sflow_interface_details(_0=667, context=8, hw_if_index=2) ] + +print(vpp.api.sflow_interface_dump(hw_if_index=2)) +# Output: [ sflow_interface_details(_0=667, context=9, hw_if_index=2) ] + +print(vpp.api.sflow_interface_dump(hw_if_index=1234)) ## Invalid hw_if_index +# Output: [] + +vpp.api.sflow_enable_disable(hw_if_index=1, enable_disable=False) +print(vpp.api.sflow_interface_dump()) +# Output: [ sflow_interface_details(_0=667, context=10, hw_if_index=2) ] +``` + +This short program toys around a bit with the sFlow API. I first set the sampling to 1:100 and get +the current value. Then I set the polling interval to 10s and retrieve the current value again. +Finally, I set the header bytes to 128, and retrieve the value again. + +Adding and removing interfaces shows the idiom I mentioned before - the API being an +`enable_disable()` call of sorts, and typically taking a flag if the operator wants to enable (the +default), or disable sFlow on the interface. Getting the list of enabled interfaces can be done with +the `sflow_interface_dump()` call, which returns a list of `sflow_interface_details` messages. + +I wrote an article showing the Python API and how it works in a fair amount of detail in a +[[previous article]({{< ref 2024-01-27-vpp-papi >}})], in case this type of stuff interests you. + +***3. VPPCfg YAML Configuration*** + +Writing on the CLI and calling the API is good and all, but many users of VPP have noticed that it +does not have any form of configuration persistence and that's on purpose. The project is a +programmable dataplane, and explicitly has left the programming and configuration as an exercise for +integrators. I have written a small Python program that takes a YAML file as input and uses it to +configure (and reconfigure, on the fly) the dataplane automatically. It's called +[[VPPcfg](https://github.com/pimvanpelt/vppcfg.git)], and I wrote some implementation thoughts on +its [[datamodel]({{< ref 2022-03-27-vppcfg-1 >}})] and its [[operations]({{< ref 2022-04-02-vppcfg-2 +>}})] so I won't repeat that here. Instead, I will just show the configuration: + +``` +pim@vpp0-0:~$ cat << EOF > vppcfg.yaml +interfaces: + GigabitEthernet10/0/0: + sflow: true + GigabitEthernet10/0/1: + sflow: true + GigabitEthernet10/0/2: + sflow: true + GigabitEthernet10/0/3: + sflow: true + +sflow: + sampling-rate: 100 + polling-interval: 10 + header-bytes: 128 +EOF +pim@vpp0-0:~$ vppcfg plan -c vppcfg.yaml -o /etc/vpp/config/vppcfg.vpp +[INFO ] root.main: Loading configfile vppcfg.yaml +[INFO ] vppcfg.config.valid_config: Configuration validated successfully +[INFO ] root.main: Configuration is valid +[INFO ] vppcfg.reconciler.write: Wrote 13 lines to /etc/vpp/config/vppcfg.vpp +[INFO ] root.main: Planning succeeded +pim@vpp0-0:~$ vppctl exec /etc/vpp/config/vppcfg.vpp +``` + +The slick thing about `vppcfg` is that if I were to change, say, the sampling-rate (setting it to +1000) and disable sFlow from an interface, say Gi10/0/0, I can re-run the `vppcfg plan` and `vppcfg +apply` stages and the VPP dataplane will reflect the newly declared configuration. + +### hsflowd: Configuration + +VPP will start to emit _Netlink_ messages, of type PSAMPLE with packet samples and of type USERSOCK +with the custom messages about the interface names and counters. These latter custom messages have +to be decoded, which is done by the _mod_vpp_ module, starting from release v2.11-5 +[[ref](https://github.com/sflow/host-sflow/tree/v2.1.11-5)]. + +Here's a minimalist configuration: + +``` +pim@vpp0-0:~$ cat /etc/hsflowd.conf +sflow { + collector { ip=127.0.0.1 udpport=16343 } + collector { ip=192.0.2.1 namespace=dataplane } + psample { group=1 } + vpp { osIndex=off } +} +``` + +{{< image width="5em" float="left" src="/assets/shared/warning.png" alt="Warning" >}} + +There are two important details that can be confusing at first: \ +**1.** kernel network namespaces \ +**2.** interface index namespaces + +#### hsflowd: Network namespace + +When started by systemd, `hsflowd` and VPP will normally both run in the _default_ network +namespace. Network namespaces virtualize Linux's network stack. On creation, a network namespace +contains only a loopback interface, and subsequently interfaces can be moved between namespaces. +Each network namespace will have its own set of IP addresses, its own routing table, socket listing, +connection tracking table, firewall, and other network-related resources. + +Given this, I can conclude that when the sFlow plugin opens a Netlink channel, it will +naturally do this in the network namespace that its VPP process is running in (the _default_ +namespace by default). It is therefore important that the recipient of all the Netlink messages, +notably `hsflowd` runs in ths ***same*** namespace as VPP. It's totally fine to run them in a +different namespace (eg. a container in Kubernetes or Docker), as long as they can see each other. + +It might pose a problem if the network connectivity lives in a different namespace than the default +one. One common example (that I heavily rely on at IPng!) is to create Linux Control Plane interface +pairs, _LIPs_, in a dataplane namespace. The main reason for doing this is to allow something like +FRR or Bird to completely govern the routing table in the kernel and keep it in-sync with the FIB in +VPP. In such a _dataplane_ network namespace, typically every interface is owned by VPP. + +Luckily, `hsflowd` can attach to one (default) namespace to get the PSAMPLEs, but create a socket in +a _different_ (dataplane) namespace to send packets to a collector. This explains the second +_collector_ entry in the config-file above. Here, `hsflowd` will send UDP packets to 192.0.2.1:6343 +from within the (VPP) dataplane namespace, and to 127.0.0.1:16343 in the default namespace. + +#### hsflowd: osIndex + +I hope the previous section made some sense, because this one will be a tad more esoteric. When +creating a network namespace, each interface will get its own uint32 interface index that identifies +it, and such an ID is typically called an `ifIndex`. It's important to note that the same number can +(and will!) occur multiple times, once for each namespace. Let me give you an example: + +``` +pim@summer:~$ ip link +1: lo: mtu 65536 qdisc noqueue state UNKNOWN ... + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +2: eno1: mtu 9000 qdisc mq master ipng-sl state UP ... + link/ether 00:22:19:6a:46:2e brd ff:ff:ff:ff:ff:ff + altname enp1s0f0 +3: eno2: mtu 900 qdisc mq master ipng-sl state DOWN ... + link/ether 00:22:19:6a:46:30 brd ff:ff:ff:ff:ff:ff + altname enp1s0f1 + +pim@summer:~$ ip netns exec dataplane ip link +1: lo: mtu 65536 qdisc noqueue state UNKNOWN ... + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +2: loop0: mtu 9216 qdisc mq state UP ... + link/ether de:ad:00:00:00:00 brd ff:ff:ff:ff:ff:ff +3: xe1-0: mtu 9216 qdisc mq state UP ... + link/ether 00:1b:21:bd:c7:18 brd ff:ff:ff:ff:ff:ff +``` + +I want to draw your attention to the number at the beginning of the line. In the _default_ +namespace, `ifIndex=3` corresponds to `ifName=eno2` (which has no link, it's marked `DOWN`). But in +the _dataplane_ namespace, that index corresponds to a completely different interface called +`ifName=xe1-0` (which is link `UP`). + +Now, let me show you the interfaces in VPP: + +``` +pim@summer:~$ vppctl show int | grep Gigabit | egrep 'Name|loop0|tap0|Gigabit' + Name Idx State MTU (L3/IP4/IP6/MPLS) +GigabitEthernet4/0/0 1 up 9000/0/0/0 +GigabitEthernet4/0/1 2 down 9000/0/0/0 +GigabitEthernet4/0/2 3 down 9000/0/0/0 +GigabitEthernet4/0/3 4 down 9000/0/0/0 +TenGigabitEthernet5/0/0 5 up 9216/0/0/0 +TenGigabitEthernet5/0/1 6 up 9216/0/0/0 +loop0 7 up 9216/0/0/0 +tap0 19 up 9216/0/0/0 +``` + +Here, I want you to look at the second column `Idx`, which shows what VPP calls the _sw_if_index_ +(the software interface index, as opposed to hardware index). Here, `ifIndex=3` corresponds to +`ifName=GigabitEthernet4/0/2`, which is neither `eno2` nor `xe1-0`. Oh my, yet _another_ namespace! + +So there are three (relevant) types of namespaces at play here: +1. ***Linux network*** namespace; here using `dataplane` and `default` each with overlapping numbering +1. ***VPP hardware*** interface namespace, also called PHYs (for physical interfaces). When VPP + first attaches to or creates fundamental network interfaces like from DPDK or RDMA, these will + create an _hw_if_index_ in a list. +1. ***VPP software*** interface namespace. Any interface (including hardware ones!) will also + receive a _sw_if_index_ in VPP. A good example is sub-interfaces: if I create a sub-int on + GigabitEthernet4/0/2, it will NOT get a hardware index, but it _will_ get the next available + software index (in this example, `sw_if_index=7`). + +In Linux CP, I can map one into the other, look at this: + +``` +pim@summer:~$ vppctl show lcp +lcp default netns dataplane +lcp lcp-auto-subint off +lcp lcp-sync on +lcp lcp-sync-unnumbered on +itf-pair: [0] loop0 tap0 loop0 2 type tap netns dataplane +itf-pair: [1] TenGigabitEthernet5/0/0 tap1 xe1-0 3 type tap netns dataplane +itf-pair: [2] TenGigabitEthernet5/0/1 tap2 xe1-1 4 type tap netns dataplane +itf-pair: [3] TenGigabitEthernet5/0/0.20 tap1.20 xe1-0.20 5 type tap netns dataplane +``` + +Those `itf-pair` describe our _LIPs_, and they have the coordinates to three things. 1) The VPP +software interface (VPP `ifName=loop0` with `sw_if_index=7`), which 2) Linux CP will mirror into the +Linux kernel using a TAP device (VPP `ifName=tap0` with `sw_if_index=19`). That TAP has one leg in +VPP (`tap0`), and another in 3) Linux (with `ifName=loop` and `ifIndex=2` in namespace `dataplane`). + +> So the tuple that fully describes a _LIP_ is `{7, 19,'dataplane', 2}` + +Climbing back out of that rabbit hole, I am now finally ready to explain the feature. When sFlow in +VPP takes its sample, it will be doing this on a PHY, that is a given interface with a specific +_hw_if_index_. When it polls the counters, it'll do it for that specific _hw_if_index_. It now has a +choice: should it share with the world the representation of *its* namespace, or should it try to be +smarter? If LinuxCP is enabled, this interface will likely have a representation in Linux. So the +plugin will first resolve the _sw_if_index_ belonging to that PHY, and using that, look up a _LIP_ +with it. If it finds one, it'll know both the namespace in which it lives as well as the osIndex in +that namespace. If it doesn't, it will at least have the _sw_if_index_ at hand, so it'll annotate the +USERSOCK with this information. + +Now, `hsflowd` has a choice to make: does it share the Linux representation and hide VPP as an +implementation detail? Or does it share the VPP dataplane _sw_if_index_? There are use cases +relevant to both, so the decision was to let the operator decide, by setting `osIndex` either `on` +(use Linux ifIndex) or `off` (use VPP sw_if_index). + +### hsflowd: Host Counters + +Now that I understand the configuration parts of VPP and `hsflowd`, I decide to configure everything +but I don't turn on any interfaces yet in VPP. Once I start the daemon, I can see that it +sends an UDP packet every 30 seconds to the configured _collector_: + +``` +pim@vpp0-0:~$ sudo tcpdump -s 9000 -i lo -n +tcpdump: verbose output suppressed, use -v[v]... for full protocol decode +listening on lo, link-type EN10MB (Ethernet), snapshot length 9000 bytes +15:34:19.695042 IP 127.0.0.1.48753 > 127.0.0.1.6343: sFlowv5, + IPv4 agent 198.19.5.16, agent-id 100000, length 716 +``` + +The `tcpdump` I have on my Debian bookworm machines doesn't know how to decode the contents of these +sFlow packets. Actually, neither does Wireshark. I've attached a file of these mysterious packets +[[sflow-host.pcap](/assets/sflow/sflow-host.pcap)] in case you want to take a look. +Neil however gives me a tip. A full message decoder and otherwise handy Swiss army knife lives in +[[sflowtool](https://github.com/sflow/sflowtool)]. + +I can offer this pcap file to `sflowtool`, or let it just listen on the UDP port directly, and +it'll tell me what it finds: + +``` +pim@vpp0-0:~$ sflowtool -p 6343 +startDatagram ================================= +datagramSourceIP 127.0.0.1 +datagramSize 716 +unixSecondsUTC 1739112018 +localtime 2025-02-09T15:40:18+0100 +datagramVersion 5 +agentSubId 100000 +agent 198.19.5.16 +packetSequenceNo 57 +sysUpTime 987398 +samplesInPacket 1 +startSample ---------------------- +sampleType_tag 0:4 +sampleType COUNTERSSAMPLE +sampleSequenceNo 33 +sourceId 2:1 +counterBlock_tag 0:2001 +adaptor_0_ifIndex 2 +adaptor_0_MACs 1 +adaptor_0_MAC_0 525400f00100 +counterBlock_tag 0:2010 +udpInDatagrams 123904 +udpNoPorts 23132459 +udpInErrors 0 +udpOutDatagrams 46480629 +udpRcvbufErrors 0 +udpSndbufErrors 0 +udpInCsumErrors 0 +counterBlock_tag 0:2009 +tcpRtoAlgorithm 1 +tcpRtoMin 200 +tcpRtoMax 120000 +tcpMaxConn 4294967295 +tcpActiveOpens 0 +tcpPassiveOpens 30 +tcpAttemptFails 0 +tcpEstabResets 0 +tcpCurrEstab 1 +tcpInSegs 89120 +tcpOutSegs 86961 +tcpRetransSegs 59 +tcpInErrs 0 +tcpOutRsts 4 +tcpInCsumErrors 0 +counterBlock_tag 0:2008 +icmpInMsgs 23129314 +icmpInErrors 32 +icmpInDestUnreachs 0 +icmpInTimeExcds 23129282 +icmpInParamProbs 0 +icmpInSrcQuenchs 0 +icmpInRedirects 0 +icmpInEchos 0 +icmpInEchoReps 32 +icmpInTimestamps 0 +icmpInAddrMasks 0 +icmpInAddrMaskReps 0 +icmpOutMsgs 0 +icmpOutErrors 0 +icmpOutDestUnreachs 23132467 +icmpOutTimeExcds 0 +icmpOutParamProbs 23132467 +icmpOutSrcQuenchs 0 +icmpOutRedirects 0 +icmpOutEchos 0 +icmpOutEchoReps 0 +icmpOutTimestamps 0 +icmpOutTimestampReps 0 +icmpOutAddrMasks 0 +icmpOutAddrMaskReps 0 +counterBlock_tag 0:2007 +ipForwarding 2 +ipDefaultTTL 64 +ipInReceives 46590552 +ipInHdrErrors 0 +ipInAddrErrors 0 +ipForwDatagrams 0 +ipInUnknownProtos 0 +ipInDiscards 0 +ipInDelivers 46402357 +ipOutRequests 69613096 +ipOutDiscards 0 +ipOutNoRoutes 80 +ipReasmTimeout 0 +ipReasmReqds 0 +ipReasmOKs 0 +ipReasmFails 0 +ipFragOKs 0 +ipFragFails 0 +ipFragCreates 0 +counterBlock_tag 0:2005 +disk_total 6253608960 +disk_free 2719039488 +disk_partition_max_used 56.52 +disk_reads 11512 +disk_bytes_read 626214912 +disk_read_time 48469 +disk_writes 1058955 +disk_bytes_written 8924332032 +disk_write_time 7954804 +counterBlock_tag 0:2004 +mem_total 8326963200 +mem_free 5063872512 +mem_shared 0 +mem_buffers 86425600 +mem_cached 827752448 +swap_total 0 +swap_free 0 +page_in 306365 +page_out 4357584 +swap_in 0 +swap_out 0 +counterBlock_tag 0:2003 +cpu_load_one 0.030 +cpu_load_five 0.050 +cpu_load_fifteen 0.040 +cpu_proc_run 1 +cpu_proc_total 138 +cpu_num 2 +cpu_speed 1699 +cpu_uptime 1699306 +cpu_user 64269210 +cpu_nice 1810 +cpu_system 34690140 +cpu_idle 3234293560 +cpu_wio 3568580 +cpuintr 0 +cpu_sintr 5687680 +cpuinterrupts 1596621688 +cpu_contexts 3246142972 +cpu_steal 329520 +cpu_guest 0 +cpu_guest_nice 0 +counterBlock_tag 0:2006 +nio_bytes_in 250283 +nio_pkts_in 2931 +nio_errs_in 0 +nio_drops_in 0 +nio_bytes_out 370244 +nio_pkts_out 1640 +nio_errs_out 0 +nio_drops_out 0 +counterBlock_tag 0:2000 +hostname vpp0-0 +UUID ec933791-d6af-7a93-3b8d-aab1a46d6faa +machine_type 3 +os_name 2 +os_release 6.1.0-26-amd64 +endSample ---------------------- +endDatagram ================================= +``` + +If you thought: "What an obnoxiously long paste!", then my slightly RSI-induced mouse-hand might I +agree with you. But it is really cool to see that every 30 seconds, the _collector_ will receive +this form of heartbeat from the _agent_. There's a lot of vitalsigns in this packet, including some +non-obvious but interesting stats like CPU load, memory, disk use and disk IO, and kernel version +information. It's super dope! + +### hsflowd: Interface Counters + +Next, I'll enable sFlow in VPP on all four interfaces (Gi10/0/0-Gi10/0/3), set the sampling rate to +something very high (1 in 100M), and the interface polling-interval to every 10 seconds. And indeed, +every ten seconds or so I get a few packets, which I captured them in +[[sflow-interface.pcap](/assets/sflow/sflow-interface.pcap)]. Some of the packets contain only one +counter record, while others contain more than one (in the PCAP, packet #9 has two). If I update the +polling-interval to every second, I can see that most of the packets have four counters. + +Those interface counters, as decoded by `sflowtool`, look like this: + +``` +pim@vpp0-0:~$ sflowtool -r sflow-interface.pcap | \ + awk '/startSample/ { on=1 } { if (on) { print $0 } } /endSample/ { on=0 }' +startSample ---------------------- +sampleType_tag 0:4 +sampleType COUNTERSSAMPLE +sampleSequenceNo 745 +sourceId 0:3 +counterBlock_tag 0:1005 +ifName GigabitEthernet10/0/2 +counterBlock_tag 0:1 +ifIndex 3 +networkType 6 +ifSpeed 0 +ifDirection 1 +ifStatus 3 +ifInOctets 858282015 +ifInUcastPkts 780540 +ifInMulticastPkts 0 +ifInBroadcastPkts 0 +ifInDiscards 0 +ifInErrors 0 +ifInUnknownProtos 0 +ifOutOctets 1246716016 +ifOutUcastPkts 975772 +ifOutMulticastPkts 0 +ifOutBroadcastPkts 0 +ifOutDiscards 127 +ifOutErrors 28 +ifPromiscuousMode 0 +endSample ---------------------- +``` + +What I find particularly cool about it, is that sFlow provides an automatic mapping between the +`ifName=GigabitEthernet10/0/2` (tag 0:1005), together and an object (tag 0:1), which contains the +`ifIndex=3`, and lots of packet and octet counters both in the ingress and egress direction. This is +super useful for upstream _collectors_, as they can now find the hostname, agent name and address, +and the correlation between interface names and their indexes. Noice! + +#### hsflowd: Packet Samples + +Now it's time to ratchet up the packet sampling, so I move it from 1:100M to 1:1000, while keeping +the interface polling-interval at 10 seconds and I ask VPP to sample 64 bytes of each packet that it +inspects. On either side of my pet VPP instance, I start an `iperf3` run to generate some traffic. I +now see a healthy stream of sflow packets coming in on port 6343. They still contain every 30 +seconds or so a host counter, and every 10 seconds a set of interface counters come by, but mostly +these UDP packets are showing me samples. I've captured a few minutes of these in +[[sflow-all.pcap](/assets/sflow/sflow-all.pcap)]. +Although Wireshark doesn't know how to interpret the sFlow counter messages, it _does_ know how to +interpret the sFlow sample messagess, and it reveals one of them like this: + +{{< image width="100%" src="/assets/sflow/sflow-wireshark.png" alt="sFlow Wireshark" >}} + +Let me take a look at the picture from top to bottom. First, the outer header (from 127.0.0.1:48753 +to 127.0.0.1:6343) is the sFlow agent sending to the collector. The agent identifies itself as +having IPv4 address 198.19.5.16 with ID 100000 and an uptime of 1h52m. Then, it says it's going to +send 9 samples, the first of which says it's from ifIndex=2 and at a sampling rate of 1:1000. It +then shows the sample, saying that the frame length is 1518 bytes, and the first 64 bytes of those +are sampled. Finally, the first sampled packet starts at the blue line. It shows the SrcMAC and +DstMAC, and that it was a TCP packet from 192.168.10.17:51028 to 192.168.10.33:5201 - my `iperf3`, +booyah! + +### VPP: sFlow Performance + +{{< image float="right" src="/assets/sflow/sflow-lab.png" alt="sFlow Lab" width="20em" >}} + +One question I get a lot about this plugin is: what is the performance impact when using +sFlow? I spent a considerable amount of time tinkering with this, and together with Neil bringing +the plugin to what we both agree is the most efficient use of CPU. We could go a bit further, but +that would require somewhat intrusive changes to VPP's internals and as _North of the Border_ would +say: what we have isn't just good, it's good enough! + +I've built a small testbed based on two Dell R730 machines. On the left, I have a Debian machine +running Cisco T-Rex using four quad-tengig network cards, the classic Intel i710-DA4. On the right, +I have my VPP machine called _Hippo_ (because it's always hungry for packets), with the same +hardware. I'll build two halves. On the top NIC (Te3/0/0-3 in VPP), I will install IPv4 and MPLS +forwarding on the purple circuit, and a simple Layer2 cross connect on the cyan circuit. On all four +interfaces, I will enable sFlow. Then, I will mirror this configuration on the bottom NIC +(Te130/0/0-3) in the red and green circuits, for which I will leave sFlow turned off. + +To help you reproduce my results, and under the assumption that this is your jam, here's the +configuration for all of the kit: + +***0. Cisco T-Rex*** +``` +pim@trex:~ $ cat /srv/trex/8x10.yaml +- version: 2 + interfaces: [ '06:00.0', '06:00.1', '83:00.0', '83:00.1', '87:00.0', '87:00.1', '85:00.0', '85:00.1' ] + port_info: + - src_mac: 00:1b:21:06:00:00 + dest_mac: 9c:69:b4:61:a1:dc # Connected to Hippo Te3/0/0, purple + - src_mac: 00:1b:21:06:00:01 + dest_mac: 9c:69:b4:61:a1:dd # Connected to Hippo Te3/0/1, purple + - src_mac: 00:1b:21:83:00:00 + dest_mac: 00:1b:21:83:00:01 # L2XC via Hippo Te3/0/2, cyan + - src_mac: 00:1b:21:83:00:01 + dest_mac: 00:1b:21:83:00:00 # L2XC via Hippo Te3/0/3, cyan + + - src_mac: 00:1b:21:87:00:00 + dest_mac: 9c:69:b4:61:75:d0 # Connected to Hippo Te130/0/0, red + - src_mac: 00:1b:21:87:00:01 + dest_mac: 9c:69:b4:61:75:d1 # Connected to Hippo Te130/0/1, red + - src_mac: 9c:69:b4:85:00:00 + dest_mac: 9c:69:b4:85:00:01 # L2XC via Hippo Te130/0/2, green + - src_mac: 9c:69:b4:85:00:01 + dest_mac: 9c:69:b4:85:00:00 # L2XC via Hippo Te130/0/3, green +pim@trex:~ $ sudo t-rex-64 -i -c 4 --cfg /srv/trex/8x10.yaml +``` + +When constructing the T-Rex configuration, I specifically set the destination MAC address for L3 +circuits (the purple and red ones) using Hippo's interface MAC address, which I can find with +`vppctl show hardware-interfaces`. This way, T-Rex does not have to ARP for the VPP endpoint. On +L2XC circuits (the cyan and green ones), VPP does not concern itself with the MAC addressing at +all. It puts its interface in _promiscuous_ mode, and simply writes out any ethernet frame received, +directly to the egress interface. + +***1. IPv4*** +``` +hippo# set int state TenGigabitEthernet3/0/0 up +hippo# set int state TenGigabitEthernet3/0/1 up +hippo# set int state TenGigabitEthernet130/0/0 up +hippo# set int state TenGigabitEthernet130/0/1 up +hippo# set int ip address TenGigabitEthernet3/0/0 100.64.0.1/31 +hippo# set int ip address TenGigabitEthernet3/0/1 100.64.1.1/31 +hippo# set int ip address TenGigabitEthernet130/0/0 100.64.4.1/31 +hippo# set int ip address TenGigabitEthernet130/0/1 100.64.5.1/31 +hippo# ip route add 16.0.0.0/24 via 100.64.0.0 +hippo# ip route add 48.0.0.0/24 via 100.64.1.0 +hippo# ip route add 16.0.2.0/24 via 100.64.4.0 +hippo# ip route add 48.0.2.0/24 via 100.64.5.0 +hippo# ip neighbor TenGigabitEthernet3/0/0 100.64.0.0 00:1b:21:06:00:00 static +hippo# ip neighbor TenGigabitEthernet3/0/1 100.64.1.0 00:1b:21:06:00:01 static +hippo# ip neighbor TenGigabitEthernet130/0/0 100.64.4.0 00:1b:21:87:00:00 static +hippo# ip neighbor TenGigabitEthernet130/0/1 100.64.5.0 00:1b:21:87:00:01 static +``` + +By the way, one note to this last piece, I'm setting static IPv4 neighbors so that Cisco T-Rex +as well as VPP do not have to use ARP to resolve each other. You'll see above that the T-Rex +configuration also uses MAC addresses exclusively. Setting the `ip neighbor` like this allows VPP +to know where to send return traffic. + +***2. MPLS*** +``` +hippo# mpls table add 0 +hippo# set interface mpls TenGigabitEthernet3/0/0 enable +hippo# set interface mpls TenGigabitEthernet3/0/1 enable +hippo# set interface mpls TenGigabitEthernet130/0/0 enable +hippo# set interface mpls TenGigabitEthernet130/0/1 enable +hippo# mpls local-label add 16 eos via 100.64.1.0 TenGigabitEthernet3/0/1 out-labels 17 +hippo# mpls local-label add 17 eos via 100.64.0.0 TenGigabitEthernet3/0/0 out-labels 16 +hippo# mpls local-label add 20 eos via 100.64.5.0 TenGigabitEthernet130/0/1 out-labels 21 +hippo# mpls local-label add 21 eos via 100.64.4.0 TenGigabitEthernet130/0/0 out-labels 20 +``` + +Here, the MPLS configuration implements a simple P-router, where incoming MPLS packets with label 16 +will be sent back to T-Rex on Te3/0/1 to the specified IPv4 nexthop (for which we already know the +MAC address), and with label 16 removed and new label 17 imposed, in other words a SWAP operation. + +***3. L2XC*** +``` +hippo# set int state TenGigabitEthernet3/0/2 up +hippo# set int state TenGigabitEthernet3/0/3 up +hippo# set int state TenGigabitEthernet130/0/2 up +hippo# set int state TenGigabitEthernet130/0/3 up +hippo# set int l2 xconnect TenGigabitEthernet3/0/2 TenGigabitEthernet3/0/3 +hippo# set int l2 xconnect TenGigabitEthernet3/0/3 TenGigabitEthernet3/0/2 +hippo# set int l2 xconnect TenGigabitEthernet130/0/2 TenGigabitEthernet130/0/3 +hippo# set int l2 xconnect TenGigabitEthernet130/0/3 TenGigabitEthernet130/0/2 +``` + +I've added a layer2 cross connect as well because it's computationally very cheap for VPP to receive +an L2 (ethernet) datagram, and immediately transmit it on another interface. There's no FIB lookup +and not even an L2 nexthop lookup involved, VPP is just shoveling ethernet packets in-and-out as +fast as it can! + +Here's how a loadtest looks like when sending 80Gbps at 256b packets on all eight interfaces: + +{{< image src="/assets/sflow/sflow-lab-trex.png" alt="sFlow T-Rex" width="100%" >}} + +The leftmost ports p0 <-> p1 are sending IPv4+MPLS, while ports p0 <-> p2 are sending ethernet back +and forth. All four of them have sFlow enabled, at a sampling rate of 1:10'000, the default. These +four ports are my experiment, to show the CPU use of sFlow. Then, ports p3 <-> p4 and p5 <-> p6 +respectively have sFlow turned off but with the same configuration. They are my control, showing +the CPU use without sFLow. + +**First conclusion**: This stuff works a treat. There is absolutely no impact of throughput at +80Gbps with 47.6Mpps either _with_, or _without_ sFlow turned on. That's wonderful news, as it shows +that the dataplane has more CPU available than is needed for any combination of functionality. + +But what _is_ the limit? For this, I'll take a deeper look at the runtime statistics by varying the +CPU time spent and maximum throughput achievable on a single VPP worker, thus using a single CPU +thread on this Hippo machine that has 44 cores and 44 hyperthreads. I switch the loadtester to emit +64 byte ethernet packets, the smallest I'm allowed to send. + +| Loadtest | no sFlow | 1:1'000'000 | 1:10'000 | 1:1'000 | 1:100 | +|-------------|-----------|-----------|-----------|-----------|-----------| +| L2XC | 14.88Mpps | 14.32Mpps | 14.31Mpps | 14.27Mpps | 14.15Mpps | +| IPv4 | 10.89Mpps | 9.88Mpps | 9.88Mpps | 9.84Mpps | 9.73Mpps | +| MPLS | 10.11Mpps | 9.52Mpps | 9.52Mpps | 9.51Mpps | 9.45Mpps | +| ***sFlow Packets*** / 10sec | N/A | 337.42M total | 337.39M total | 336.48M total | 333.64M total | +| .. Sampled |   | 328 | 33.8k | 336k | 3.34M | +| .. Sent |   | 328 | 33.8k | 336k | 1.53M | +| .. Dropped |   | 0 | 0 | 0 | 1.81M | + +Here I can make a few important observations. + +**Baseline**: One worker (thus, one CPU thread) can sustain 14.88Mpps of L2XC when sFlow is turned off, which +implies that it has a little bit of CPU left over to do other work, if needed. With IPv4, I can see +that the throughput is CPU limited: 10.89Mpps can be handled by one worker (thus, one CPU thread). I +know that MPLS is a little bit more expensive computationally than IPv4, and that checks out. The +total capacity is 10.11Mpps when sFlow is turned off. + +**Overhead**: If I turn on sFLow on the interface, VPP will insert the _sflow-node_ into the +dataplane graph between `device-input` and `ethernet-input`. It means that the sFlow node will see +_every single_ packet, and it will have to move all of these into the next node, which costs about +9.5 CPU cycles per packet. The regression on L2XC is 3.8% but I have to note that VPP was not CPU +bound on the L2XC so it used some CPU cycles which were still available, before regressing +throughput. There is an immediate regression of 9.3% on IPv4 and 5.9% on MPLS. + +**Sampling Cost**: When then doing higher rates of sampling, the further regression is not _that_ +terrible. Between 1:1'000'000 and 1:10'000, there's barely a noticeable difference. Even in the +worst case of 1:100, the regression is from 14.32Mpps to 14.15Mpps for L2XC, only 1.2%. The +regression for L2XC, IPv4 and MPLS are all very modest, at 1.2% (L2XC), 1.6% (IPv4) and 0.8% (MPLS). +Of course, by using multiple hardware receive queues and multiple RX workers per interface, the cost +can be kept well in hand. + +**Overload Protection**: At 1:1'000 and an effective rate of 33.65Mpps across all ports, I correctly +observe 336k samples taken, and sent to PSAMPLE. At 1:100 however, there are 3.34M samples, but +they are not fitting through the FIFO, so the plugin is dropping samples to protect downstream +`sflow-main` thread and `hsflowd`. I can see that here, 1.81M samples have been dropped, while 1.53M +samples made it through. By the way, this means VPP is happily sending 153K samples/sec to the +collector! + +## What's Next + +Now that I've seen the UDP packets from our agent to a collector on the wire, and also how +incredibly efficient the sFlow sampling implementation turned out, I'm super motivated to +continue the journey with higher level collector receivers like ntopng, sflow-rt or Akvorado. In an +upcoming article, I'll describe how I rolled out Akvorado at IPng, and what types of changes would +make the user experience even better (or simpler to understand, at least). + +### Acknowledgements + +I'd like to thank Neil McKee from inMon for his dedication to getting things right, including the +finer details such as logging, error handling, API specifications, and documentation. He has been a +true pleasure to work with and learn from. Also, thank you to the VPP developer community, notably +Benoit, Florin, Damjan, Dave and Matt, for helping with the review and getting this thing merged in +time for the 25.02 release. diff --git a/static/assets/sflow/sflow-all.pcap b/static/assets/sflow/sflow-all.pcap new file mode 100644 index 0000000000000000000000000000000000000000..1c098bcfab99a01afbca11718aac0b9b91293deb GIT binary patch literal 458278 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 ZsOXC1Damivpc)ZZo4PB zbIv{I&VA1Bo?X4~;9i9}nIVgd7~`nCbfo*qaI=HmP?#u2ob)tS%aqH3b|3TQjlB8- zUZ8S((`{cVI=hSpDheOSS7$T6br0-9=A3_)d?*-7>4v@q1$_(ObjDn#Vb76u;eY56 zc9pYM4`M&UzliaR|L}&feArAmQPoS@6xR>1t59f+LB{pSe-IhJLuyi-@y9%jKS1_M zdO+mzUFTsp@`llq&>9MZy^nN)XbE*u#oTTu!_djvm_FAz*nSjRt4|pii9p*#>7RbZ zS-N~!1_HJQaSqoRRF|Rf*5hFjc{h(B=TdR(VquRzIpwxy-QjTw&aynDylPdaw4+`jMA_ct`t`8rVO z9AMr%eG) z6fd5r>L+bVMif+n0vb0J1z#hkQQx3oKj{R~66&IguYVC4hECST^w}t&Tfiou;5sO{ zAOitggE&V<6uf~~LBR!3P+yWI3g{M+A}JsOsQ8DzL4fw$O2G<;zUikJ1@7~a&&oSM z!MCD=U|&y2JG?Nu{<-f`Q{evc!7wNoyfI?}3ZDPV2MUhNN`r!8rnbM1nOP~wMSU_9%%c^80_>huGNND^D4;Bu ziUPW~H0m7`#NRdKl(Cp;KJoPzP|eV0B$;KS!1&b@*BBIxfr8(pGn*8=jXps^15xmF zmMHL>lb5-m=fP3&t0u@`A8biv|C>RF?yMCXDg0Pn;_+lsx3QCyz2mOMvQZN(s$xtw#mIn$> zk~SqH3YLQc?cs%x#t1#P`uat&4rUUTSMaC6ZA0?!kX!}=Tx1=~V}WBzE< fr8ZDtx$mvHptTYdl*@i&iu>2$1h$*LsZsDh4x}(v literal 0 HcmV?d00001 diff --git a/static/assets/sflow/sflow-interface.pcap b/static/assets/sflow/sflow-interface.pcap new file mode 100644 index 0000000000000000000000000000000000000000..8853c980eb93903dc7075b021c684cf3d6fbda6c GIT binary patch literal 4778 zcmd6qTS!zv7{|Y}t5R8N7rPOe6s84PYf=wgq%ymqQfIw)(Gs4daWjKm) zcWihJ83#`jMXx8bauWBU@K8sHY@blGai5LI-iLY$N^C|&S#e24O?pjv>8>56HS^{s z<1-lJYx7XJjzIAkx9y@~9J&A(-(yLfl9(4qk=;KLx3o1`TdFAP{Yfdv#Jsm?0*K$JiLVRdO&Y{b zGWR@1Qi<3;l1G8@ng=9K@g?Sa{E0c&f7w(JPkpS~)y@(o{&-b`IETz*NtljAZ2Rn< z9`^+#*4J@e5p;UdoqK3yB-}t8BJrA6$8jJ&-l`<77sPuth;zxTAB{1rh*^^XiS>27 zVgNdpiM(j+INElug^t%qoi6x7$J0Q(?V*Y|r<#dBoY5f8BlFaEWVRv>vX1jdLC3!& zA|Ka6$1YqTbQ}-jP9<@!O%RXMAkHVV@f|Wt#P(5WvxSU~lR%t-UA+&p^cOco2FG z)AySH+=8sQ^d=}y9@{%GJ5byYC~lq9>4Gm5Hw&xrRr!p`?-8ppTV9QSoQ{gfyfYk` z`Iq-64jIMG263~JxZnU2zpK+A-biNa7hhs~6xwVdqc{hM`;}*f;xSD8DolfT6PaE7 z?3UNKSMUz@1yONFnxLpF?%YEwBXKg~sZzkJxD*h#tBKDt@ykjL;>~1s<49*o9Aq7@ zEP#$>A_;0qnk2XU2}_@*E()F9qMW-oqQOX85xaVm&w@2SoT#ZLrr zh6Zslnf<($(yq2gqsq^NvVGJ@$#P%5XR6<6_e*tQHe2V}8 literal 0 HcmV?d00001 diff --git a/static/assets/sflow/sflow-lab-trex.png b/static/assets/sflow/sflow-lab-trex.png new file mode 100644 index 0000000..46d88df --- /dev/null +++ b/static/assets/sflow/sflow-lab-trex.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:418875c986818275931b2abdc037cf44b07a18d0a5ffb9836b13f7f4b6a7c721 +size 391520 diff --git a/static/assets/sflow/sflow-lab.png b/static/assets/sflow/sflow-lab.png new file mode 100644 index 0000000..fc42151 --- /dev/null +++ b/static/assets/sflow/sflow-lab.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad73bc6cef0f4c7f127cf32eae1a110e5fdd9c893bae7d44d008ed1384604c86 +size 116247 diff --git a/static/assets/sflow/sflow-overview.png b/static/assets/sflow/sflow-overview.png new file mode 100644 index 0000000..4f69409 --- /dev/null +++ b/static/assets/sflow/sflow-overview.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a26f50f2c08c791a78cfe203f803890519538c2bb665b34515a7ea7a0ebfb4bd +size 89627 diff --git a/static/assets/sflow/sflow-vpp-overview.png b/static/assets/sflow/sflow-vpp-overview.png new file mode 100644 index 0000000..1331cd4 --- /dev/null +++ b/static/assets/sflow/sflow-vpp-overview.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0df740038cdd7550b3b03ae65a68f93e0799d4807ebf4b17512af8ab61dead6 +size 231622 diff --git a/static/assets/sflow/sflow-wireshark.png b/static/assets/sflow/sflow-wireshark.png new file mode 100644 index 0000000..6ab179e --- /dev/null +++ b/static/assets/sflow/sflow-wireshark.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aedc142bb1e22aaccf30daf7f235cf15bec49f3c0f8737680fc0dd13ad05d4c9 +size 335282