Bridge Domain Interconnect#
Virtual Networks → BDBridge Domain 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 BridgeDomainInterconnect resource comes in, which makes the BridgeDomain 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 BridgeDomainInterconnect is connected to a single BridgeDomain resource. Multiple BridgeDomains cannot be stitched together with the BridgeDomainInterconnect resource.
VxLAN to VxLAN stitching#
When stitching an EVPN VxLAN domain to another - different - EVPN VxLAN domain, it is important that the BridgeDomainInterconnect 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 BridgeDomainInterconnect resource must select a set of nodes.
Nodes can be selected explicitly via the nodes property, or through label assignment via the nodeSelectors property.
BridgeDomain#
The BridgeDomainInterconnect resource allows a BridgeDomain to be distributed across multiple EVPN domains. The BridgeDomain resource must exist before the BridgeDomainInterconnect 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: BridgeDomainInterconnect
metadata:
name: stretched-l2-interconnect
namespace: services
spec:
bridgeDomainRef:
name: stretched-l2
interconnectBGPInstance:
controlPlane: EVPN
encapsulation: VXLAN
exportTarget: target:230:230
importTarget: target:230:230
vxlan:
tunnelIndexPool: tunnel-index-pool
vni: 222
mpls: {}
nodeSelectors:
- eda.nokia.com/role = dcgw
cat << 'EOF' | kubectl apply -f -
apiVersion: services.eda.nokia.com/v2
kind: BridgeDomainInterconnect
metadata:
name: stretched-l2-interconnect
namespace: services
spec:
bridgeDomainRef:
name: stretched-l2
interconnectBGPInstance:
controlPlane: EVPN
encapsulation: VXLAN
exportTarget: target:230:230
importTarget: target:230:230
vxlan:
tunnelIndexPool: tunnel-index-pool
vni: 222
mpls: {}
nodeSelectors:
- eda.nokia.com/role = dcgw
EOF
Custom Resource Definition#
To browse the Custom Resource Definition go to crd.eda.dev.
BridgeDomainInterconnect
SPEC
BridgeDomainInterconnectSpec defines the desired state of BridgeDomainInterconnect
-
BGP Service Instance parameters for the Interconnect.
-
Control plane protocol used for the service instance.
default: "EVPN"enum: "EVPN" -
Encapsulation type used for the service instance.
enum: "VXLAN", "MPLS" -
Required for EVPN control plane on SRLinux. Can also be used to auto-derive RDs.
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 Interconnect service instance. Required when redundant DCGWs are used.
-
Administrator part of the route distinguisher. Use a 4-byte dotted quad notation (e.g. 1.2.3.4), or `Auto` keyword to use a system IP.
default: "Auto" -
Assigned number part of the route distinguisher. Use a 2-byte integer (e.g. 12345), or `Auto` to use the corresponding EVI or pool (if specified in the assignedNumberPool).
default: "Auto" -
Reference to a pool to use for the Assigned Number allocation. Takes precedence over assignedNumber.
-
-
-
Label selector to select nodes on which to configure the BridgeDomainInterconnect.
-
List of nodes (gateways) on which to configure the BridgeDomainInterconnect.
-
Additional BGP Service Instance parameters related to the primary BGP service Instance. Required when redundant DCGWs are used.
-
Route Distinguisher for the service instance. Required when redundant DCGWs are used.
-
Administrator part of the route distinguisher. Use a 4-byte dotted quad notation (e.g. 1.2.3.4), or `Auto` keyword to use a system IP.
default: "Auto" -
Assigned number part of the route distinguisher. Use a 2-byte integer (e.g. 12345), or `Auto` to use the corresponding EVI or pool (if specified in the assignedNumberPool).
default: "Auto" -
Reference to a pool to use for the Assigned Number allocation. Takes precedence over assignedNumber.
-
-
STATUS
BridgeDomainInterconnectStatus defines the observed state of BridgeDomainInterconnect
-
Indicates the health score of the BridgeDomainInterconnect.
format: int32range: <= 100 -
Explains the reason for the health score.
-
Timestamp of the last state change.
-
List of nodes on which the BridgeDomainInterconnect is deployed.
-
Operational state of the BridgeDomainInterconnect.
enum: "Up", "Down", "Degraded", "Unknown"
