Skip to content

Commit

Permalink
Update to the MTU test readme to cover for Tunnel interfaces. (openco…
Browse files Browse the repository at this point in the history
…nfig#3401)

* Update to the MTU test readme to cover for Tunnel interfaces.

- Separate the test to 2 sub tests
- While the original test covered MTU configuration on physical/Bundle  interfaces only, added subtest covers for Tunnel interface MTU configuration and corresponding emphasis on zero fragmentation plus packet drops.

Updated write-up also covers for missed config and state paths.

* Update README.md

Added additional clarity on the tunnel interface MTU config  that it isn't mandatory for the NOS to allow for MTU config on tunnel interfaces. Expectation is for the tunnel interface to respect the MTU configured on the underlying physical or bundle interface acting as an egress point.

* Update README.md

updated the following bullet for MTU-1.3.2

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.

* Update README.md

* Update README.md

Corrected Yaml error

* Update README.md

* Update README.md

* Update README.md

Updated paths that were incorrectly defined.

* Update README.md

Corrected the OC path   /interfaces/interface/tunnel/config/dst: 

It was originally   /interfaces/interface/tunnel/config/dest:

* Adding canonical OC to config path

Changing the config to the approach suggested in openconfig#3336

* Update README.md

Trying to correct the error

Run go install ./tools/validate_readme_spec
########## READMEs in changed directories to be validated (including ones to be exempted):
feature/mtu/largeippacket/otg_tests/large_ip_packet_transmission/README.md
########## Validating READMEs in changed directories:
I0830 17:54:13.842665    4350 validate_readme_spec.go:149] Validating "feature/mtu/largeippacket/otg_tests/large_ip_packet_transmission/README.md"
E0830 17:54:13.843301    4350 validate_readme_spec.go:156] file feature/mtu/largeippacket/otg_tests/large_ip_packet_transmission/README.md: mdocspec: error parsing YAML: yaml: unmarshal errors:
  line 4: cannot unmarshal !!seq into map[string]interface {}
F0830 17:54:13.843594    4350 validate_readme_spec.go:178] The following files have errors:
feature/mtu/largeippacket/otg_tests/large_ip_packet_transmission/README.md
Error: Process completed with exit code 1.

* Update README.md

* Update README.md

Moved the canonical config to the Test procedure area. Also, restored the section under ## OpenConfig Path and RPC Coverage to how it was before.
  • Loading branch information
sachendras authored Sep 4, 2024
1 parent 74155f6 commit d139a69
Showing 1 changed file with 104 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,123 @@ IPv4 and IPv6 packet sizes are sent over them.

## Procedure

* Configure DUT with routed input and output interfaces with an Ethernet MTU of 9216.
* 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
* 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.

An example OpenConfig configuration pushed to the DUT

```yaml

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.

```yaml
paths:
## Config Paths ##
# Config Paths
/interfaces/interface/config/mtu:
/interfaces/interface/subinterfaces/subinterface/ipv4/config/mtu:
/interfaces/interface/subinterfaces/subinterface/ipv6/config/mtu:

## State Paths ##
# No coverage, validates success by checking flow statistics between ATE ports.
# 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:
Expand Down

0 comments on commit d139a69

Please sign in to comment.