On 2/27/26 9:29 AM, David Marchand via dev wrote:
> Use dynamic packet batches in the ip fragmentation code and simplify the
> code accordingly.
> Update the unit test that covers reassembly of large packets.
>
> Signed-off-by: David Marchand <[email protected]>
> ---
> lib/ipf.c | 42 ++++++------------
> tests/ofproto-dpif.at | 99 ++++++++++++++++++++++++++++++++++++++++++-
> 2 files changed, 110 insertions(+), 31 deletions(-)
>
[...]
> diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at
> index 3fa631072d..801fbae602 100644
> --- a/tests/ofproto-dpif.at
> +++ b/tests/ofproto-dpif.at
> @@ -5544,7 +5544,7 @@
> recirc(),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,frag=l
> dnl Clear ipf state.
> ovs-appctl time/warp 33000
>
> -dnl Send a lot of small frags to overload the dp packet batch max.
> +dnl Send a lot of small frags to trigger dynamic batch.
> AT_CHECK([ovs-appctl dpctl/ipf-set-min-frag v4 420], [], [dnl
> setting minimum fragment size successful
> ])
> @@ -5613,7 +5613,11 @@ AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "111111111111222222222222080045000
> AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12ce84006355602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12d204006351e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12d58400634e602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +OVS_CHECK_BATCH_GROW([0])
> +CHECK_COVERAGE([dpif_netdev_recirc_big_batch], [0])
> AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "11111111111122222222222208004500010810e10d904006557a0202020201010101000000000000000000000000000000000000000000000000000000000000${zero107}${zero107}"])
> +OVS_CHECK_BATCH_GROW([1])
> +CHECK_COVERAGE([dpif_netdev_recirc_big_batch], [1])
>
> dnl Second zone.
> AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2200040064e4d0101010102020202000100020000000000000000500220001c7a0000${zero107}${zero107}${zero107}${zero107}"])
> @@ -5678,7 +5682,11 @@ AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001
> AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22ce84006416501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22d204006412d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22d58400640f501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +OVS_CHECK_BATCH_GROW([1])
> +CHECK_COVERAGE([dpif_netdev_recirc_big_batch], [1])
> AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "22222222222211111111111108004500010804d20d90400661890101010102020202000000000000000000000000000000000000000000000000000000000000${zero107}${zero107}"])
> +OVS_CHECK_BATCH_GROW([2])
> +CHECK_COVERAGE([dpif_netdev_recirc_big_batch], [2])
>
> dnl Bump the remaining queued packets
> AT_CHECK([ovs-appctl netdev-dummy/receive p90 "0021853763af 0026b98cb0f9
> 0800 4500 04c4 0002 0096 40 06 af61 ac11370d ac11370b dnl
> @@ -5703,6 +5711,95 @@
> recirc(),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,frag=l
> OVS_VSWITCHD_STOP
> AT_CLEANUP
>
> +AT_SETUP([ofproto-dpif - fragment handling - reassembly no recirculation])
> +OVS_VSWITCHD_START
> +add_of_ports br0 1 2
> +
> +AT_DATA([flows.txt], [dnl
> +dnl Expand flow mask.
> +table=0 in_port=1,dl_src=55:55:55:55:55:55, actions=drop
> +table=0 in_port=1,ip,nw_src=10.0.0.2, actions=drop
> +table=0 in_port=1,ip,tcp actions=ct(commit, zone=10),output:2
> +])
> +AT_CHECK([ovs-ofctl -O OpenFlow11 replace-flows br0 flows.txt])
> +
> +dnl Send a lot of small frags to trigger dynamic batch.
> +AT_CHECK([ovs-appctl dpctl/ipf-set-min-frag v4 420], [], [dnl
> +setting minimum fragment size successful
> +])
> +
> +zero107=$(printf '0%.0s' $(seq 214))
This can at least be zero214, AFAICT.
01010101020202020000000000000000000000000000000000000000 may also be factored
out.
And maybe the ethernet header.
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2200040064e4d0101010102020202000100020000000000000000500220001c7a0000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2203840064e1501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2207040064ddd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d220a840064da501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d220e040064d6d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2211840064d3501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2215040064cfd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2218840064cc501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d221c040064c8d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d221f840064c5501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2223040064c1d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2226840064be501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d222a040064bad01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d222d840064b7501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2231040064b3d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2234840064b0501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2238040064acd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d223b840064a9501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d223f040064a5d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2242840064a2501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22460400649ed01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22498400649b501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d224d04006497d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d225084006494501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d225404006490d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22578400648d501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d225b04006489d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d225e84006486501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d226204006482d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22658400647f501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22690400647bd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d226c84006478501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d227004006474d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d227384006471501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22770400646dd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d227a8400646a501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d227e04006466d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d228184006463501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22850400645fd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22888400645c501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d228c04006458d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d228f84006455501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d229304006451d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22968400644e501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d229a0400644ad01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d229d84006447501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22a104006443d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22a484006440501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22a80400643cd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22ab84006439501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22af04006435d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22b284006432501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22b60400642ed01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22b98400642b501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22bd04006427d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22c084006424501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22c404006420d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22c78400641d501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22cb04006419d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22ce84006416501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22d204006412d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22d58400640f501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
I wish there was a better way...
> +OVS_CHECK_BATCH_GROW([0])
> +CHECK_COVERAGE([dpif_netdev_output_big_batch], [0])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "22222222222211111111111108004500010804d20d90400661890101010102020202000000000000000000000000000000000000000000000000000000000000${zero107}${zero107}"])
> +OVS_CHECK_BATCH_GROW([1])
> +CHECK_COVERAGE([dpif_netdev_output_big_batch], [1])
> +
> +OVS_VSWITCHD_STOP
> +AT_CLEANUP
> +
> AT_SETUP([ofproto-dpif - handling of malformed TCP packets])
> OVS_VSWITCHD_START
> add_of_ports br0 1 90
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev