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.
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
SPEC
RouterInterconnectSpec allows to configure a RouterInterconnect instance.
-
BGP Service Instance parameters for the Interconnect.
-
Control plane protocol used for the service instance.
enum: "EVPN", "IPVPN" -
D-PATH Domain ID used for the service instance.
-
Encapsulation type used for the service instance.
enum: "VXLAN", "MPLS" -
Optional for IPVPN (can be used to auto-derive RTs), required for EVPN control plane on SRLinux.
format: int64 -
Reference to a Policy CR that will be used to export routes.
-
Export route target in 'target:N:N' format. One of ExportTarget or ExportPolicy must be specified.
-
Reference to a Policy CR that will be used to import routes.
-
Import route target in 'target:N:N' format. One of ImportTarget or ImportPolicy must be specified.
-
Route Distinguisher for the service instance.
-
Assigned number part of the route distinguisher, if configured manually (alternatively can be allocated from a pool using the RDPool field).
-
Reference to a pool to use for the Assigned Number allocation.
-
Route distinguisher type. Defaults to the NOS-generated RD if not specified.
enum: "Type 0", "Type 1", "Type 2"
-
-
-
Label selector to select nodes on which to configure the RouterInterconnect.
-
List of nodes (gateways) on which to configure the RouterInterconnect.
STATUS
RouterInterconnectStatus defines the observed state of RouterInterconnect
-
Indicates the health score of the RouterInterconnect.
format: int32range: <= 100 -
Explains the reason for the health score.
-
Timestamp of the last state change.
-
List of nodes on which the RouterInterconnect is deployed.
-
Operational state of the RouterInterconnect.
enum: "Up", "Down", "Degraded", "Unknown"
