Commit Graph

26 Commits

Author SHA1 Message Date
Jesper D. Brouer
60a851c2a0 Now that codel works adjust horizons
The hard drop horizon (T_HORIZON_DROP) can be increased (to 40ms)
as codel target latency (T_HORIZON_TARGET) is taking care of
signaling TCP downloads via drops (after codel scheme).

Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com>
2020-11-28 14:22:29 +01:00
Jesper D. Brouer
3e0ac4f24d Cleanup some comments
Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com>
2020-11-28 14:02:52 +01:00
Jesper D. Brouer
516668c62c Move codel implementation to header file
Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com>
2020-11-28 13:51:49 +01:00
Jesper D. Brouer
2f6580dea4 Factor out codel structure
Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com>
2020-11-28 13:37:07 +01:00
Jesper D. Brouer
f50c741011 traffic-pacing-edt: finished codel implementation based on [1]
[1] https://queue.acm.org/appendices/codel.html

Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com>
2020-11-22 18:11:11 +01:00
Jesper D. Brouer
d8845714da traffic-pacing-edt: Codel like scheme
Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com>
2020-11-22 14:53:51 +01:00
Jesper D. Brouer
eacff13518 traffic-pacing-edt: Experiment random drop packets exceeding 10 ms queue
Signed-off-by: Jesper D. Brouer <netoptimizer@brouer.com>
2020-11-22 14:45:13 +01:00
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
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 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
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
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
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
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
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
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