From a1392965c0be7e0875c4a73d580aa34b8beeffee Mon Sep 17 00:00:00 2001 From: "Selby, Nicholas Stearns" <nselby3@gatech.edu> Date: Mon, 20 Nov 2017 20:45:38 -0500 Subject: [PATCH] Updated Readme with Ethernet worst case chart --- README.md | 7 +++++-- document/worst-case-ethernet.png | Bin 0 -> 24019 bytes 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 document/worst-case-ethernet.png diff --git a/README.md b/README.md index 26b1db7..386d3f0 100644 --- a/README.md +++ b/README.md @@ -65,8 +65,11 @@ We seek to demonstrate that these re-convergence times would cause operational f **Avoiding Switching Bottlenecks with Multipath Routing** - In a careful literature review and analysis, we will show that Layer-2 Solutions (switched ethernet) necessarily cause switching bottlenecks that create Single Points of Failure and increases in Message Delivery Times to NCS. -**@Nick** -- can you review that worst-case-packet-delay-time paper and see if we can add more beef to this argument, including some charts & graphs & references? +From [worst-case-packet-delay-time paper], we know that the worst case communication delay over Ethernet occurs when the number of frames attempting to communicate over a single switch is the greatest. For example, when a spanning tree organizes itself such that 24 stations are connected to a single switching hub, a typical 144-bit message with a bit time of 0.1 us would take more than 1.5 ms to finish sending a single packet from all stations. If the packets could be interconnected without the tree structure required by Ethernet/IP, transmission time could be brought down to just over 300 us. + + + +The above figure compares strategies for reducing communication time. The parameter which has the largest parameter is the number of frames being communicated over a single switch. This is to be expected, since that parameter will have a multiplicative effect on the queuing delay. By sacrificing the spanning tree topology and leveraging multipath routing without the added processing delays and stateful nature of ECMP or other link-state routing methodologies, we will drastically reduce frame count and, therefore, communication time. ## Our Cost Functions diff --git a/document/worst-case-ethernet.png b/document/worst-case-ethernet.png new file mode 100644 index 0000000000000000000000000000000000000000..37a7881a702fcd2979062c24254f28373706b79e GIT binary patch literal 24019 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 literal 0 HcmV?d00001 -- GitLab