Skip to content

large_ip_packet_transmission

Github Action edited this page Sep 4, 2024 · 3 revisions

MTU-1.3: Large IP Packet Transmission

Summary

Test that ports with sufficiently high MTU do not fragment any packets when flows of various size IPv4 and IPv6 packet sizes are sent over them.

Procedure

  • Test environment setup

    • Configure DUT with routed input and output interfaces with an Ethernet MTU of 9216.
    • Test should be executed with two different interface/connectivity profiles:
      1. Standalone -- one input and one output port
      2. Bundle with four input members and four output members

    An example OpenConfig configuration pushed to the DUT

     openconfig-interfaces:
      - interface:
        name: 'tunnel1_if_name'
        config:
          name: 'tunnel1_if_name'
          tunnel:     # configures the tunnel parameters 
            config:
             src: 'tunnel1_outer_ip_src'
             dst: 'tunnel1_outer_ip_dst'
             ttl: 'tunnel1_outer_ttl'
             gre-key: 'tunnel1_outer_gre_key'
            ipv4:
              config:
                mtu: 'tunnel1_inner_mtu'
              addresses:
                - address:
                  config:
                    ip: 'tunnel1_interface_ipv4'     # For tunnel decap destination and/or route next-hop
                    prefix-length: 'tunnel1_interface_ipv4_prefixlen'
            ipv6:
              config:
                mtu: 'tunnel1_inner_mtu'
              addresses:
                - address:
                    config:
                      ip: 'tunnel1_interface_ipv6'     # For tunnel decap destination and/or route next-hop
                      prefix-length: 'tunnel1_interface_ipv6_prefixlen'
     
    
  • MTU-1.3.1: Test with Physical and Bundle interfaces

    • Run traffic flows of the following size over IPv4 and IPv6 between ATE ports.
      • 1500 Bytes
      • 2000 Bytes
      • 4000 Bytes
      • 9202 Bytes
    • Assert ATE reports packets sent and received count are the same, indicating no fragmentation, and successful transit.
  • MTU-1.3.2: Test w/ tunnel interfaces and forwarding plane via the physical and bundled interfaces [TODO: https://github.com/openconfig/featureprofiles/issues/3411]

    • Configure DUT with a GRE tunnel interface.
      • Tunnel interface uses /32 tunnel destination and loopback interface as the source of the tunnel.
      • Ensure MTU configured on this tunnel interface is in context to the MTU on the egress physical/bundle interface. It is acceptable if the implementation doesn't support explicit MTU config on tunnel interfaces. Idea is for the tunnel interface to respect the egress physical/bundle interface MTU config.
    • Configure a static route for the tunnel end point destination pointing at an exit interface.
    • Pick 2 different /24 IPv4 and /64 IPv6 subnets each to emulate destination of payload traffic to be tunneled. Note: This is for the destination prefixes of the flows generated by ATE:Port1.
      • Ensure you have static routes in place for the inner header destination to point at the exit interface (Physical/Bundle)
    • Run traffic flows of the following size over IPv4 and IPv6. For each scenario, the MTU configured on the physical/bundle interfaces plus the tunnel interface must be the same.
      • 1500 Bytes
      • 2000 Bytes
      • 4000 Bytes
      • 9202 Bytes
      • 9202 Bytes
    • Assert ATE reports packets sent and received count are the same, indicating no fragmentation, and successful transit.
    • Run the above for GUE tunnel interface

OpenConfig Path and RPC Coverage

The below yaml defines the OC paths intended to be covered by this test. OC paths used for test setup are not listed here.

paths:
  # Config Paths
  /interfaces/interface/config/mtu:
  /interfaces/interface/subinterfaces/subinterface/ipv4/config/mtu:
  /interfaces/interface/subinterfaces/subinterface/ipv6/config/mtu:
  # TODO: OpenConfig definition required for Tunnel protocol under interfaces/interfaces/interface/tunnel/ as GRE, IP-IP, GUE etc. 
  /interfaces/interface/tunnel/config/dst:
  /interfaces/interface/tunnel/config/src:
  /interfaces/interface/tunnel/ipv4/addresses/address/config/ip:
  /interfaces/interface/tunnel/ipv4/addresses/address/config/prefix-length:
  /interfaces/interface/tunnel/ipv6/addresses/address/config/ip:
  /interfaces/interface/tunnel/ipv6/addresses/address/config/prefix-length:
  # State Paths
  /interfaces/interface/state/counters/in-pkts:
  /interfaces/interface/state/counters/in-octets:
  /interfaces/interface/state/counters/out-pkts:
  /interfaces/interface/state/counters/out-octets:
  /interfaces/interface/state/counters/in-errors:
  /interfaces/interface/state/counters/in-unicast-pkts:
  /interfaces/interface/state/counters/in-discards:
  /interfaces/interface/state/counters/out-errors:
  /interfaces/interface/state/counters/out-unicast-pkts:
  /interfaces/interface/state/counters/out-discards:
  /interfaces/interface/tunnel/ipv4/state/counters/in-pkts:
  /interfaces/interface/tunnel/ipv4/state/counters/in-octets:
  /interfaces/interface/tunnel/ipv4/state/counters/out-pkts:
  /interfaces/interface/tunnel/ipv4/state/counters/out-octets:
  /interfaces/interface/tunnel/ipv4/state/counters/in-error-pkts:
  /interfaces/interface/tunnel/ipv4/state/counters/in-forwarded-pkts:
  /interfaces/interface/tunnel/ipv4/state/counters/in-forwarded-octets:
  /interfaces/interface/tunnel/ipv4/state/counters/in-discarded-pkts:
  /interfaces/interface/tunnel/ipv4/state/counters/out-error-pkts:
  /interfaces/interface/tunnel/ipv4/state/counters/out-forwarded-pkts:
  /interfaces/interface/tunnel/ipv4/state/counters/out-forwarded-octets:
  /interfaces/interface/tunnel/ipv4/state/counters/out-discarded-pkts:
  /interfaces/interface/tunnel/ipv6/state/counters/in-pkts:
  /interfaces/interface/tunnel/ipv6/state/counters/in-octets:
  /interfaces/interface/tunnel/ipv6/state/counters/out-pkts:
  /interfaces/interface/tunnel/ipv6/state/counters/out-octets:
  /interfaces/interface/tunnel/ipv6/state/counters/in-error-pkts:
  /interfaces/interface/tunnel/ipv6/state/counters/in-forwarded-pkts:
  /interfaces/interface/tunnel/ipv6/state/counters/in-forwarded-octets:
  /interfaces/interface/tunnel/ipv6/state/counters/in-discarded-pkts:
  /interfaces/interface/tunnel/ipv6/state/counters/out-error-pkts:
  /interfaces/interface/tunnel/ipv6/state/counters/out-forwarded-pkts:
  /interfaces/interface/tunnel/ipv6/state/counters/out-forwarded-octets:
  /interfaces/interface/tunnel/ipv6/state/counters/out-discarded-pkts:

rpcs:
  gnmi:
    gNMI.Set:

Minimum DUT platform requirement

N/A

Clone this wiki locally