<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="exp" docName="draft-geng-bmwg-srv6-service-guideline-01"
     ipr="trust200902">
  <front>
    <title abbrev="Abbreviated-Title">SRv6 Service Benchmarking
    Guideline</title>

    <author fullname="Xuesong Geng" initials="X." surname="Geng">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

        <email>gengxuesong@huawei.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Keyi Zhu" initials="K." surname="Zhu">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

        <email>zhukeyi@huawei.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Tianran Zhou" initials="T." surname="Zhou">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

        <email>zhoutianran@huawei.com</email>

        <uri/>
      </address>
    </author>

    <date day="30" month="August" year="2024"/>

    <abstract>
      <t>This document serves as a comprehensive guideline for SRv6 service
      benchmarking, outlining a core set of test cases that can be employed as
      a foundation for further benchmarking work.</t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>The Segment Routing over IPv6 (SRv6) Network Programming framework
      enables a network operator or an application to specify a packet
      processing program by encoding a sequence of instructions in the IPv6
      packet header.</t>

      <t>To ensure easier deployment and show the potential capability of
      SRv6, tests for SRv6 service is important, besides the existing work of
      SRv6 forwarding. This document serves as a comprehensive guideline for
      SRv6 service benchmarking, outlining a core set of test cases that can
      be employed as a foundation for further benchmarking work.</t>

      <t/>
    </section>

    <section title="Terminology">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in RFC 2119, RFC 8174.</t>
    </section>

    <section title="Test Case Guidance">
      <t/>

      <t><figure>
          <artwork><![CDATA[

Ingress Node    Endpoint   Egress Node
  +--+            +--+            +--+
  |PE|------------| P|------------|PE|
  +--+            +--+            +--+

]]></artwork>
        </figure></t>

      <t>Test Topology </t>

      <section title="Basic SRv6 E2E Service">
        <t/>

        <section title="SRv6 BE E2E Service">
          <t>Objective: Basic Function Test of SRv6 BE Tunnel</t>

          <t>Procedure:</t>

          <t>&#61599; Build the test network according to the topology with
          basic IGP/BGP configuration ready.</t>

          <t>&#61599; Deploy L3VPN over SRv6-BE tunnel, the tester generates
          traffic, and there is expected result 1.</t>

          <t>&#61599; Deploy EVPNv4 over SRv6-BE tunnel, the tester generates
          traffic, and there is expected result 2.</t>

          <t>&#61599; Deploy EVPNv6 over SRv6-BE tunnel, the tester generates
          traffic, and there is expected result 3.</t>

          <t>&#61599; Deploy EVPN VPWS over SRv6-BE tunnel, the tester
          generates traffic, and there is expected result 4.</t>

          <t>Expected Results:</t>

          <t>1. The device supports L3VPN over SRv6-BE tunnel, and the traffic
          is forwarded normally without packet loss.</t>

          <t>2. The device supports EVPNv4 over SRv6-BE tunnel, and the
          traffic is forwarded normally without packet loss.</t>

          <t>3. The device supports EVPNv6 over SRv6-BE tunnel, and the
          traffic is forwarded normally without packet loss.</t>

          <t>4. The device supports EVPN VPWS over SRv6-BE tunnel, and the
          traffic is forwarded normally without packet loss.</t>
        </section>

        <section title="Basic Function Test of SRv6 Policy Tunnel">
          <t>Objective: Basic Function Test of SRv6 Policy Tunnel</t>

          <t>Procedure:</t>

          <t>&#61599; Build the test network according to the diagram, and
          ensure that the basic IGP/BGP configuration is correct.</t>

          <t>&#61599; Deploy L3VPN over SRv6 Policy tunnel, generate traffic
          using the tester, and verify that the expected result 1 is
          achieved.</t>

          <t>&#61599; Deploy EVPNv4 over SRv6 Policy tunnel, generate traffic
          using the tester, and verify that the expected result 2 is
          achieved.</t>

          <t>&#61599; Deploy EVPNv6 over SRv6 Policy tunnel, generate traffic
          using the tester, and verify that the expected result 3 is
          achieved.</t>

          <t>&#61599; Deploy EVPN VPWS over SRv6 Policy tunnel, generate
          traffic using the tester, and verify that the expected result 4 is
          achieved.</t>

          <t>&#61599; Adjust the SRv6 Policy tunnel labels to implement tunnel
          selection, generate traffic using the tester, and verify that the
          expected result 5 is achieved.</t>

          <t>&#61599; Use BGP color to steer traffic to the SRv6 Policy tunnel
          and verify that the expected result 6 is achieved.</t>

          <t>&#61599; Use DSCP to steer traffic to the SRv6 Policy tunnel and
          verify that the expected result 7 is achieved.</t>

          <t>Expected Results:</t>

          <t>1. The device supports L3VPN over SRv6 Policy tunnel carrying
          capability, and the traffic is forwarded normally without packet
          loss.</t>

          <t>2. The device supports EVPNv4 over SRv6 Policy tunnel carrying
          capability, and the traffic is forwarded normally without packet
          loss.</t>

          <t>3. The device supports EVPNv6 over SRv6 Policy tunnel carrying
          capability, and the traffic is forwarded normally without packet
          loss.</t>

          <t>4. The device supports EVPN VPWS over SRv6 Policy tunnel carrying
          capability, and the traffic is forwarded without packet loss.</t>

          <t>5. The device supports the ability to adjust the path of SRv6
          Policy tunnels.</t>

          <t>6. The device supports BGP color-based traffic steering to SRv6
          Policy tunnels.</t>

          <t>7. The device supports DSCP-based traffic steering to SRv6 Policy
          tunnels.</t>
        </section>
      </section>

      <section title="SRv6 Compression E2E Service">
        <t>Objective: Verify whether the device supports SRv6 packet header
        compression</t>

        <t>Procedure:</t>

        <t>&#61599; Set up SRv6 Policy explicit path, the intermediate node is
        based on END/END.X forwarding. There are 5 hops in the SRv6 tunnel,
        and the tunnel is able to transport the stream from the tester with
        the expected result 1;</t>

        <t>&#61599; Set up SRv6 Policy explicit path with compression; There
        are 5 hops in the SRv6 tunnel, and the tunnel is able to transport the
        stream from the tester with the expected result 2;</t>

        <t>&#61599; Capture packets at the intermediate node, with expected
        result 3;</t>

        <t>Expected Results:</t>

        <t>1. traffic is forwarded normally; Record the percentage of SRH
        overhead in the overall packet;</t>

        <t>2. traffic is forwarded normally, SRH packet header overhead is
        reduced; Record the percentage of SRH overhead in the overall
        packet;</t>

        <t>3. Capture the packet at intermediate nodes, and the SRv6
        compression packet header is as expected which is the same as
        draft-ietf-spring-srv6-srh-compression;</t>
      </section>

      <section title="EVPN L2/L3VPN over SRv6">
        <t/>

        <section title="EVPN VPWS over SRv6">
          <t>Objective: Verify that in the CPE supports SRv6 scenarios,
          private line services (EVPN VPWS over SRv6) could be carried by
          SRv6-BE tunnels and SRv6 policy tunnels.</t>

          <t>Procedure:</t>

          <t>&#61599; Set up the test network, configure SRv6 BEs on CPE1 and
          CPE2, and if the intermediate traversing devices are existing IPv6
          devices, carry out dual-stack deployment to pass the locator and
          loopback routes of CPE1 and CPE2, and establish BGP EVPN peers
          directly on CPE1 and CPE2. 2;</t>

          <t>&#61599; create EVPN VPWS instances on CPE1 and CPE2
          respectively. in the VPN instance view of BGP. enable SRv6
          forwarding to draw services into SRv6; &#61599;</t>

          <t>connect a tester between CPE1 and CPE2, configure the IP address,
          and send bidirectional test traffic. There are expected results 1.
          use the meter to test delay, delay jitter, and packet loss rate.
          There are expected results 2;</t>

          <t>&#61599; the intermediate device supports SRv6, establishes BGP
          neighbors through ASG/RR reflection, establishes an end-to-end EVPN
          VPWS over SRv6-BE tunnel, and the tester hits the flow with expected
          result 1. Tests the latency, latency jitter, and packet loss rate
          with the meter. There are expected results 2;</t>

          <t>&#61599; with controller scenario, establish end-to-end EVPN VPWS
          over SRv6-Policy tunnel by issuing SRv6-Policy tunnel through the
          controller or manually specifying the display path method, the
          tester hits the flow with expected result 1, test the delay, delay
          jitter and packet loss rate with meter. There are expected results
          2;</t>

          <t>Expected Results:</t>

          <t>1. traffic is forwarded normally; Record the percentage of SRH
          overhead in the overall packet;</t>

          <t>2. traffic is forwarded normally, SRH packet header overhead is
          reduced; Record the percentage of SRH overhead in the overall
          packet;</t>

          <t>3. Capture the packet at intermediate nodes, and the SRv6
          compression packet header is as expected which is the same as
          draft-ietf-spring-srv6-srh-compression;</t>
        </section>

        <section title="EVPN L3VPN over SRv6">
          <t>TBD</t>
        </section>
      </section>

      <section title="SRv6 OAM">
        <t>Objective: Verify that the device supports OAM technologies such as
        SRv6 PING/TRACE</t>

        <t>Procedure:</t>

        <t>&#61599; build the test network according to the figure to ensure
        that the configured services are all in normal state.</t>

        <t>&#61599; Test tunnel SRv6 SID Ping/Trace with expected result 1.
        3;</t>

        <t>&#61599; Test VPN SID Ping/Trace with expected result 2;</t>

        <t>&#61599; SRv6 L3VPN scenario, test TWAMP for L3-service, with
        expected result 3;</t>

        <t>&#61599; SRv6 EVPN VPWS scenario, testing Y.1731 for L2-service
        with expected result 4;</t>

        <t>Expected Results:</t>

        <t>1. The device supports SRv6 SID tunnel level Ping/Trace;</t>

        <t>2. The device supports SRv6 VPN level Ping/Trace;</t>

        <t>3. The device supports TWAMP for L3-service. 4;</t>

        <t>4. The device supports Y.1731 for L2-service.</t>

        <section title="Y.1731 for SRv6 L2-service">
          <t>Objective: To test the delay and packet loss statistics of Y.1731
          under EVPN L2VPN.</t>

          <t>Procedure:</t>

          <t>&#61599; Establish the EVPN VPWS over SRv6 service</t>

          <t>&#61599; Enable the Y.1731 function. At the same time, enable
          single-ended synthetic packet loss and double-ended delay
          statistics</t>

          <t>&#61599; The meter sends service traffic and records delay</t>

          <t>&#61599; Query the Y.1731 delay statistics and get the expected
          result 1</t>

          <t>&#61599; Shutdown / no shutdown link, simulate packet loss</t>

          <t>&#61599; Query the Y.1731 delay statistics and get the expected
          result 2</t>

          <t>Expected Results:</t>

          <t>1. The query Y.1731 delay statistics result on the device is
          basically the same as the delay result shown on the meter.</t>

          <t>2. The query Y.1731 packet loss on the device is basically
          consistent with the packet loss statistics shown on the meter.</t>
        </section>

        <section title="SRv6 SID Ping">
          <t>Objective: Verify that tunnel connectivity can be detected by
          SRv6 SID Ping.</t>

          <t>Procedure:</t>

          <t>&#61599; Initiate the SRv6 SID ping test from from network device
          1 to network device 2, and get test result 1.</t>

          <t>Expected Results:</t>

          <t>1. The query Y.1731 delay statistics result on the device is
          basically the same as the delay result shown on the meter.</t>

          <t>2. The query Y.1731 packet loss on the device is basically
          consistent with the packet loss statistics shown on the meter.</t>
        </section>

        <section title="SRv6 SID Tracert">
          <t>Objective: Verify that tunnel connectivity can be detected via
          SRv6 SID Tracert.</t>

          <t>Procedure:</t>

          <t>&#61599; Initiate the SRv6 SID Tracert test from network device 1
          to network device 2, and get test result 1</t>

          <t>Expected Results:</t>

          <t>1. the SRv6 SID Tracert returns the result that every node is
          through</t>
        </section>
      </section>

      <section title="SRv6 Reliability">
        <t/>

        <section title="SRv6 BE Reliablity">
          <t>Objective: Test the protection capabilities in SRv6-BE
          scenarios.</t>

          <t>Procedure:</t>

          <t>&#61599; SRv6-BE scenario, detection and protection techniques in
          case of link failure, with expected result 1;</t>

          <t>&#61599; The tester sends the flow in the link failure scenario,
          test the packet loss time, with expected result 2;</t>

          <t>&#61599; PE node failure happens, with the detection and
          protection techniques, with expected result 3;</t>

          <t>&#61599; The tester sends the flow in the node failure scenario,
          test packet loss time, with expected result 4;</t>

          <t>Expected Results:</t>

          <t>1. The network device support BFD for IGP detection, support
          Ti-LFA protection inversion;</t>

          <t>2. The time of BFD detection is 10ms*3, and the equipment packet
          loss time is less than 50ms;</t>

          <t>3. The device supports BFD for locator detection and VPN FRR;</t>

          <t>4. The time of BFD detection is 10ms*3, device packet loss time
          is less than 200ms;</t>
        </section>

        <section title="SRv6 Policy Reliablity">
          <t>Objective: Test the protection capabilities in SRv6 Policy
          scenarios.</t>

          <t>Procedure:</t>

          <t>&#61599; SRv6 Policy scenario, detection and protection
          techniques in case of link failure, with expected result 1;</t>

          <t>&#61599; The tester sends the flow in the link failure scenario,
          test the packet loss time, with expected result 2;</t>

          <t>&#61599; PE node failure happens, with the detection and
          protection techniques, with expected result 3;</t>

          <t>&#61599; The tester sends the flow in the node failure scenario,
          test packet loss time, with expected result 4;</t>

          <t>Expected Results:</t>

          <t>1. The network device support SBFD for SRv6-list detection,
          support HSB protection switch over;</t>

          <t>2. The time of BFD detection is 10ms*3, and the equipment packet
          loss time is less than 50ms;</t>

          <t>3. The device supports SBFD for primary and backup SRv6-list
          detection and VPN FRR;</t>

          <t>4. The time of BFD detection is 10ms*3, device packet loss time
          is less than 200ms;</t>
        </section>
      </section>

      <section title="SRv6 Service Performance">
        <t/>

        <section title="SRv6 SRH Layer Number">
          <t>Objective: Test the number of SRv6 Policy tunnel SRH label layers
          supported by the device Procedure:</t>

          <t>&#61599; SRv6 Policy tunnels should be configured on the device
          under test and the auxiliary device, so that the traffic is relayed
          repeatedly between the device under test and the auxiliary device,
          and all of them use END.X neighbor tag forwarding;</t>

          <t>&#61599; The tester sends the flow with the expected result
          1;</t>

          <t>&#61599; capture packets on the outgoing interface of the device
          under test, with expected result 2;</t>

          <t>Expected Results:</t>

          <t>1. Stable traffic with no packet loss for SRv6 Policy tunnel with
          multilayer SRH labels;</t>

          <t>2. Packet capture at the outgoing interface of the device under
          test, which can capture packets with different label layers, and
          record the number of SRH label layers supported by each
          manufacturer;</t>
        </section>

        <section title="SRv6 Forwarding Performance">
          <t>Objective: Verify the SRv6 packet forwarding performance of the
          device</t>

          <t>Procedure:</t>

          <t>&#61599; Test the forwarding performance of the L3VPN service
          under the SRv6-BE scenario in the 256/512/1024 bit byte traffic
          scenario with the expected result 1;</t>

          <t>&#61599; Test the forwarding performance of the EVPNv4 service
          under the SRv6-BE scenario under the 256/512/1024bit byte traffic
          scenario with expected result 1;</t>

          <t>&#61599; Testing the forwarding performance of EVPNv6 services
          under SRv6-BE scenario with 256/512/1024bit byte traffic scenarios
          with expected result 1;</t>

          <t>&#61599; Test the forwarding performance of EVPN VPWS services
          under SRv6-BE scenario with 256/512/1024bit byte traffic scenario
          with expected result 1;</t>

          <t>&#61599; Test the forwarding performance of L3VPN services under
          SRv6 Policy scenario (Layer 3 labeling) with 256/512/1024bit byte
          traffic scenario with expected result 1;</t>

          <t>&#61599; Test the forwarding performance of EVPNv4 service under
          SRv6 Policy scenario (Layer 3 labeling) with expected result 1 under
          256/512/1024bit byte traffic scenario;</t>

          <t>&#61599; Test the forwarding performance of EVPNv6 services under
          SRv6 Policy scenario (Layer 3 labeling) with expected result 1 under
          256/512/1024bit byte traffic scenario;</t>

          <t>&#61599; Test the forwarding performance of EVPN VPWS services
          under SRv6 Policy scenario (Layer 3 labeling) with 256/512/1024bit
          byte traffic scenario with expected result 1;</t>

          <t>Expected Results:</t>

          <t>1. Record the forwarding performance of each vendor's device as a
          percentage of performance for each service scenario;</t>
        </section>

        <section title="SRv6 Tunnel Number">
          <t>Objective: Test the number of SRv6 Policy tunnels supported by
          the device</t>

          <t>Procedure:</t>

          <t>&#61599; Test the forwarding performance of the L3VPN service
          under the SRv6-BE scenario in the 256/512/10</t>

          <t>&#61599; The tester advertises N routes to the system under test
          and establishes the corresponding SRv6 Policy tunnels based on each
          route (through the controller or scripts), with each SRv6 Policy
          labeled at Layer 3;</t>

          <t>&#61599; The tester sends the stream with Desired Result 1;</t>

          <t>Expected Results:</t>

          <t>1. Each SRv6 Policy tunnel carries normal service traffic. Record
          the number of SRv6 Policy tunnels supported by each manufacturer's
          device;</t>
        </section>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document makes no request of IANA.</t>

      <t>Note to RFC Editor: this section may be removed on publication as an
      RFC.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t/>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t/>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"
?>

      <?rfc include="reference.RFC.8174"
?>

      <?rfc include="reference.RFC.8402"?>

      <?rfc ?>

      <?rfc include="reference.RFC.8986"?>
    </references>
  </back>
</rfc>
