aboutgitcodebugslistschat
path: root/test/perf
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2022-11-30 15:13:16 +1100
committerStefano Brivio <sbrivio@redhat.com>2022-12-06 07:42:03 +0100
commit34764ea4f35867e600b7ab7015588f38a1678532 (patch)
tree8eab0b63fe78fe18eb53e57ea5075c556d05414f /test/perf
parent2dec914209a68d1bc68e9a6b7f8268fb8c71bbf2 (diff)
downloadpasst-34764ea4f35867e600b7ab7015588f38a1678532.tar
passt-34764ea4f35867e600b7ab7015588f38a1678532.tar.gz
passt-34764ea4f35867e600b7ab7015588f38a1678532.tar.bz2
passt-34764ea4f35867e600b7ab7015588f38a1678532.tar.lz
passt-34764ea4f35867e600b7ab7015588f38a1678532.tar.xz
passt-34764ea4f35867e600b7ab7015588f38a1678532.tar.zst
passt-34764ea4f35867e600b7ab7015588f38a1678532.zip
udp: Correct splice forwarding when receiving from multiple sources
udp_sock_handler_splice() reads a whole batch of datagrams at once with recvmmsg(). It then forwards them all via a single socket on the other side, based on the source port. However, it's entirely possible that the datagrams in the set have different source ports, and thus ought to be forwarded via different sockets on the destination side. In fact this situation arises with the iperf -P4 throughput tests in our own test suite. AFAICT we only get away with this because iperf3 is strictly one way and doesn't send reply packets which would be misdirected because of the incorrect source ports. Alter udp_sock_handler_splice() to split the packets it receives into batches with the same source address and send each batch with a separate sendmmsg(). For now we only look for already contiguous batches, which means that if there are multiple active flows interleaved this is likely to degenerate to batches of size 1. For now this is the simplest way to correct the behaviour and we can try to optimize later. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'test/perf')
0 files changed, 0 insertions, 0 deletions