From 01983101a6701a3a69c2b7275ab9d72007e6afbf Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Sun, 2 Aug 2015 19:26:35 +0300 Subject: [PATCH] Fragmentation and concatenation benchmark --- utils/bench-packets.cc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/utils/bench-packets.cc b/utils/bench-packets.cc index 2a2407fbd..9f72285e2 100644 --- a/utils/bench-packets.cc +++ b/utils/bench-packets.cc @@ -253,6 +253,33 @@ benchC (uint32_t n) } } +static void +benchFragment (uint32_t n) +{ + BenchHeader<25> ipv4; + BenchHeader<8> udp; + + for (uint32_t i= 0; i < n; i++) { + Ptr p = Create (2000); + p->AddHeader (udp); + p->AddHeader (ipv4); + + Ptr frag0 = p->CreateFragment (0, 250); + Ptr frag1 = p->CreateFragment (250, 250); + Ptr frag2 = p->CreateFragment (500, 500); + Ptr frag3 = p->CreateFragment (1000, 500); + Ptr frag4 = p->CreateFragment (1500, 500); + + /* Mix fragments in different order */ + frag2->AddAtEnd (frag3); + frag4->AddAtEnd (frag1); + frag2->AddAtEnd (frag4); + frag0->AddAtEnd (frag2); + + frag0->RemoveHeader (ipv4); + frag0->RemoveHeader (udp); + } +} static void runBench (void (*bench) (uint32_t), uint32_t n, char const *name) @@ -301,6 +328,7 @@ int main (int argc, char *argv[]) runBench (&benchB, n, "Just add headers"); runBench (&benchC, n, "Remove by func call"); runBench (&benchD, n, "Intermixed add/remove headers and tags"); + runBench (&benchFragment, n, "Fragmentation and concatenation"); return 0; }