Jesper D. Brouer
a45ae39775
traffic-pacing-edt: make it easy to remove minimum delay trick in code
...
Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com >
2020-11-21 18:59:03 +01:00
Jesper D. Brouer
68505a2dbd
traffic-pacing-edt: tc_fq_pacer.sh select between MQ and single FQ
...
For some reason cannot get correct scheduling with FQ in a MQ setup.
In production traffic is Q-in-Q double tagged VLAN traffic.
Perhaps the RX-hash is doing strange stuff, or BPF-prog concurrency
is wrong. Due to Q-in-Q NIC RSS cause most packets to hit CPU-6
for some strange reason.
Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com >
2020-11-21 18:27:37 +01:00
Jesper D. Brouer
4671be73a8
traffic-pacing-edt: Minimum delay for all packet if no time-queue
...
Trying to trigger more NET_TX_SOFTIRQ to get packets scheduled
out more spaced out in time.
It is of-cause important to disable GRO in the first place.
E.g. cmdline:
sudo ethtool -K ens6f1 gso off tso off gro off
Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com >
2020-11-21 18:02:45 +01:00
Jesper D. Brouer
8714c9a37d
traffic-pacing-edt: also pace packets a bit on empty queue
...
Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com >
2020-11-21 16:54:58 +01:00
Jesper D. Brouer
794c074d7d
traffic-pacing-edt: New strategy: Shape at MAC layer with Ethernet
...
Take into account MAC layer overhead per packet.
Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com >
2020-11-21 15:57:14 +01:00
Jesper D. Brouer
6b5648158b
traffic-pacing-edt: Testing rates in production
...
Test different rates in production machine, and measure iperf3 TCP-goodput
Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com >
2020-11-21 13:53:53 +01:00
Jesper D. Brouer
740416975f
traffic-pacing-edt: allow tc util to be install in other places
...
Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com >
2020-11-21 13:05:47 +01:00
Jesper Dangaard Brouer
71db45b28e
traffic-pacing-edt: Handle if loaded on outer VLAN net_device
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-15 21:55:59 +01:00
Jesper Dangaard Brouer
a0f3760d6c
traffic-pacing-edt: Handle if VLAN is offloaded to SKB metadata
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-15 21:19:10 +01:00
Jesper Dangaard Brouer
6a67b105ee
traffic-pacing-edt: Remember MTU setting on netdevices
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-15 20:53:22 +01:00
Jesper Dangaard Brouer
d8a992aab4
traffic-pacing-edt: Add IP wrapper functions
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-15 17:27:09 +01:00
Jesper Dangaard Brouer
1196c6cf14
traffic-pacing-edt: adjust parameters help txt to be more general
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-15 17:23:41 +01:00
Jesper Dangaard Brouer
82186cfe72
traffic-pacing-edt: script for VLAN setup
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-15 17:03:04 +01:00
Jesper Dangaard Brouer
9c5ccaed9b
traffic-pacing-edt: Simple VLAN parsing via parse_ethhdr_vlan
...
Using the XDP based ethhdr VLAN parser. This cannot handle
if the SKB don't have the VLAN inlined.
Static match on VLAN 16 as test case.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-15 16:23:46 +01:00
Jesper Dangaard Brouer
21ebc4d8cd
traffic-pacing-edt: Align map struct to cache-line size
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-15 15:56:31 +01:00
Jesper Dangaard Brouer
692202e60e
traffic-pacing-edt: use READ_ONCE and WRITE_ONCE via compiler.h
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-15 15:40:42 +01:00
Jesper Dangaard Brouer
9ea235637e
Add compiler.h to define some common compiler directives
...
This is taken from the Cilium project:
https://github.com/cilium/cilium/blob/master/bpf/include/bpf/compiler.h
The use-case was adding READ_ONCE and WRITE_ONCE, but via re-using
the Cilium version we get a lot more useful compiler annotations.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-15 15:38:15 +01:00
Jesper Dangaard Brouer
c0cd6aedba
parsing_helpers.h re-add IPv6 skip of extension headers
...
This code comes from xdp-tools repo.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-15 15:26:12 +01:00
Jesper Dangaard Brouer
097079cde1
Fix includes in parsing_helpers.h
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-15 15:17:00 +01:00
Jesper Dangaard Brouer
6ee640393b
Update parsing_helpers.h from xdp-tutorial
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-15 15:12:20 +01:00
Jesper Dangaard Brouer
4ded8f7015
traffic-pacing-edt: control latency via horizon drop
...
When number of parallel (iperf -P N) flows increase, then the latency
increase as well (measured via simple ping through router).
This can be controlled via a much tigher drop horizon.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-14 19:33:42 +01:00
Jesper Dangaard Brouer
1fb4483207
traffic-pacing-edt: tc_fq_pacer.sh adjust packet per flow_limit
...
This was causing strange issues, where a TCP single flow could not
achieve the correct bandwidth.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-14 18:44:40 +01:00
Jesper Dangaard Brouer
9f97d984cb
traffic-pacing-edt: edt_pacer02.c add ECN marking horizon
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-14 17:16:03 +01:00
Jesper Dangaard Brouer
5a3e52cf43
traffic-pacing-edt: Make fq script respect --remove
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-14 16:51:56 +01:00
Jesper Dangaard Brouer
55a8513e2c
traffic-pacing-edt: Play with edt_pacer02 drop horizon
...
This didn't help.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-14 16:51:11 +01:00
Jesper Dangaard Brouer
252a40763a
traffic-pacing-edt: Adjustments to HTB script to get closer to EDT system
...
These adjustment doesn't help, EDT is still closer to 1Gbit/s at wire-level.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-14 14:58:47 +01:00
Jesper Dangaard Brouer
a6294dd946
edt_pacer02: Use skb wire_len
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-14 14:51:30 +01:00
Jesper Dangaard Brouer
3969089c64
traffic-pacing-edt/tc_fq_pacer.sh: Add doc explaining
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-14 13:53:49 +01:00
Jesper Dangaard Brouer
a5ed0071f1
traffic-pacing-edt: Add tc_fq_pacer.sh script for MQ-FQ setup
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-14 13:43:42 +01:00
Jesper Dangaard Brouer
aae2db4496
traffic-pacing-edt/tc_htb_shaper.sh: Make it easy to remove HTB qdisc
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-14 13:09:39 +01:00
Jesper Dangaard Brouer
bcd6074567
traffic-pacing-edt: Add HTB shaper script
...
This is primary to comparing HTB shaper accuracy against EDT
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-11-14 12:41:22 +01:00
Jesper Dangaard Brouer
fe9c2ed2ea
Merge branch 'master' of github.com:xdp-project/bpf-examples
...
Merging to integrated local branch traffic-pacing-edt01 changes
for the traffic-pacing-edt example.
2020-11-14 12:10:32 +01:00
Jesper Dangaard Brouer
86750f321e
EDT: implement horizon drop
...
FQ-pacing qdisc also have horizon, but cannot use that, because this
BPF-prog will have updated map (t_last) on packet and assumes it got
its part of bandwidth.
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-14 12:06:25 +01:00
Jesper Dangaard Brouer
efcd3c81b0
Implement basic EDT with static defines
...
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-14 10:43:56 +01:00
Jesper Dangaard Brouer
f98780e588
Add params for choosing other bpf object files
...
Default to edt_pacer02.o
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-08 14:52:36 +01:00
Jesper Dangaard Brouer
42c1c99799
Add note to edt_pacer02 as it is non-functional atm
...
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-08 14:40:19 +01:00
Jesper Dangaard Brouer
98ca505bc3
Add edt_pacer02.c for testing basic access to needed ctx and helpers
...
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-08 14:24:51 +01:00
Jesper Dangaard Brouer
30e9bddd8b
Add iproute2_compat.h to get iproute2 map support
...
This is needed for pinning maps later.
Cannot use the binary compatible top-part of struct, due to the
need for pinning later.
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-08 13:53:04 +01:00
Jesper Dangaard Brouer
30e9f04cf3
Fixup mentions of "ingress"
...
This was partly copied from netoptimizer/network-testing script
that used this for testing ingress path.
Our use-case is egress code path.
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-08 13:21:45 +01:00
Jesper Dangaard Brouer
91a8e78a12
Introduce parameter --remove
...
Need an easy way to move the setup again.
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-08 13:14:42 +01:00
Jesper Dangaard Brouer
72d3bba6d9
Make use of the params variables limit listing filter setup
...
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-08 13:14:27 +01:00
Jesper Dangaard Brouer
35ffcec7c3
Add common parameters.sh for shell cmdline arguments
...
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-08 12:46:26 +01:00
Jesper Dangaard Brouer
f8546bbbce
Add shell script for easier loading TC BPF egress program
...
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-08 12:18:08 +01:00
Jesper Dangaard Brouer
984faedafb
Copy shell 'tc' helper functions from netoptimizer/network-testing
...
Taken from:
https://github.com/netoptimizer/network-testing/blob/master/tc/functions.sh
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-08 11:49:04 +01:00
Jesper Dangaard Brouer
3ef00744da
Add edt_pacer01 only containing dummy tc program.
...
Want to make sure make system works and I can test load this prog.
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-08 11:48:51 +01:00
Jesper Dangaard Brouer
f4846b8297
Start traffic-pacing-edt example
...
Signed-off-by: Jesper Dangaard Brouer <netoptimizer@brouer.com >
2020-11-08 11:31:55 +01:00
Toke Høiland-Jørgensen
f2c4416baf
bpf-encap: Update example to use the BPF helper syntax agreed upon by upstream
...
Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com >
2020-10-21 16:54:29 +02:00
Jesper Dangaard Brouer
bf1c03c959
Merge pull request #1 from netoptimizer/MTU-tests01.public
...
MTU testing
Simple TC-BPF program for testing different packets sizes that violate the MTU of the interface.
This is part of testing upstream kernel work, for removing the MTU limit in the BPF-helpers that change packet size, and instead add BPF-helper that can check or lookup interface MTU.
2020-10-15 16:37:14 +02:00
Jesper Dangaard Brouer
f2a13d942f
MTU-tests: Cycle through different MTU packet sizes
...
Encode this statically via C/BPF-code switch statement, and
have global counter cycles through these.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-10-13 22:10:28 +02:00
Jesper Dangaard Brouer
7c2badedd4
MTU-tests: Fix stripping object file from .BTF section
...
Shot myself in the foot with stripping ELF obj file.
This was the reason I could not load BPF program with TC.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2020-10-13 17:08:42 +02:00