L2 Ethernet Switching ===================== Following sections include summary graphs of VPP Phy-to-Phy performance with L2 Ethernet switching, including NDR throughput (zero packet loss) and PDR throughput (<0.5% packet loss). Performance is reported for VPP running in multiple configurations of VPP worker thread(s), a.k.a. VPP data plane thread(s), and their physical CPU core(s) placement. NDR Throughput ~~~~~~~~~~~~~~ VPP NDR 64B packet throughput in 1t1c setup (1thread, 1core) is presented in the graph below. .. raw:: html .. raw:: latex \begin{figure}[H] \centering \graphicspath{{../_build/_static/vpp/}} \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-l2-sel1-ndrdisc} \label{fig:64B-1t1c-l2-sel1-ndrdisc} \end{figure} 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 && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn|l2bdscale.*|l2dbscale.*)-(eth.*)*ndrdisc" tests/vpp/perf/l2/* :shell: .. only:: latex .. code-block:: bash $ grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn|l2bdscale.*|l2dbscale.*)-(eth.*)*ndrdisc" tests/vpp/perf/l2/* *Figure 1a. VPP 1thread 1core - NDR Throughput for Phy-to-Phy L2 Ethernet Switching (base).* .. raw:: html .. 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} \label{fig:64B-1t1c-l2-sel2-ndrdisc} \end{figure} *Figure 1b. VPP 1thread 1core - NDR Throughput 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" * VPP NDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. .. raw:: html .. raw:: latex \begin{figure}[H] \centering \graphicspath{{../_build/_static/vpp/}} \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-l2-sel1-ndrdisc} \label{fig:64B-2t2c-l2-sel1-ndrdisc} \end{figure} 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 && grep -E "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn|l2bdscale.*|l2dbscale.*)-(eth.*)*ndrdisc" tests/vpp/perf/l2/* :shell: .. only:: latex .. code-block:: bash $ grep -E "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn|l2bdscale.*|l2dbscale.*)-(eth.*)*ndrdisc" tests/vpp/perf/l2/* *Figure 2a. VPP 2threads 2cores - NDR Throughput for Phy-to-Phy L2 Ethernet Switching (base).* .. raw:: html .. raw:: latex \begin{figure}[H] \centering \graphicspath{{../_build/_static/vpp/}} \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-l2-sel2-ndrdisc} \label{fig:64B-2t2c-l2-sel2-ndrdisc} \end{figure} *Figure 2b. VPP 2threads 2cores - NDR Throughput 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-2t2c-(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-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn).*-(iacl50(-state(ful|less)|sl)-(flows10k.*|10kflows.*)|oacl50-state(ful|less)-flows10k.*)-ndrdisc" * PDR Throughput ~~~~~~~~~~~~~~ VPP PDR 64B packet throughput in 1t1c setup (1thread, 1core) is presented in the graph below. PDR measured for 0.5% packet loss ratio. .. raw:: html .. raw:: latex \begin{figure}[H] \centering \graphicspath{{../_build/_static/vpp/}} \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-l2-sel1-pdrdisc} \label{fig:64B-1t1c-l2-sel1-pdrdisc} \end{figure} 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 && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn|l2bdscale.*|l2dbscale.*)-(eth.*)*pdrdisc" tests/vpp/perf/l2/* :shell: .. only:: latex .. code-block:: bash $ grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn|l2bdscale.*|l2dbscale.*)-(eth.*)*ndrdisc" tests/vpp/perf/l2/* *Figure 3a. VPP 1thread 1core - PDR Throughput for Phy-to-Phy L2 Ethernet Switching (base).* .. raw:: html .. 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-pdrdisc} \label{fig:64B-1t1c-l2-sel2-pdrdisc} \end{figure} *Figure 3b. VPP 1thread 1core - PDR Throughput 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.*)-pdrdisc" * :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.*)-pdrdisc" * VPP PDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. PDR measured for 0.5% packet loss ratio. .. raw:: htmlhttps://zoom.us/j/5695787389 .. raw:: latex \begin{figure}[H] \centering \graphicspath{{../_build/_static/vpp/}} \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-l2-sel1-pdrdisc} \label{fig:64B-2t2c-l2-sel1-pdrdisc} \end{figure} 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 && grep -E "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn|l2bdscale.*|l2dbscale.*)-(eth.*)*pdrdisc" tests/vpp/perf/l2/* :shell: .. only:: latex .. code-block:: bash $ grep -E "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn|l2bdscale.*|l2dbscale.*)-(eth.*)*ndrdisc" tests/vpp/perf/l2/* *Figure 4a. VPP 2thread 2core - PDR Throughput for Phy-to-Phy L2 Ethernet Switching (base).* .. raw:: html .. raw:: latex \begin{figure}[H] \centering \graphicspath{{../_build/_static/vpp/}} \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-l2-sel2-pdrdisc} \label{fig:64B-2t2c-l2-sel2-pdrdisc} \end{figure} *Figure 4b. VPP 2thread 2core - PDR Throughput for Phy-to-Phy L2 Ethernet Switching (feature).* .. only:: html .. program-output:: cd ../../../../../ && set +x && cd tests/vpp/perf/l2 && grep -E "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn).*-(iacl50(-state(ful|less)|sl)-(flows10k.*|10kflows.*)|oacl50-state(ful|less)-flows10k.*)-pdrdisc" * :shell: .. only:: latex .. code-block:: bash $ cd tests/vpp/perf/l2 $ grep -E "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn).*-(iacl50(-state(ful|less)|sl)-(flows10k.*|10kflows.*)|oacl50-state(ful|less)-flows10k.*)-pdrdisc" *