Skip to content

Router Interconnect#

Virtual Networks → RIRouter Interconnects

Virtualized services like BridgeDomains for layer-2 connectivity and Routers for layer-3 connectivity can be distributed using EVPN, allowing hosts connected to different (sets of) network switches to communicate with each other as if they were in the same location.

For scaling reasons, it may be required to divide the network into multiple EVPN domains, which are "stitched" together at the edges, via a datacenter interconnect domain. That's where the RouterInterconnect resource comes in, which makes the Router available to multiple EVPN domains.

These domains may even use different transport tunnel protocols: for example, VxLAN in the first datacenter, MPLS in the WAN, and then VxLAN again in the second datacenter.

Note

The RouterInterconnect is connected to a single Router resource. Multiple Routers cannot be stitched together with the RouterInterconnect resource.

Router interconnect diagram

VxLAN to VxLAN stitching#

When stitching an EVPN VxLAN domain to another - different - EVPN VxLAN domain, it is important that the interconnect Router uses a different VNI than the service that is being stretched over multiple datacenters, as choosing the same VNI could potentially lead to routing loops.

VxLAN to MPLS stitching#

Service traffic transported over VxLAN tunnels is encapsulated in an IP packet, which makes IP connectivity between the service endpoints the only requirement (alongside the ability to encapsulate and decapsulate the packets).

For MPLS transport tunnels, labels need to be exchanged between service endpoints (and all switches in between) as packets are label-switched instead of IP-routed. Check out the MPLS app for more details.

Dependencies#

TopoNode#

To identify which nodes in the network will serve as stitching points (usually the datacenter gateways), the RouterInterconnect resource must select a set of nodes.

Nodes can be selected explicitly via the nodes property, or through label assignment via the nodeSelectors property.

Router#

The RouterInterconnect resource allows a Router to be distributed across multiple EVPN domains. The Router resource must exist before the RouterInterconnect resource can be created.

Referenced resources#

Policy#

As an alternative to import and export route targets, dedicated routing policies may be used to determine which routes are exchanged to and from the datacenter interconnect domain.

IndexAllocationPool#

On some operating systems, the VxLAN tunnel interface is configured as a subinterface of a VxLAN interface. This subinterface requires an ID that is unique on the node (locally significant only).

If the interconnect BGP instance is using VxLAN transport tunnels, the vxlan.tunnelIndexPool property must be specified.

Examples#

apiVersion: services.eda.nokia.com/v2
kind: RouterInterconnect
metadata:
  name: stretched-l3-interconnect
  namespace: services
spec:
  interconnectBGPInstance:
    controlPlane: EVPN
    encapsulation: VXLAN
    exportTarget: target:333:1
    importTarget: target:333:1
    routeDistinguisher:
      assignedNumber: '65000'
      type: Type 1
    vxlan:
      tunnelIndexPool: tunnel-index-pool
      vni: 333
  nodeSelectors:
    - eda.nokia.com/role = dcgw
  routerRef:
    name: stretched-l3
cat << 'EOF' | kubectl apply -f -
apiVersion: services.eda.nokia.com/v2
kind: RouterInterconnect
metadata:
  name: stretched-l3-interconnect
  namespace: services
spec:
  interconnectBGPInstance:
    controlPlane: EVPN
    encapsulation: VXLAN
    exportTarget: target:333:1
    importTarget: target:333:1
    routeDistinguisher:
      assignedNumber: '65000'
      type: Type 1
    vxlan:
      tunnelIndexPool: tunnel-index-pool
      vni: 333
  nodeSelectors:
    - eda.nokia.com/role = dcgw
  routerRef:
    name: stretched-l3
EOF

Custom Resource Definition#

To browse the Custom Resource Definition go to crd.eda.dev.

RouterInterconnect

services.eda.nokia.com / v2

SPEC

RouterInterconnectSpec allows to configure a RouterInterconnect instance.

  • #
  • #
  • #
  • #
  • #

STATUS

RouterInterconnectStatus defines the observed state of RouterInterconnect

  • #
  • #
  • #
  • #
  • #