-.. code-block:: bash
-
- $ cd $CSIT/tests/vpp/perf/l2
- $ grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl.*|oacl.*|eth.*)*ndrdisc" *
-
- 10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot:| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc
- 10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot:| tc01-64B-1t1c-dot1ad-l2xcbase-ndrdisc
- 10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot:| tc01-64B-1t1c-dot1q-l2xcbase-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermit-ndrpdrdisc.robot:| tc01-64B-1t1c-eth-l2bdbasemaclrn-iacl1-stateless-flows100-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermit-ndrpdrdisc.robot:| tc03-64B-1t1c-eth-l2bdbasemaclrn-iacl10-stateless-flows100-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermit-ndrpdrdisc.robot:| tc05-64B-1t1c-eth-l2bdbasemaclrn-iacl50-stateless-flows100-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermit-ndrpdrdisc.robot:| tc07-64B-1t1c-eth-l2bdbasemaclrn-iacl1-stateless-flows10k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermit-ndrpdrdisc.robot:| tc09-64B-1t1c-eth-l2bdbasemaclrn-iacl10-stateless-flows10k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermit-ndrpdrdisc.robot:| tc11-64B-1t1c-eth-l2bdbasemaclrn-iacl50-stateless-flows10k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermit-ndrpdrdisc.robot:| tc13-64B-1t1c-eth-l2bdbasemaclrn-iacl1-stateless-flows100k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermit-ndrpdrdisc.robot:| tc15-64B-1t1c-eth-l2bdbasemaclrn-iacl10-stateless-flows100k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermit-ndrpdrdisc.robot:| tc17-64B-1t1c-eth-l2bdbasemaclrn-iacl50-stateless-flows100k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermitreflect-ndrpdrdisc.robot:| tc01-64B-1t1c-eth-l2bdbasemaclrn-iacl1-statefull-flows100-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermitreflect-ndrpdrdisc.robot:| tc03-64B-1t1c-eth-l2bdbasemaclrn-iacl10-statefull-flows100-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermitreflect-ndrpdrdisc.robot:| tc05-64B-1t1c-eth-l2bdbasemaclrn-iacl50-statefull-flows100-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermitreflect-ndrpdrdisc.robot:| tc07-64B-1t1c-eth-l2bdbasemaclrn-iacl1-statefull-flows10k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermitreflect-ndrpdrdisc.robot:| tc09-64B-1t1c-eth-l2bdbasemaclrn-iacl10-statefull-flows10k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermitreflect-ndrpdrdisc.robot:| tc11-64B-1t1c-eth-l2bdbasemaclrn-iacl50-statefull-flows10k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermitreflect-ndrpdrdisc.robot:| tc13-64B-1t1c-eth-l2bdbasemaclrn-iacl1-statefull-flows100k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermitreflect-ndrpdrdisc.robot:| tc15-64B-1t1c-eth-l2bdbasemaclrn-iacl10-statefull-flows100k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-aclinpermitreflect-ndrpdrdisc.robot:| tc17-64B-1t1c-eth-l2bdbasemaclrn-iacl50-statefull-flows100k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermit-ndrpdrdisc.robot:| tc01-64B-1t1c-eth-l2bdbasemaclrn-oacl1-stateless-flows100-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermit-ndrpdrdisc.robot:| tc03-64B-1t1c-eth-l2bdbasemaclrn-oacl10-stateless-flows100-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermit-ndrpdrdisc.robot:| tc05-64B-1t1c-eth-l2bdbasemaclrn-oacl50-stateless-flows100-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermit-ndrpdrdisc.robot:| tc07-64B-1t1c-eth-l2bdbasemaclrn-oacl1-stateless-flows10k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermit-ndrpdrdisc.robot:| tc09-64B-1t1c-eth-l2bdbasemaclrn-oacl10-stateless-flows10k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermit-ndrpdrdisc.robot:| tc11-64B-1t1c-eth-l2bdbasemaclrn-oacl50-stateless-flows10k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermit-ndrpdrdisc.robot:| tc13-64B-1t1c-eth-l2bdbasemaclrn-oacl1-stateless-flows100k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermit-ndrpdrdisc.robot:| tc15-64B-1t1c-eth-l2bdbasemaclrn-oacl10-stateless-flows100k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermit-ndrpdrdisc.robot:| tc17-64B-1t1c-eth-l2bdbasemaclrn-oacl50-stateless-flows100k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermitreflect-ndrpdrdisc.robot:| tc01-64B-1t1c-eth-l2bdbasemaclrn-oacl1-statefull-flows100-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermitreflect-ndrpdrdisc.robot:| tc03-64B-1t1c-eth-l2bdbasemaclrn-oacl10-statefull-flows100-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermitreflect-ndrpdrdisc.robot:| tc05-64B-1t1c-eth-l2bdbasemaclrn-oacl50-statefull-flows100-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermitreflect-ndrpdrdisc.robot:| tc07-64B-1t1c-eth-l2bdbasemaclrn-oacl1-statefull-flows10k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermitreflect-ndrpdrdisc.robot:| tc09-64B-1t1c-eth-l2bdbasemaclrn-oacl10-statefull-flows10k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermitreflect-ndrpdrdisc.robot:| tc11-64B-1t1c-eth-l2bdbasemaclrn-oacl50-statefull-flows10k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermitreflect-ndrpdrdisc.robot:| tc13-64B-1t1c-eth-l2bdbasemaclrn-oacl1-statefull-flows100k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermitreflect-ndrpdrdisc.robot:| tc15-64B-1t1c-eth-l2bdbasemaclrn-oacl10-statefull-flows100k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-acloutpermitreflect-ndrpdrdisc.robot:| tc17-64B-1t1c-eth-l2bdbasemaclrn-oacl50-statefull-flows100k-ndrdisc
- 10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot:| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc
- 10ge2p1x520-eth-l2xcbase-eth-2memif-1lxc-ndrpdrdisc.robot:| tc01-64B-1t1c-eth-l2xcbase-eth-2memif-1lxc-ndrdisc
- 10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot:| tc01-64B-1t1c-eth-l2xcbase-ndrdisc
- 10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot:| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc
- 40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot:| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc
- 40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot:| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc
- 40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot:| tc01-64B-1t1c-eth-l2xcbase-ndrdisc
+.. only:: html
+
+ .. program-output:: cd ../../../../../ && set +x && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn|l2bdscale.*|l2dbscale.*)-(eth.*)*ndrdisc" tests/vpp/perf/l2/* && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn|l2bdscale.*)-(eth.*)*ndrdisc" tests/vpp/perf/container_memif/*
+ :shell:
+
+.. only:: latex
+
+ .. code-block:: bash
+
+ $ grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn|l2bdscale.*|l2dbscale.*)-(eth.*)*ndrdisc" tests/vpp/perf/l2/* && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn|l2bdscale.*)-(eth.*)*ndrdisc" tests/vpp/perf/container_memif/*
+
+*Figure 1a. VPP 1thread 1core - packet latency for Phy-to-Phy L2 Ethernet
+Switching (base).*
+
+.. raw:: html
+
+ <iframe width="700" height="1000" frameborder="0" scrolling="no" src="../../_static/vpp/64B-1t1c-l2-sel2-ndrdisc-lat50.html"></iframe>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-l2-sel2-ndrdisc-lat50}
+ \label{fig:64B-1t1c-l2-sel2-ndrdisc-lat50.html}
+ \end{figure}
+
+*Figure 1b. VPP 1thread 1core - packet latency for Phy-to-Phy L2 Ethernet
+Switching (feature).*
+
+CSIT source code for the test cases used for above plots can be found in CSIT
+git repository:
+
+.. only:: html
+
+ .. program-output:: cd ../../../../../ && set +x && cd tests/vpp/perf/l2 && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn).*-(iacl50(-state(ful|less)|sl)-(flows10k.*|10kflows.*)|oacl50-state(ful|less)-flows10k.*)-ndrdisc" *
+ :shell:
+
+.. only:: latex
+
+ .. code-block:: bash
+
+ $ cd tests/vpp/perf/l2
+ $ grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn).*-(iacl50(-state(ful|less)|sl)-(flows10k.*|10kflows.*)|oacl50-state(ful|less)-flows10k.*)-ndrdisc" *