Skip to content

Bridged Overlay Network#

In this exercise we configure a bridged overlay network using EVPN. The same principle apply here. The default network config is used to simplify the configuration for the end user as much as possible.

Bridged Network
apiVersion: network.app.kuid.dev/v1alpha1
kind: Network
metadata:
  name: topo3nodesrl.vpc1
spec:
  topology: topo3nodesrl
  bridgeDomains:
  - name: br10
    networkID: 10
    interfaces:
    - endpoint: e1-1
      node: edge01
      region: region1
      site: site1
    - endpoint: e1-1
      node: edge02
      region: region1
      site: site1

Execute the following command to instantiate the bridged network

kubenetctl networkbridged
Configue a bridged EVPN overlay network
=======================================
# apply the default network config [1/1]:

> kubectl apply -f https://raw.githubusercontent.com/kubenet-dev/kubenet/v0.0.1/network/vpc1-bridged-network.yaml
network.network.app.kuid.dev/topo3nodesrl.vpc1 created

An abstract data model is derived per device for this confiuration, which is translated to the specific implementation of srlinux and finally transacted to the device. Important to note that only edge01 and edge02 got a new configuration, since these devices are only used for this specific configuration. The topology information is used to determine this.

The abstracted device models per device can be viewed with this command

kubectl get networkdevices.network.app.kuid.dev
NAME                          READY   PROVIDER
topo3nodesrl.default.core01   True    srlinux.nokia.com
topo3nodesrl.default.edge01   True    srlinux.nokia.com
topo3nodesrl.default.edge02   True    srlinux.nokia.com
topo3nodesrl.vpc1.edge01      True    srlinux.nokia.com
topo3nodesrl.vpc1.edge02      True    srlinux.nokia.com

through the -o yaml option in kubectl you get the detailed view of the config in yaml format; -o json provide the json based output

example command for the abstracted config of the edge01 device

kubectl get networkdevices.network.app.kuid.dev topo3nodesrl.vpc1.edge01 -o yaml

The final device specific srlinux configuration send to the device can be seen through this command.

kubectl get configs.config.sdcio.dev 
NAME                          READY   REASON   TARGET           SCHEMA
topo3nodesrl.default.core01   True    ready    default/core01   srl.nokia.sdcio.dev/24.3.2
topo3nodesrl.default.edge01   True    ready    default/edge01   srl.nokia.sdcio.dev/24.3.2
topo3nodesrl.default.edge02   True    ready    default/edge02   srl.nokia.sdcio.dev/24.3.2
topo3nodesrl.vpc1.edge01      True    ready    default/edge01   srl.nokia.sdcio.dev/24.3.2
topo3nodesrl.vpc1.edge02      True    ready    default/edge02   srl.nokia.sdcio.dev/24.3.2

through the -o yaml option in kubectl you get the detailed view of the config in yaml format; -o json provide the json based output

example command for the detailed srlinux config of the edge01 device

kubectl get configs.config.sdcio.dev  topo3nodesrl.vpc1.edge01 -o yaml

Let's check if this final ended up on the devices.

docker exec clab-topo3nodesrl-edge01 sr_cli -- show network-instance summary

Expected output

+------------------------------+----------------+----------------+----------------+------------------------------+--------------------------------------+
|             Name             |      Type      |  Admin state   |   Oper state   |          Router id           |             Description              |
+==============================+================+================+================+==============================+======================================+
| default                      | default        | enable         | up             |                              | k8s-default                          |
| mgmt                         | ip-vrf         | enable         | up             |                              | Management network instance          |
| vpc1.br10                    | mac-vrf        | enable         | up             | N/A                          | k8s-vpc1.br10                        |
+------------------------------+----------------+----------------+----------------+------------------------------+--------------------------------------+
docker exec clab-topo3nodesrl-edge02 sr_cli -- show network-instance summary

Expected output

+------------------------------+----------------+----------------+----------------+------------------------------+--------------------------------------+
|             Name             |      Type      |  Admin state   |   Oper state   |          Router id           |             Description              |
+==============================+================+================+================+==============================+======================================+
| default                      | default        | enable         | up             |                              | k8s-default                          |
| mgmt                         | ip-vrf         | enable         | up             |                              | Management network instance          |
| vpc1.br10                    | mac-vrf        | enable         | up             | N/A                          | k8s-vpc1.br10                        |
+------------------------------+----------------+----------------+----------------+------------------------------+--------------------------------------+

--{ + running }--[  ]--

You can also see the resulting configuration using kubectl using the following command.

kubectl get runningconfigs.config.sdcio.dev edge01 -o yaml
kubectl get runningconfigs.config.sdcio.dev edge02 -o yaml

Nice !!