GeneveOvsTunnelRecipe

class lnst.Recipes.ENRT.GeneveOvsTunnelRecipe.GeneveOvsTunnelRecipe(**kwargs)

Bases: PauseFramesHWConfigMixin, OffloadSubConfigMixin, BaseTunnelRecipe

This class implements a recipe that configures a simple Geneve tunnel using OpenVSwitch between two hosts.

                   .--------.
        .----------| switch |-------.
        |          '--------'       |
        |                           |
.-------|----------.        .-------|----------.
|    .--'-.        |        |    .--'-.        |
|    |eth0|        |        |    |eth0|        |
|    '----'        |        |    '----'        |
| .----| |-------. |        | .----| |-------. |
| |    | |   OvS | |        | |    | |   OvS | |
| |    | |       | |        | |    | |       | |
| | ---' '---    | |        | | ---' '---    | |
| | gnv tunnel   | |        | | gnv tunnel   | |
| | ----------   | |        | | ----------   | |
| '--------------' |        | '--------------' |
|                  |        |                  |
|      host1       |        |       host2      |
'------------------'        '------------------'

The actual test machinery is implemented in the BaseEnrtRecipe class.

The test wide configuration is implemented in the BaseTunnelRecipe class.

configure_underlying_network(config: EnrtConfiguration) tuple[RemoteDevice, RemoteDevice]

The underlying network for the tunnel consists of the Ethernet devices on the matched hosts.

create_tunnel(config: EnrtConfiguration, tunnel_endpoints: tuple[RemoteDevice, RemoteDevice]) tuple[RemoteDevice, RemoteDevice]

OvS bridges are created on each of the matched hosts with two ports. One port as an integration port and another port of type Geneve acting as a tunnel interface connecting tunneled networks.

Integration ports are configured with IPv4 and IPv6 addresses of the tunneled networks.

generate_ping_endpoints(config)

The ping endpoints for this recipe are simply the tunnel endpoints

Returned as:

[PingEndpoints(self.matched.host1.int0, self.matched.host2.int0)]
get_packet_assert_config(ping_config)

The packet assert test configuration contains filter for ip protocol and grep patterns to match the ICMP or ICMP6 echo requests.