Difference between revisions of "CSIT/PerfTestPlan"

From fd.io
Jump to: navigation, search
Line 1: Line 1:
 +
'''WORK IN PROGRESS - PLEASE TREAT IT AS SUCH'''
 +
 
__TOC__
 
__TOC__
==Performance testing - Jobs==
 
  
[https://wiki.fd.io/view/CSIT/Jobs CSIT Jenkins Jobs for Performance Tests]
+
=CSIT development plan - background=
 +
 
 +
CSIT test development priorities are aligned with VPP releases timeline, with relative dev work prioritization for each VPP release driven by perceived importance of test verification for VPP functionality and performance. Specific CSIT dev work priorities are driven by rough consensus within the project and contributors and committers availability and willingness to do work.
 +
 
 +
Following priority tagging scheme is used in this CSIT wiki and FD.io jira for CSIT:
 +
 
 +
* [$VppRlsNo-$RelPrio]
 +
** VppRlsNo - aligned VPP release number - 16.09, 16.12, 17.03.
 +
** RelPrio - CSIT release priority - P0 for Must Have, P1 for Should Have, P2 for Could Have
 +
* CSIT dev work tagging examples:
 +
** [1609-P0] - CSIT Must Have for vpp-v1609
 +
** [1609-P1] - CSIT Should Have for vpp-v1609
 +
** [1609-P2] - CSIT Could Have for vpp-v1609
 +
 
 +
CSIT dev work plan execution tracked on [https://jira.fd.io/secure/RapidBoard.jspa?rapidView=1&projectKey=CSIT CSIT jira], with priority tags encoded as Jira labels for easy of tracking and reporting.
 +
 
 +
=CSIT performance tests - dev plan=
 +
 
 +
CSIT performance test cases devevelopment work is grouped and tracked across the following VPP functional areas:
 +
 
 +
# IPv4 data plane
 +
# IPv4 control plane
 +
# IPv4 encapsulations
 +
# IPv4 telemetry
 +
# IPv6 data plane
 +
# IPv6 control plane
 +
# IPv6 encapsulations
 +
# IPv6 telemetry
 +
# Ethernet L2 data plane
 +
# Ethernet L2 control plane
 +
# Ethernet L2 encapsulations
 +
# Ethernet L2 telemetry
 +
# MPLS data plane
 +
# NSH data plane
 +
 
 +
CSIT team is tracking completed CSIT dev work per above area (completed = test cases running in FD.io), as well as top-level test coverage metric [%] of VPP functions. VPP code development dependencies are marked with [VPP-DEP]. Performance tests require the functional tests to be completed - see sub-sections "Functional tests preconditions".
 +
 
 +
CSIT performance tests are split into the two main groups:
 +
* NDR(PDR) throughput discovery - tests searching for NDR non-drop rate throughput or PDR partial-drop rate throughput for specified configuration. Also referred to as "long" tests.
 +
* refNDR throughput verification - tests verifying code patches against the reference NDR throughput. Also referred to as "short" tests.
 +
 
 +
==IPv4 data plane==
 +
 
 +
Indicative coverage = <to_be_added>
 +
 
 +
'''Baseline performance'''
 +
 
 +
# [1609-P1] continue to expand VPP driver coverage - DPDK, other TBD (Netmap?, )
 +
#* (single_physical_interface_type,NIC_type)
 +
#* (all_physical_interface_type,NIC_type)
 +
#* (single_virtual_interface_type,VF_type)
 +
#* (all_virtual_interface_type,VF_type) - box-full tests
 +
 
 +
    # [1609-P1] VPN routed forwarding (VRF) - baseline.
 +
 
 +
'''FIB performance'''
 +
 
 +
Large-scale FIB tests
 +
# [1609-DONE] IPv4 same prefix length - [https://gerrit.fd.io/r/#/c/1613/ Gerrit #1613] [https://jira.fd.io/browse/CSIT-169 Jira CSIT-169]
 +
 
 +
    # [1609-P1] IPv4 varying prefix lengths
 +
 
 +
'''Security performance'''
 +
 
 +
# [1606-DONE] security - iacl with n-tuple classification, ip4. NDR, refNDR.
 +
# [1606-DONE] security - cop white-/black-list ip4 src addr filtering. NDR, refNDR.
 +
 
 +
'''QoS performance'''
 +
 
 +
    # [1609-P1] QoS - ingress policing - rate metering, marking and rate-limiting.
 +
 
 +
'''Functional tests preconditions'''
 +
 
 +
# [1606-DONE] IPv4 routing RFC791 - baseline.
 +
 
 +
Below copied from CSIT functional tests plan.
 +
 
 +
    # [1609-P0] VPN routed forwarding (VRF) - baseline.
 +
    # [1609-P0] extranet VPN routed forwarding (VRF) - baseline.
 +
    # [1609-P0] security - source IPv4 Reverse Path Forwarding (RPF).
 +
    # [1609-P0] qos - ingress policing - 1r2c-(cb,ca), 2r3c-(cb,ca) policers, RFC2475, RFC2697, RFC2698.
 +
    # [1609-P1] routing multipath (ECMP, UECMP) - baseline.
 +
    # [1609-P1] [TODO VPP-xxx] carrier grade nat 44, CGN44, RFC6598, RFC6888.
 +
    # [1609-P2] [TODO VPP-xxx] security - stateful firewall.
 +
 
 +
==IPv4 control plane==
 +
 
 +
Indicative coverage = <to_be_added>
 +
 
 +
# [1609-Px] <to_be_added>
 +
 
 +
'''Functional tests preconditions'''
 +
 
 +
Below copied from CSIT functional tests plan.
 +
 
 +
    # [1609-P0] Proxy ARP.
 +
    # [1609-P0] IKEv2.
 +
    # [1609-P1] DHCPv4 proxy.
 +
    # [1606-DONE] ARP.
 +
    # [1606-DONE] ICMPv4.
 +
    # [1606-DONE] DHCPv4 client.
 +
 
 +
==IPv4 encapsulations==
 +
 
 +
Indicative coverage = <to_be_added>
 +
 
 +
'''Baseline performance'''
 +
 
 +
    # [1609-P1] ip4-gre-ip4 - baseline main fib.
 +
    # [1609-P1] ip4-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf), phy2lisp.
 +
 
 +
'''Functional tests preconditions'''
 +
 
 +
Below copied from CSIT functional tests plan.
 +
 
 +
    # [1609-P0] ip4-ipsec-ip4 - baseline main fib.
 +
    # [1609-P0] ip4-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp.
 +
    # [1609-P0] ip4-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf), lisp2lisp.
 +
    # [1609-P0] ip4-ipsec-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp.
 +
    # [1609-P0] ip4-ipsec-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf), lisp2lisp.
 +
    # [1606-DONE] ip4-gre-ip4 - baseline main fib.
 +
 
 +
==IPv4 telemetry==
 +
 
 +
Indicative coverage = <to_be_added>
 +
 
 +
# [1609-Px] <to_be_added>
 +
 
 +
'''Functional tests preconditions'''
 +
 
 +
Below copied from CSIT functional tests plan.
 +
 
 +
    # [1609-P0] IPv4 IPFIX - stats collection and export - baseline.
 +
    # [1609-P0] IPv4 IPFIX - stats collection and export - functional scale.
 +
    # [1609-P0] Switched port analyzer mirroring SPAN - (flow,port) mirroring to local port - baseline.
 +
    # [1609-P1] Lawful intercept  - (flow,port) mirroring to remote locatio via LI UDP tunnel - baseline.
 +
 
 +
==IPv6 data plane==
 +
 
 +
Indicative coverage = <to_be_added>
 +
 
 +
'''Baseline performance'''
 +
 
 +
# [1609-P1] continue to expand VPP driver coverage - DPDK, other TBD (Netmap?, )
 +
#* (single_physical_interface_type,NIC_type)
 +
#* (all_physical_interface_type,NIC_type)
 +
#* (single_virtual_interface_type,VF_type)
 +
#* (all_virtual_interface_type,VF_type) - box-full tests
 +
 
 +
    # [1609-P1] VPN routed forwarding (VRF) - baseline.
 +
 
 +
'''FIB performance'''
 +
 
 +
Large-scale FIB tests
 +
# [1609-REVIEW] IPv6 same prefix length - [https://gerrit.fd.io/r/#/c/1664/ Gerrit #1664] [https://jira.fd.io/browse/CSIT-179 Jira CSIT-179]
 +
 
 +
    # [1609-P1] IPv6 varying prefix lengths
 +
 
 +
'''Security performance'''
 +
 
 +
# [1609-DONE] security - iacl with n-tuple classification, ip6. NDR, refNDR.
 +
# [1606-DONE] security - cop white-/black-list ip6 src addr filtering. NDR, refNDR.
 +
 
 +
'''QoS performance'''
 +
 
 +
    # [1609-P1] QoS - ingress policing - rate metering, marking and rate-limiting.
 +
 
 +
'''Functional tests preconditions'''
 +
 
 +
# [1606-DONE] routing [rfc2460] - baseline.
 +
 
 +
Below copied from CSIT functional tests plan.
 +
 
 +
    # [1609-P0] VPN routed forwarding (VRF) - baseline.
 +
    # [1609-P0] extranet VPN routed forwarding (VRF) - baseline.
 +
    # [1609-P0] security - source IPv6 Reverse Path Forwarding (RPF).
 +
    # [1609-P0] qos - ingress policing - 1r2c-(cb,ca), 2r3c-(cb,ca) policers, RFC2475, RFC2697, RFC2698.
 +
    # [1609-P1] routing multipath (ECMP, UECMP) - baseline.
 +
    # [1609-P2] [TODO VPP-xxx] security - stateful firewall.
 +
 
 +
==IPv6 control plane==
 +
 
 +
Indicative coverage = <to_be_added>
 +
 
 +
# [1609-Px] <to_be_added>
 +
 
 +
'''Functional tests preconditions'''
 +
 
 +
Below copied from CSIT functional tests plan.
 +
 
 +
    # [1609-P0] router advertisement.
 +
    # [1609-P1] DHCPv6 proxy.
 +
    # [1609-P2] [TODO VPP-xxx] ip6-ioam, in-band OAM.
 +
    # [1606-DONE] neighbor discovery, RFC4861.
 +
    # [1606-DONE] ICMPv6.
 +
 
 +
==IPv6 encapsulations==
 +
 
 +
Indicative coverage = <to_be_added>
 +
 
 +
    # [1609-P1] ip6-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), phy2lisp.
 +
 
 +
'''Functional tests preconditions'''
 +
 
 +
Below copied from CSIT functional tests plan.
 +
 
 +
    # [1609-P0] ip4-o-ip6 softwire.
 +
    # [1609-P0] ip6-ipsec-ip6.
 +
    # [1609-P0] ip6-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp.
 +
    # [1609-P0] ip6-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), lisp2lisp.
 +
    # [1609-P1] ip4-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp.
 +
    # [1609-P1] ip4-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), lisp2lisp.
 +
    # [1609-P0] ip6-ipsec-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp.
 +
    # [1609-P0] ip6-ipsec-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), lisp2lisp.
 +
    # [1609-P1] ip4-ipsec-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp.
 +
    # [1609-P1] ip4-ipsec-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), lisp2lisp.
 +
    # [1609-P1] [TODO VPP-xxx] ip6-segment-routing.
 +
 
 +
==IPv6 telemetry==
 +
 
 +
Indicative coverage = <to_be_added>
 +
 
 +
# [1609-Px] <to_be_added>
 +
 
 +
'''Functional tests preconditions'''
 +
 
 +
Below copied from CSIT functional tests plan.
 +
 
 +
    # [1609-P0] IPv6 IPFIX - stats collection and export - baseline.
 +
    # [1609-P0] IPv6 IPFIX - stats collection and export - functional scale.
 +
    # [1609-P0] Switched port analyzer mirroring SPAN - (flow,port) mirroring to local port - baseline.
 +
    # [1609-P1] Lawful intercept  - (flow,port) mirroring to remote locatio via LI UDP tunnel - baseline.
 +
 
 +
==Ethernet L2 data plane==
 +
 
 +
Indicative coverage = <to_be_added>
 +
 
 +
'''Baseline performance'''
 +
 
 +
# [1609-P1] continue to expand VPP driver coverage - DPDK, other TBD (Netmap?, )
 +
#* (single_physical_interface_type,NIC_type)
 +
#* (all_physical_interface_type,NIC_type)
 +
#* (single_virtual_interface_type,VF_type)
 +
#* (all_virtual_interface_type,VF_type) - box-full tests
 +
 
 +
'''FIB performance'''
 +
 
 +
Large-scale FIB tests
 +
 
 +
# [1609-P0] [TODO VPP-201] MAC addresses - [https://gerrit.fd.io/r/#/c/1862/ Gerrit #1862]
 +
 
 +
'''Functional tests preconditions'''
 +
 
 +
# [1606-DONE] L2 Cross-connect - baseline.
 +
# [1606-DONE] Bridge domain - baseline.
 +
 
 +
 
 +
Below copied from CSIT functional tests plan.
 +
 
 +
    # [1609-P0] Bridge domain - with VLAN tag acrobatics 1-to-1, 1-to-2, 2-to-1, 2-to-2.
 +
    # [1609-P1] Integrated Routing-Bridging (IRB) - baseline.
 +
    # [1606-DONE] L2 Cross-connect - with VLAN tag acrobatics 1-to-1, 1-to-2, 2-to-1, 2-to-2.
 +
 
 +
==Ethernet L2 control plane==
 +
 
 +
Indicative coverage = <to_be_added>
 +
 
 +
# [1609-Px] <to_be_added>
 +
 
 +
'''Functional tests preconditions'''
 +
 
 +
# [1606-DONE] MAC learning.
 +
 
 +
Below copied from CSIT functional tests plan.
 +
 
 +
    # [1609-P2] [TODO VPP-xxx] CDP/LLDP.
 +
    # [1606-DONE] MAC split-horizon.
 +
 
 +
==Ethernet L2 encapsulations==
 +
 
 +
Indicative coverage = <to_be_added>
 +
 
 +
# [1609-P0] l2-eth-lispgpe-ip6 - L2BD, L2XC.
 +
# [1609-P0] l2-eth-lispgpe-ip4 - L2BD, L2XC.
 +
# [1606-DONE] l2-vxlan-ipv4 - with bridge-domain.
 +
# [1606-DONE] l2-vxlan-ipv4 - with L2 cross-connect.
 +
 
 +
Inputs from functional test plan:
 +
 
 +
    # [1609-P0] l2-eth-lispgpe-ip6 - L2BD, L2XC.
 +
    # [1609-P0] l2-eth-lispgpe-ip4 - L2BD, L2XC.
 +
    # [1609-P0] l2eth-gre-ip4-ipsec-ip4-eth - L2BD, L2XC.
 +
    # [1609-P2] l2-eth-l2tpv3-ip4 - L2BD, L2XC.
 +
    # [1609-P2] l2-eth-l2tpv3-ip6 - L2BD, L2XC.
 +
    # [1609-P2] l2-eth-gre-ip4 - L2BD, L2XC.
 +
    # [1609-P2] l2-eth-gre-ip6 - L2BD, L2XC.
 +
    # [1606-DONE] l2-vxlan-ipv4 - with bridge-domain.
 +
    # [1606-DONE] l2-vxlan-ipv4 - with L2 cross-connect.
 +
 
 +
==L2 telemetry==
 +
 
 +
Indicative coverage = <to_be_added>
 +
 
 +
# [1609-Px] <to_be_added>
 +
 
 +
'''Functional tests preconditions'''
 +
 
 +
Below copied from CSIT functional tests plan.
  
==Performance testing - Testbeds==
+
    # [1609-P1] L2 FIB - stats collection and export - baseline.
 +
    # [1609-P2] L2 FIB - stats collection and export - functional scale.
 +
    # [1609-P0] Switched port analyzer mirroring SPAN - (flow,port) mirroring to local port - baseline.
 +
    # [1609-P1] Lawful intercept  - (flow,port) mirroring to remote locatio via LI UDP tunnel - baseline.
  
[https://wiki.fd.io/view/CSIT/CSIT_LF_testbed CSIT LF testbed for Performance Tests]: all 3 LF physical testbeds are all live
+
==MPLS data plane==
  
==Performance testing - Test Cases==
+
Indicative coverage = <to_be_added>
  
===CSIT test suite list for VPP v16.06===
+
# [1609-Px] <to_be_added>
  
[https://wiki.fd.io/view/CSIT/VPP-16.06_Test_Report#Long_Performance_Tests_-_NDR_and_PDR_Search Test Suites]
+
'''Functional tests preconditions'''
  
===CSIT test suite list for VPP v16.09===
+
Below copied from CSIT functional tests plan.
  
[TO-DO]
+
    # [1609-P2] vpnv4-mpls-gre-ip4.
 +
    # [1609-P2] mpls-o-eth.
  
==Performance Test Cases - Plan and Status==
+
==NSH data plane==
  
For CSIT project to work and be useful, it is proposed that CSIT code and test cases development should be done in coordination with VPP Release Candidate content and release schedule.
+
Indicative coverage = <to_be_added>
CSIT development work needs to be prioritized based on FD.io community needs and feedback, and csit-dev work distributed. To facilitate this, we compiled an initial list of proposed performance test cases that must, should, could be tested. Each csit-dev work item is prefixed with status and/or proposed priority relative to FD.io VPP release:
+
* [Pn-Rm] – Proposed coverage of VPP functionality by FD.io CSIT functional and performance test cases.
+
** '''P'''n – CSIT development and integration '''priority'''; n=0,1,2, 0-for-MUST, 1-for-SHOULD, 2-for-COULD.
+
** '''R'''m – VPP major '''release''', R1 stands for the first FD.io VPP release, R2 for the 2nd FD.io VPP release.
+
* [DONE-Rm] - Done and working test cases, executed for VPP Rm code.
+
* [TBD] - Development work scheduling priority to-be-defined.
+
  
Plan execution tracked on [https://jira.fd.io/secure/RapidBoard.jspa?rapidView=1&projectKey=CSIT CSIT jira]
+
# [1609-Px] <to_be_added>
  
===CSIT-DEV plan for VPP v16.06===
+
'''Functional tests preconditions'''
  
# Long throughput benchmarks - libraries
+
Below copied from CSIT functional tests plan.
#* L2/IPv4/IPv6 NonDropRate search
+
#** Linear search (rfc2544) - [https://gerrit.fd.io/r/#/c/515/ Gerrit #515]
+
#** Binary search (rfc2544) - [https://gerrit.fd.io/r/#/c/564/ Gerrit #564]
+
#** BESTofN/WORSTofN search - [https://gerrit.fd.io/r/#/c/603/ Gerrit #603]
+
#** Combined binary+linear search - [https://gerrit.fd.io/r/#/c/671/ Gerrit #671]
+
#* L2/IPv4/IPv6 PartialDropRate search
+
#** Linear search (rfc2544) - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#** Binary search (rfc2544) - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#** BESTofN/WORSTofN search - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#** Combined binary+linear search - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
# Long throughput benchmarks - test cases
+
#* IPv4 baseline NonDropRate search
+
#** Linear search (rfc2544) - [https://gerrit.fd.io/r/#/c/574/ Gerrit #574]
+
#** Binary search (rfc2544) - [https://gerrit.fd.io/r/#/c/574/ Gerrit #574]
+
#** BESTofN/WORSTofN search - [https://gerrit.fd.io/r/#/c/574/ Gerrit #574]
+
#** Combined binary+linear search - [https://gerrit.fd.io/r/#/c/574/ Gerrit #574]
+
#* L2 baseline NonDropRate search
+
#** Linear search (rfc2544) - [https://gerrit.fd.io/r/#/c/574/ Gerrit #574]
+
#** Binary search (rfc2544) - [https://gerrit.fd.io/r/#/c/574/ Gerrit #574]
+
#** BESTofN/WORSTofN search - [https://gerrit.fd.io/r/#/c/574/ Gerrit #574]
+
#** Combined binary+linear search - [https://gerrit.fd.io/r/#/c/574/ Gerrit #574]
+
#* IPv6 baseline NonDropRate search
+
#** Linear search (rfc2544) - [https://gerrit.fd.io/r/#/c/824/ Gerrit #824] [https://jira.fd.io/browse/CSIT-2 Jira CSIT-2]
+
#** Binary search (rfc2544) - [https://gerrit.fd.io/r/#/c/824/ Gerrit #824] [https://jira.fd.io/browse/CSIT-2 Jira CSIT-2]
+
#** BESTofN/WORSTofN search - [https://gerrit.fd.io/r/#/c/824/ Gerrit #824] [https://jira.fd.io/browse/CSIT-2 Jira CSIT-2]
+
#** Combined binary+linear search - [https://gerrit.fd.io/r/#/c/824/ Gerrit #824] [https://jira.fd.io/browse/CSIT-2 Jira CSIT-2]
+
#* IPv4 baseline PartialDropRate search
+
#** Linear search (rfc2544) - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#** Binary search (rfc2544) - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#** BESTofN/WORSTofN search - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#** Combined binary+linear search - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#* L2 baseline PartialDropRate search
+
#** Linear search (rfc2544) - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#** Binary search (rfc2544) - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#** BESTofN/WORSTofN search - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#** Combined binary+linear search - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#* IPv6 baseline PartialDropRate search
+
#** Linear search (rfc2544) - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#** Binary search (rfc2544) - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#** BESTofN/WORSTofN search - [https://gerrit.fd.io/r/#/c/1092/ Gerrit #1092] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
#** Combined binary+linear search - [https://gerrit.fd.io/r/#/c/824/ Gerrit #824] [https://jira.fd.io/browse/CSIT-67 Jira CSIT-67]
+
# Short throughput benchmarks - libraries
+
#* Short IPv4 throughput test against reference NDR - [https://gerrit.fd.io/r/#/c/574/ Gerrit #574]
+
#* Short L2 throughput test against reference NDR - [https://gerrit.fd.io/r/#/c/574/ Gerrit #574]
+
#* Short IPv6 throughput test against reference NDR - [https://gerrit.fd.io/r/#/c/824/ Gerrit #824] [https://jira.fd.io/browse/CSIT-2 Jira CSIT-2]
+
# Short throughput benchmarks - test cases
+
#* Short IPv4 throughput - routed-forwarding - [https://gerrit.fd.io/r/#/c/574/ Gerrit #574]
+
#* Short L2 throughput - bridge-domain, l2-xconnect - [https://gerrit.fd.io/r/#/c/574/ Gerrit #574]
+
#* Short IPv6 throughput - routed-forwarding - [https://gerrit.fd.io/r/#/c/824/ Gerrit #824] [https://jira.fd.io/browse/CSIT-2 Jira CSIT-2]
+
# 3-node physical testbed - libraries
+
#* Create host topology files for tb2 - [https://gerrit.fd.io/r/#/c/954/ Gerrit #954] [https://jira.fd.io/browse/CSIT-8 Jira CSIT-8]
+
#* Extend host topology with NIC type filtering - [https://gerrit.fd.io/r/#/c/808/ Gerrit #808] [https://jira.fd.io/browse/CSIT-1 Jira CSIT-1]
+
#* Create host topology files for tb1, tb3 - [https://gerrit.fd.io/r/#/c/1202/ Gerrit #1202] [https://gerrit.fd.io/r/#/c/1042/ Gerrit #1042] [https://jira.fd.io/browse/CSIT-8 Jira CSIT-8]
+
# Multi-core multi-thread tests - libraries
+
#* Multicore tests - [https://gerrit.fd.io/r/#/c/710/ Gerrit #710]
+
# Security feature
+
#* Classify IPv4 iACL - [https://gerrit.fd.io/r/#/c/1272/ Gerrit #1272] [https://jira.fd.io/browse/CSIT-119 Jira CSIT-119]
+
#* IPv6 COP - [https://gerrit.fd.io/r/#/c/1262/ Gerrit #1262] [https://jira.fd.io/browse/CSIT-109 Jira CSIT-109]
+
#* IPv4 COP - [https://gerrit.fd.io/r/#/c/1254/ Gerrit #1254] [https://jira.fd.io/browse/CSIT-105 Jira CSIT-105]
+
# L2 encapsulations
+
#* l2-vlan-dot1q - [https://gerrit.fd.io/r/#/c/973/ Gerrit #973] [https://jira.fd.io/browse/CSIT-59 Jira CSIT-59]
+
#* l2-vlan-dot1ad - [https://gerrit.fd.io/r/#/c/1250/ Gerrit #1250] [https://jira.fd.io/browse/CSIT-60 Jira CSIT-60]
+
# VPP vNet topology baselines - libraries
+
#* Host stack VPP baseline - Phy1-VPP-Phy2
+
# vNet VPP topologies - libraries
+
#* Phy1-VPP-Phy2
+
# Traffic generator drivers
+
#* T-Rex
+
#** T-Rex driver
+
#** TRex support for packet delay and packet delay variation [https://gerrit.fd.io/r/#/c/1209/ Gerrit #1209] [https://jira.fd.io/browse/CSIT-102 Jira CSIT-102]
+
# Other work items
+
#* Collect VPP counter statistics - [https://gerrit.fd.io/r/#/c/1195/ Gerrit #1195] [https://jira.fd.io/browse/CSIT-71 Jira CSIT-71]
+
#* Tune VPP performance by modifying startup config - [https://gerrit.fd.io/r/#/c/1071/ Gerrit #1071] [https://gerrit.fd.io/r/#/c/1433/ Gerrit #1433] [https://jira.fd.io/browse/CSIT-73 Jira CSIT-73]
+
#* Replace linear search with binary search - [https://gerrit.fd.io/r/#/c/1189/ Gerrit #1189] [https://jira.fd.io/browse/CSIT-97 Jira CSIT-97]
+
#* Troubleshooting VPP - [https://jira.fd.io/browse/CSIT-118 CSIT-118]
+
#* Unified performance trend dashboard [https://gerrit.fd.io/r/#/c/1493/ Gerrit #1493] [https://gerrit.fd.io/r/#/c/1787/ Gerrit #1787] [https://gerrit.fd.io/r/#/c/1413/ Gerrit #1413] [https://jira.fd.io/browse/CSIT-135 Jira CSIT-135] [https://jira.fd.io/browse/CIMANAGE-9 Jira CIMANAGE-9] [https://jira.fd.io/browse/CIMANAGE-10 Jira CIMANAGE-10]
+
  
===CSIT-DEV plan for VPP v16.09===
+
    # [1609-P1] ip4-nsh-gre-ip4.
 +
    # [1609-P1] ip4-nsh-vxlan-gpe-ip4.
  
# Large-scale FIB tests - libraries
+
END OF NOTE
#* [P0-R2] IPv4 same prefix length - [https://gerrit.fd.io/r/#/c/1613/ Gerrit #1613] [https://jira.fd.io/browse/CSIT-169 Jira CSIT-169]
+
#* [P1-R2] IPv4 varying prefix lengths
+
#* [P0-R2] IPv6 same prefix length - [https://gerrit.fd.io/r/#/c/1664/ Gerrit #1664] [https://jira.fd.io/browse/CSIT-179 Jira CSIT-179]
+
#* [P1-R2] IPv6 varying prefix lengths
+
#* [P0-R2] MAC addresses - [https://gerrit.fd.io/r/#/c/1862/ Gerrit #1862]
+
# Packet encapsulations - test cases
+
#* IP4 encapsulations
+
#** [P1-R2] ip4-gre-ip4
+
#** [P1-R2] ip4-ipsec-ip4
+
#* IP6 encapsulations
+
#** [P1-R2] ip4-o-ip6 softwire
+
#*** [P1-R2] lightweight46 [rfc7596]
+
#** [P2-R2] map-e [rfc7597]
+
#** [P2-R2] map-t [rfc7599]
+
#* L2 encapsulations
+
#** [P1-R2] l2-vxlan-ipv4
+
#** [TBD] l2-eth-l2tpv3-ip4
+
#** [TBD] l2-eth-l2tpv3-ip6
+
#** [TBD] l2-eth-gre-ip4
+
#** [TBD] l2-eth-gre-ip6
+
#* [TBD] ip6-segment-routing
+
#* [P1-R2] ip6-ipsec-ip6
+
# Security feature
+
#* [TBD] IPv6 iACL
+
# VPP vNet topology baselines - libraries
+
#* Host stack baseline - Phy1-App-Phy2
+
#** [P0-R2] Reference host user-mode app, L3FWD-xconnect, DPDK driver per NIC type - [https://gerrit.fd.io/r/#/c/808/ Gerrit #808] [https://gerrit.fd.io/r/#/c/1267/ Gerrit #1267] [https://jira.fd.io/browse/CSIT-1 Jira CSIT-1] [https://jira.fd.io/browse/CSIT-106 Jira CSIT-106]
+
#* Host stack VPP baseline - Phy1-VPP-Phy2
+
#** [TBD] Host VPP IPv4 baseline config, DPDK driver per NIC type
+
#* Guest stack baseline - Phy1-pcipt-AppVM-pcipt-Phy2
+
#** [TBD] Reference guest user-mode app, L3FWD-xconnect, DPDK driver per NIC type
+
#* Guest stack VPP baseline - Phy1-pcipt-VPPVM-pcipt-Phy2
+
#** [TBD] VPP IPv4 baseline config, DPDK driver per NIC type
+
#* Host and guest stack baseline - Phy1-VPP-AppVM-VPP-Phy2
+
#** [TBD] VPP IPv4 baseline config, vhost-user to AppVM
+
# vNet VPP topologies - libraries
+
#* [P0-R2] Phy1-VPP-VM-VPP-Phy2 - [https://gerrit.fd.io/r/#/c/1319/ Gerrit #1319] [https://jira.fd.io/browse/CSIT-63 Jira CSIT-63]
+
# Traffic generator drivers
+
#* IXIA IxNetwork driver
+
#** [P1-R2] driver design - [https://gerrit.fd.io/r/#/c/1561/ Gerrit #1561] [https://jira.fd.io/browse/CSIT-66 Jira CSIT-66]
+
#** [P1-R2] driver implementation - [https://gerrit.fd.io/r/#/c/1561/ Gerrit #1561] [https://jira.fd.io/browse/CSIT-66 Jira CSIT-66]
+
#*** [TBD] test case setup, teardown
+
#*** [TBD] traffic stream configuration
+
#*** [TBD] statistics retrieval
+
#** latency measurements
+
#*** [TBD] feasibility
+
#*** [TBD] implementation
+
#** [TBD] integration with CSIT tests
+
#* Moongen driver
+
#** [TBD] verify requirements and available HW against latest MoonGen codebase
+
#** [TBD] CSIT integration
+
#* LWPG driver
+
#** [TBD] driver design
+
#** [TBD] driver implementation
+
#*** [TBD] test case setup, teardown
+
#*** [TBD] traffic stream configuration
+
#*** [TBD] statistics retrieval
+
#** [TBD] latency measurements
+
#*** [TBD] feasibility
+
#*** [TBD] implementation
+
#** [TBD] integration with CSIT tests
+
# Other work items
+
#* [TBD] integrate [https://pypi.python.org/pypi/sysinfosuite Python sysinfosuite] to CSIT
+

Revision as of 12:18, 19 July 2016

WORK IN PROGRESS - PLEASE TREAT IT AS SUCH

CSIT development plan - background

CSIT test development priorities are aligned with VPP releases timeline, with relative dev work prioritization for each VPP release driven by perceived importance of test verification for VPP functionality and performance. Specific CSIT dev work priorities are driven by rough consensus within the project and contributors and committers availability and willingness to do work.

Following priority tagging scheme is used in this CSIT wiki and FD.io jira for CSIT:

  • [$VppRlsNo-$RelPrio]
    • VppRlsNo - aligned VPP release number - 16.09, 16.12, 17.03.
    • RelPrio - CSIT release priority - P0 for Must Have, P1 for Should Have, P2 for Could Have
  • CSIT dev work tagging examples:
    • [1609-P0] - CSIT Must Have for vpp-v1609
    • [1609-P1] - CSIT Should Have for vpp-v1609
    • [1609-P2] - CSIT Could Have for vpp-v1609

CSIT dev work plan execution tracked on CSIT jira, with priority tags encoded as Jira labels for easy of tracking and reporting.

CSIT performance tests - dev plan

CSIT performance test cases devevelopment work is grouped and tracked across the following VPP functional areas:

  1. IPv4 data plane
  2. IPv4 control plane
  3. IPv4 encapsulations
  4. IPv4 telemetry
  5. IPv6 data plane
  6. IPv6 control plane
  7. IPv6 encapsulations
  8. IPv6 telemetry
  9. Ethernet L2 data plane
  10. Ethernet L2 control plane
  11. Ethernet L2 encapsulations
  12. Ethernet L2 telemetry
  13. MPLS data plane
  14. NSH data plane

CSIT team is tracking completed CSIT dev work per above area (completed = test cases running in FD.io), as well as top-level test coverage metric [%] of VPP functions. VPP code development dependencies are marked with [VPP-DEP]. Performance tests require the functional tests to be completed - see sub-sections "Functional tests preconditions".

CSIT performance tests are split into the two main groups:

  • NDR(PDR) throughput discovery - tests searching for NDR non-drop rate throughput or PDR partial-drop rate throughput for specified configuration. Also referred to as "long" tests.
  • refNDR throughput verification - tests verifying code patches against the reference NDR throughput. Also referred to as "short" tests.

IPv4 data plane

Indicative coverage = <to_be_added>

Baseline performance

  1. [1609-P1] continue to expand VPP driver coverage - DPDK, other TBD (Netmap?, )
    • (single_physical_interface_type,NIC_type)
    • (all_physical_interface_type,NIC_type)
    • (single_virtual_interface_type,VF_type)
    • (all_virtual_interface_type,VF_type) - box-full tests
   # [1609-P1] VPN routed forwarding (VRF) - baseline.

FIB performance

Large-scale FIB tests

  1. [1609-DONE] IPv4 same prefix length - Gerrit #1613 Jira CSIT-169
   # [1609-P1] IPv4 varying prefix lengths

Security performance

  1. [1606-DONE] security - iacl with n-tuple classification, ip4. NDR, refNDR.
  2. [1606-DONE] security - cop white-/black-list ip4 src addr filtering. NDR, refNDR.

QoS performance

   # [1609-P1] QoS - ingress policing - rate metering, marking and rate-limiting.

Functional tests preconditions

  1. [1606-DONE] IPv4 routing RFC791 - baseline.

Below copied from CSIT functional tests plan.

   # [1609-P0] VPN routed forwarding (VRF) - baseline.
   # [1609-P0] extranet VPN routed forwarding (VRF) - baseline.
   # [1609-P0] security - source IPv4 Reverse Path Forwarding (RPF).
   # [1609-P0] qos - ingress policing - 1r2c-(cb,ca), 2r3c-(cb,ca) policers, RFC2475, RFC2697, RFC2698.
   # [1609-P1] routing multipath (ECMP, UECMP) - baseline.
   # [1609-P1] [TODO VPP-xxx] carrier grade nat 44, CGN44, RFC6598, RFC6888.
   # [1609-P2] [TODO VPP-xxx] security - stateful firewall.

IPv4 control plane

Indicative coverage = <to_be_added>

  1. [1609-Px] <to_be_added>

Functional tests preconditions

Below copied from CSIT functional tests plan.

   # [1609-P0] Proxy ARP.
   # [1609-P0] IKEv2.
   # [1609-P1] DHCPv4 proxy.
   # [1606-DONE] ARP.
   # [1606-DONE] ICMPv4.
   # [1606-DONE] DHCPv4 client.

IPv4 encapsulations

Indicative coverage = <to_be_added>

Baseline performance

   # [1609-P1] ip4-gre-ip4 - baseline main fib.
   # [1609-P1] ip4-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf), phy2lisp.

Functional tests preconditions

Below copied from CSIT functional tests plan.

   # [1609-P0] ip4-ipsec-ip4 - baseline main fib.
   # [1609-P0] ip4-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp.
   # [1609-P0] ip4-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf), lisp2lisp.
   # [1609-P0] ip4-ipsec-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp.
   # [1609-P0] ip4-ipsec-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf), lisp2lisp.
   # [1606-DONE] ip4-gre-ip4 - baseline main fib.

IPv4 telemetry

Indicative coverage = <to_be_added>

  1. [1609-Px] <to_be_added>

Functional tests preconditions

Below copied from CSIT functional tests plan.

   # [1609-P0] IPv4 IPFIX - stats collection and export - baseline.
   # [1609-P0] IPv4 IPFIX - stats collection and export - functional scale.
   # [1609-P0] Switched port analyzer mirroring SPAN - (flow,port) mirroring to local port - baseline.
   # [1609-P1] Lawful intercept  - (flow,port) mirroring to remote locatio via LI UDP tunnel - baseline.

IPv6 data plane

Indicative coverage = <to_be_added>

Baseline performance

  1. [1609-P1] continue to expand VPP driver coverage - DPDK, other TBD (Netmap?, )
    • (single_physical_interface_type,NIC_type)
    • (all_physical_interface_type,NIC_type)
    • (single_virtual_interface_type,VF_type)
    • (all_virtual_interface_type,VF_type) - box-full tests
   # [1609-P1] VPN routed forwarding (VRF) - baseline.

FIB performance

Large-scale FIB tests

  1. [1609-REVIEW] IPv6 same prefix length - Gerrit #1664 Jira CSIT-179
   # [1609-P1] IPv6 varying prefix lengths

Security performance

  1. [1609-DONE] security - iacl with n-tuple classification, ip6. NDR, refNDR.
  2. [1606-DONE] security - cop white-/black-list ip6 src addr filtering. NDR, refNDR.

QoS performance

   # [1609-P1] QoS - ingress policing - rate metering, marking and rate-limiting.

Functional tests preconditions

  1. [1606-DONE] routing [rfc2460] - baseline.

Below copied from CSIT functional tests plan.

   # [1609-P0] VPN routed forwarding (VRF) - baseline.
   # [1609-P0] extranet VPN routed forwarding (VRF) - baseline.
   # [1609-P0] security - source IPv6 Reverse Path Forwarding (RPF).
   # [1609-P0] qos - ingress policing - 1r2c-(cb,ca), 2r3c-(cb,ca) policers, RFC2475, RFC2697, RFC2698.
   # [1609-P1] routing multipath (ECMP, UECMP) - baseline.
   # [1609-P2] [TODO VPP-xxx] security - stateful firewall.

IPv6 control plane

Indicative coverage = <to_be_added>

  1. [1609-Px] <to_be_added>

Functional tests preconditions

Below copied from CSIT functional tests plan.

   # [1609-P0] router advertisement.
   # [1609-P1] DHCPv6 proxy.
   # [1609-P2] [TODO VPP-xxx] ip6-ioam, in-band OAM.
   # [1606-DONE] neighbor discovery, RFC4861.
   # [1606-DONE] ICMPv6.

IPv6 encapsulations

Indicative coverage = <to_be_added>

   # [1609-P1] ip6-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), phy2lisp.

Functional tests preconditions

Below copied from CSIT functional tests plan.

   # [1609-P0] ip4-o-ip6 softwire.
   # [1609-P0] ip6-ipsec-ip6.
   # [1609-P0] ip6-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp.
   # [1609-P0] ip6-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), lisp2lisp.
   # [1609-P1] ip4-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp.
   # [1609-P1] ip4-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), lisp2lisp.
   # [1609-P0] ip6-ipsec-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp.
   # [1609-P0] ip6-ipsec-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), lisp2lisp.
   # [1609-P1] ip4-ipsec-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp.
   # [1609-P1] ip4-ipsec-lispgpe-ip6 - main fib, vrf (gpe_vni-to-vrf), lisp2lisp.
   # [1609-P1] [TODO VPP-xxx] ip6-segment-routing.

IPv6 telemetry

Indicative coverage = <to_be_added>

  1. [1609-Px] <to_be_added>

Functional tests preconditions

Below copied from CSIT functional tests plan.

   # [1609-P0] IPv6 IPFIX - stats collection and export - baseline.
   # [1609-P0] IPv6 IPFIX - stats collection and export - functional scale.
   # [1609-P0] Switched port analyzer mirroring SPAN - (flow,port) mirroring to local port - baseline.
   # [1609-P1] Lawful intercept  - (flow,port) mirroring to remote locatio via LI UDP tunnel - baseline.

Ethernet L2 data plane

Indicative coverage = <to_be_added>

Baseline performance

  1. [1609-P1] continue to expand VPP driver coverage - DPDK, other TBD (Netmap?, )
    • (single_physical_interface_type,NIC_type)
    • (all_physical_interface_type,NIC_type)
    • (single_virtual_interface_type,VF_type)
    • (all_virtual_interface_type,VF_type) - box-full tests

FIB performance

Large-scale FIB tests

  1. [1609-P0] [TODO VPP-201] MAC addresses - Gerrit #1862

Functional tests preconditions

  1. [1606-DONE] L2 Cross-connect - baseline.
  2. [1606-DONE] Bridge domain - baseline.


Below copied from CSIT functional tests plan.

   # [1609-P0] Bridge domain - with VLAN tag acrobatics 1-to-1, 1-to-2, 2-to-1, 2-to-2.
   # [1609-P1] Integrated Routing-Bridging (IRB) - baseline.
   # [1606-DONE] L2 Cross-connect - with VLAN tag acrobatics 1-to-1, 1-to-2, 2-to-1, 2-to-2.

Ethernet L2 control plane

Indicative coverage = <to_be_added>

  1. [1609-Px] <to_be_added>

Functional tests preconditions

  1. [1606-DONE] MAC learning.

Below copied from CSIT functional tests plan.

   # [1609-P2] [TODO VPP-xxx] CDP/LLDP.
   # [1606-DONE] MAC split-horizon.

Ethernet L2 encapsulations

Indicative coverage = <to_be_added>

  1. [1609-P0] l2-eth-lispgpe-ip6 - L2BD, L2XC.
  2. [1609-P0] l2-eth-lispgpe-ip4 - L2BD, L2XC.
  3. [1606-DONE] l2-vxlan-ipv4 - with bridge-domain.
  4. [1606-DONE] l2-vxlan-ipv4 - with L2 cross-connect.

Inputs from functional test plan:

   # [1609-P0] l2-eth-lispgpe-ip6 - L2BD, L2XC.
   # [1609-P0] l2-eth-lispgpe-ip4 - L2BD, L2XC.
   # [1609-P0] l2eth-gre-ip4-ipsec-ip4-eth - L2BD, L2XC.
   # [1609-P2] l2-eth-l2tpv3-ip4 - L2BD, L2XC.
   # [1609-P2] l2-eth-l2tpv3-ip6 - L2BD, L2XC.
   # [1609-P2] l2-eth-gre-ip4 - L2BD, L2XC.
   # [1609-P2] l2-eth-gre-ip6 - L2BD, L2XC.
   # [1606-DONE] l2-vxlan-ipv4 - with bridge-domain.
   # [1606-DONE] l2-vxlan-ipv4 - with L2 cross-connect.

L2 telemetry

Indicative coverage = <to_be_added>

  1. [1609-Px] <to_be_added>

Functional tests preconditions

Below copied from CSIT functional tests plan.

   # [1609-P1] L2 FIB - stats collection and export - baseline.
   # [1609-P2] L2 FIB - stats collection and export - functional scale.
   # [1609-P0] Switched port analyzer mirroring SPAN - (flow,port) mirroring to local port - baseline.
   # [1609-P1] Lawful intercept  - (flow,port) mirroring to remote locatio via LI UDP tunnel - baseline.

MPLS data plane

Indicative coverage = <to_be_added>

  1. [1609-Px] <to_be_added>

Functional tests preconditions

Below copied from CSIT functional tests plan.

   # [1609-P2] vpnv4-mpls-gre-ip4.
   # [1609-P2] mpls-o-eth.

NSH data plane

Indicative coverage = <to_be_added>

  1. [1609-Px] <to_be_added>

Functional tests preconditions

Below copied from CSIT functional tests plan.

   # [1609-P1] ip4-nsh-gre-ip4.
   # [1609-P1] ip4-nsh-vxlan-gpe-ip4.

END OF NOTE