Methodology: Added packet flow ordering
[csit.git] / docs / report / introduction / methodology_vpp_forwarding_modes.rst
index 1af3a46..1fd902a 100644 (file)
@@ -1,9 +1,9 @@
 VPP Forwarding Modes
 --------------------
 
-VPP is tested in a number of L2 and IP packet lookup and forwarding
-modes. Within each mode baseline and scale tests are executed, the
-latter with varying number of lookup entries.
+VPP is tested in a number of L2, IPv4 and IPv6 packet lookup and
+forwarding modes. Within each mode baseline and scale tests are
+executed, the latter with varying number of FIB entries.
 
 L2 Ethernet Switching
 ~~~~~~~~~~~~~~~~~~~~~
@@ -21,17 +21,23 @@ VPP is tested in three L2 forwarding modes:
 
 l2bd tests are executed in baseline and scale configurations:
 
-- *l2bdbase*: low number of L2 flows (254 per direction) is switched by
-  VPP. They drive the content of MAC FIB size (508 total MAC entries).
-  Both source and destination MAC addresses are incremented on a packet
-  by packet basis.
-
-- *l2bdscale*: high number of L2 flows is switched by VPP. Tested MAC
-  FIB sizes include: i) 10k (5k unique flows per direction), ii) 100k
-  (2x 50k flows) and iii) 1M (2x 500k). Both source and destination MAC
-  addresses are incremented on a packet by packet basis, ensuring new
-  entries are learn refreshed and looked up at every packet, making it
-  the worst case scenario.
+- *l2bdbase*: Two MAC FIB entries are learned by VPP to enable packet
+  switching between two interfaces in two directions. VPP L2 switching
+  is tested with 254 IPv4 unique flows per direction, varying IPv4
+  source address per flow in order to invoke RSS based packet
+  distribution across VPP workers. The same source and destination MAC
+  address is used for all flows per direction. IPv4 source address is
+  incremented for every packet.
+
+- *l2bdscale*: A high number of MAC FIB entries are learned by VPP to
+  enable packet switching between two interfaces in two directions.
+  Tested MAC FIB sizes include: i) 10k with 5k unique flows per
+  direction, ii) 100k with 2 x 50k flows and iii) 1M with 2 x 500k
+  flows. Unique flows are created by using distinct source and
+  destination MAC addresses that are changed for every packet using
+  incremental ordering, making VPP learn (or refresh) distinct src MAC
+  entries and look up distinct dst MAC entries for every packet. For
+  details, see :ref:`packet_flow_ordering`.
 
 Ethernet wire encapsulations tested include: untagged, dot1q, dot1ad.
 
@@ -40,34 +46,39 @@ IPv4 Routing
 
 IPv4 routing tests are executed in baseline and scale configurations:
 
-- *ip4base*: low number of IPv4 flows (253 or 254 per direction) is routed by
-  VPP. They drive the content of IPv4 FIB size (506 or 508 total /32 prefixes).
-  Destination IPv4 addresses are incremented on a packet by packet
-  basis.
+- *ip4base*: Two /32 IPv4 FIB entries are configured in VPP to enable
+  packet routing between two interfaces in two directions. VPP routing
+  is tested with 253 IPv4 unique flows per direction, varying IPv4
+  source address per flow in order to invoke RSS based packet
+  distribution across VPP workers. IPv4 source address is incremented
+  for every packet.
 
-- *ip4scale*: high number of IPv4 flows is routed by VPP. Tested IPv4
-  FIB sizes of /32 prefixes include: i) 20k (10k unique flows per
-  direction), ii) 200k (2x 100k flows) and iii) 2M (2x 1M). Destination
-  IPv4 addresses are incremented on a packet by packet basis, ensuring
-  new FIB entries are looked up at every packet, making it the worst
-  case scenario.
+- *ip4scale*: A high number of /32 IPv4 FIB entries are configured in
+  VPP. Tested IPv4 FIB sizes include: i) 20k with 10k unique flows per
+  direction, ii) 200k with 2 * 100k flows and iii) 2M with 2 * 1M
+  flows. Unique flows are created by using distinct IPv4 destination
+  addresses that are changed for every packet, using incremental or
+  random ordering. For details, see :ref:`packet_flow_ordering`.
 
 IPv6 Routing
 ~~~~~~~~~~~~
 
-IPv6 routing tests are executed in baseline and scale configurations:
-
-- *ip6base*: low number of IPv6 flows (253 or 254 per direction) is routed by
-  VPP. They drive the content of IPv6 FIB size (506 or 508 total /128 prefixes).
-  Destination IPv6 addresses are incremented on a packet by packet
-  basis.
-
-- *ip6scale*: high number of IPv6 flows is routed by VPP. Tested IPv6
-  FIB sizes of /128 prefixes include: i) 20k (10k unique flows per
-  direction), ii) 200k (2x 100k flows) and iii) 2M (2x 1M). Destination
-  IPv6 addresses are incremented on a packet by packet basis, ensuring
-  new FIB entries are looked up at every packet, making it the worst
-  case scenario.
+Similarly to IPv4, IPv6 routing tests are executed in baseline and scale
+configurations:
+
+- *ip6base*: Two /128 IPv4 FIB entries are configured in VPP to enable
+  packet routing between two interfaces in two directions. VPP routing
+  is tested with 253 IPv6 unique flows per direction, varying IPv6
+  source address per flow in order to invoke RSS based packet
+  distribution across VPP workers. IPv6 source address is incremented
+  for every packet.
+
+- *ip4scale*: A high number of /128 IPv6 FIB entries are configured in
+  VPP. Tested IPv6 FIB sizes include: i) 20k with 10k unique flows per
+  direction, ii) 200k with 2 * 100k flows and iii) 2M with 2 * 1M
+  flows. Unique flows are created by using distinct IPv6 destination
+  addresses that are changed for every packet, using incremental or
+  random ordering. For details, see :ref:`packet_flow_ordering`.
 
 SRv6 Routing
 ~~~~~~~~~~~~