IRB Interface#
Virtual Networks → IIIRB Interfaces
The IRBInterface is used to connect a BridgeDomain to a Router. This is required to allow hosts within a BridgeDomain to communicate with the outside world.
Example: if the host has IP address 192.168.100.123/24, it may use a gateway to reach the internet: it is configured with a default static route, for example, to reach anything not in the 192.168.100.0/24 subnet.
On Linux, the default static route usually looks like this: 0.0.0.0/0 via 192.168.100.1. The gateway IP, 192.168.100.1 in this case, is configured as an anycast gateway IP on the IRBInterface.
Secondary IP addresses#
A typical IRBInterface may have one anycast IP address on all nodes, and a secondary IP address for each node individually. Some use cases:
- BGP sessions may be established from either the primary IP or the secondary IP (see below)
- A DHCP relay requires a secondary IP to be configured on each node that will be acting as a DHCP relay
- For debugging purposes, it may be useful to configure a secondary IP address on at least one node, to confirm routed connectivity to a particular IP
BGP and BFD#
BFD settings may be configured for every BGP session established by this IRBInterface. There are many designs where routers initiate BGP sessions with hosts connected to the datacenter. The most common scenarios are discussed below.
Single-homed PE-CE sessions (no BGP session redundancy)#
When a host is connected to a BridgeDomain, it may establish a BGP session with the IRB on the top-of-rack (leaf) to exchange routes with the datacenter. No secondary IP address is required, and the session may be initiated by either the node or the host.
This design is not well-suited for VMs that move freely between racks.
- When the active leaf fails: the BGP session goes down and does not recover.
Multi-homed PE-CE sessions (no BGP session redundancy)#
When a host is connected to multiple network elements (for example, for redundancy purposes) and establishes a BGP session with the IRBInterface, the network elements should not actively try to establish the BGP session.
Instead, the BGPPeer should dynamically accept BGP sessions from the host IP subnet, because the host will only establish a single BGP session, with one of the switches it is connected to.
This design is well-suited for VMs that move freely between racks, but does not provide redundant BGP sessions.
Using secondary IP addresses to establish PE-CE sessions
Establishing redundant BGP sessions from the secondary IP addresses instead of the primary anycast gateway IP may look like a good idea, but may not actually provide redundancy: the host may choose the same leaf to reach both secondary IP addresses, which will both fail when that leaf fails.
- When the active leaf fails: the BGP session is re-established with the other leaf. During the switchover, routes are withdrawn by both the datacenter and the peer.
Multi-homed PE-CE sessions (redundant BGP sessions)#
If the host creates 2 BGP sessions for redundancy, the centralized routing model should be preferred where the IRBInterface lives on the spine switches or borderleafs rather than on the top-of-rack (leaf) switches. This way, true redundancy is achieved for BGP sessions.
- When a leaf fails: both peer IP addresses are still reachable through the other leaf
- When a spine/borderleaf fails: the other peer IP addresses are still reachable through either/all leafs
EVPN route advertisement#
EVPN route advertisement refers to the concept of advertising EVPN route-type 2 MAC-IP bindings to other nodes that participate in the BridgeDomain. It ensures that every participating node has a full view of all MAC-IP bindings.
No EVPN route advertisement#
If no MAC-IP routes are advertised, routing may not work at all: see asymmetric vs symmetric routing for more details.
Example: why routing may not work without EVPN route advertisement
Imagine a scenario where BridgeDomain A is deployed only on leaf 1, and BridgeDomain B is deployed only on leaf 7 and 8. Both BridgeDomain services are connected to the same Router. Leaf 1 sends the packet to the subnet of B, and the Router chooses leaf 7 to send the packet to, as one of the two next-hops for that subnet.
Leaf 7 receives the packet, but does not know the MAC address that the destination IP is associated with. It therefore holds the packet and sends out an ARP request for the destination IP, to all locally connected sub-interfaces and to leaf 8.
Leaf 8 receives the broadcast ARP request, and replicates it towards all locally connected sub-interfaces.
The destination host, which is multi-homed to leafs 7 and 8, receives the ARP request and responds with its MAC address. It sends the ARP response as a unicast packet, with the destination IP set to the anycast gateway (configured on leaf 7, which originated the ARP request, and leaf 8).
Leaf 8 (by chance) receives the ARP response and sees that the destination IP is set to its own destination gateway IP, and processes the ARP response. It installs the MAC-IP binding, but since EVPN route advertisement is turned off, it does not broadcast this information to leaf 7. Hence, leaf 7 will never know where to send the packet to and will eventually drop it.
Dynamic EVPN route advertisement#
When enabled for ARP and/or ND, locally learnt MAC-IP bindings are advertised to other nodes that participate in the same BridgeDomain.
Static EVPN route advertisement#
When enabled for ARP and/or ND, locally configured static MAC-IP bindings are advertised to other nodes that participate in the same BridgeDomain.
Example of a statically configured MAC-IP binding for Nokia SR Linux
Host route population#
Host route population refers to the concept of installing host (/32) IP addresses in the routing table of the Router. It ensures that the most efficient route is taken, even if the destination bridge domain is not configured on the ingress node.
No host route population#
If no host routes are installed in the routing table, routing may not be optimal: see asymmetric vs symmetric routing for more details.
Dynamic host route population#
When enabled, the IRBInterface creates host (/32) routes in the routing table of the virtualized Router service for dynamically learnt MAC-IP bindings. A dynamic host entry in this context is a host that is connected to one of the local bridge interfaces.
EVPN host route population#
When enabled, the IRBInterface creates host (/32) routes in the routing table of the virtualized Router service for MAC-IP bindings learnt through EVPN. An EVPN host entry in this context is a host that is remotely connected to one of the other nodes participating in the bridge domain.
Static host route population#
When enabled, the IRBInterface creates host (/32) routes in the routing table of the virtualized Router service for statically configured MAC-IP bindings.
Example of a statically configured MAC-IP binding for Nokia SR Linux
Proxy ARP / ND#
Proxy-ARP / proxy-ND are IPv4 / IPv6 anti-flooding mechanisms, and allow a leaf node that receives an ARP request (IPv4) or neighbor solicitation (IPv6) to answer on behalf of the destination host. This prevents the request from being flooded to all possible destination endpoints.
For proxy-ARP / proxy-ND to work, the leaf node needs to know the MAC-IP binding of the destination host. Therefore, EVPN advertisement must be enabled.
IRB index allocation#
On some network operating systems, IRB (sub-)interfaces are numbered. For example, on Nokia SR Linux, the subinterface index is a number between 0 and 9999. The IRBInterface has three modes to assign this number:
GlobalPool: allocates a single index perIRBInterfacefrom theIndexAllocationPoolwith nameirb-subif-pool, which is a pool that is by default configured in EDA.PerNodePool: allocates a single index perIRBInterfaceon that particular node, from the pool specified in theindexAllocation.indexPoolproperty. This is useful if the number ofIRBInterfacesin your network is very large, but the number ofIRBInterfacesconfigured on any particular node is significantly less.Manual: allows manual specification of the IRB sub-interface index.
Default size of the 'irb-subif-pool'
The size of the default IndexAllocationPool with name irb-subif-pool is limited to 4000 by default. Consider using the PerNodePool mode if the number of IRBInterface resources in your network exceeds this number.
Dependencies#
BridgeDomain#
An IRBInterface is always connected to a BridgeDomain. When configured with an anycast IP address, it can act as a gateway for routed traffic from hosts connected to the BridgeDomain.
Router#
An IRBInterface is always connected to a Router where it allows bridged traffic to be routed to other subnets.
Referenced resources#
Filter#
Traffic that is received by or sent from the IRBInterface can optionally be filtered by specifying one or more Filter resources in the ingress (respectively egress) container.
IngressPolicy#
Traffic that is received by the IRBInterface can optionally be processed by one or more QoS IngressPolicies by specifying them in the ingress container.
EgressPolicy#
Traffic that is sent by the IRBInterface can optionally be processed by one or more QoS EgressPolicies by specifying them in the egress container.
IndexAllocationPool#
Optionally, an IndexAllocationPool may be specified for the assignment of the IRB sub-interface on some operating systems. For more information, see IRB index allocation.
Examples#
apiVersion: services.eda.nokia.com/v2
kind: IRBInterface
metadata:
name: dhcp-domain-irb
namespace: eda
spec:
bridgeDomain: dhcp-domain
evpnRouteAdvertisementType:
arpDynamic: false
arpStatic: false
ndDynamic: false
ndStatic: false
indexAllocation:
mode: GlobalPool
ipAddresses:
- ipv4Address:
anycast: true
ipPrefix: 192.168.0.1/24
primary: false
- ipv4Address:
anycast: false
ipPrefix: 192.168.0.11/24
primary: true
node: leaf1
- ipv4Address:
anycast: false
ipPrefix: 192.168.0.12/24
primary: true
node: leaf2
ipMTU: 1500
router: dhcp-router
virtualIPDiscovery: []
cat << 'EOF' | kubectl apply -f -
apiVersion: services.eda.nokia.com/v2
kind: IRBInterface
metadata:
name: dhcp-domain-irb
namespace: eda
spec:
bridgeDomain: dhcp-domain
evpnRouteAdvertisementType:
arpDynamic: false
arpStatic: false
ndDynamic: false
ndStatic: false
indexAllocation:
mode: GlobalPool
ipAddresses:
- ipv4Address:
anycast: true
ipPrefix: 192.168.0.1/24
primary: false
- ipv4Address:
anycast: false
ipPrefix: 192.168.0.11/24
primary: true
node: leaf1
- ipv4Address:
anycast: false
ipPrefix: 192.168.0.12/24
primary: true
node: leaf2
ipMTU: 1500
router: dhcp-router
virtualIPDiscovery: []
EOF
Custom Resource Definition#
To browse the Custom Resource Definition go to crd.eda.dev.
IRBInterface
SPEC
The IRBInterface enables the configuration and management of Layer 3 interfaces associated with a BridgeDomain. This resource allows for the specification of various parameters, including IP MTU, learning of unsolicited ARPs, IPv4 and IPv6 addresses, and unnumbered interface settings. It also supports advanced features such as BFD configuration, Virtual IP discovery, and ARP/ND-related settings like Proxy ARP/ND and EVPN route advertisement.
-
The gateway MAC to use on the anycast address, if left empty the node will automatically assign one.
-
Enable BFD on the IRBInterface.
-
The minimum interval in milliseconds between transmission of BFD control packets.
default: 1000format: int32range: 10 to 100000 -
The number of packets that must be missed to declare this session as down.
default: 3format: int32range: 3 to 20 -
Enables Biforward Detection.
default: false -
The minimum interval between echo packets the local node can receive.
default: 0format: int32range: 0 to 100000 -
The minimum interval in milliseconds between received BFD control packets that this system should support.
default: 1000format: int32range: 10 to 100000 -
Sets custom IP TTL or Hop Limit for multi-hop BFD sessions packets. Not applicable to single-hop BFD sessions.
format: int32range: 2 to 255
-
-
Reference to a BridgeDomain.
-
The description of the IRBInterface.
-
Controls the type of ARP/ND entries to advertise.
-
Advertise dynamic ARP entries.
default: false -
Advertise static ARP entries.
default: false -
Advertise dynamic ND entries.
default: false -
Advertise static ND entries.
default: false -
Use RFC9135-based symmetric mode for ARP/ND host route advertisements.
-
-
Configures host route population based on ARP entries.
-
Index Allocation strategy for the IRBInterface.
default: {"mode": "GlobalPool"}-
Index value to use when Mode is set to Manual. Ignored for other modes.
format: int32range: 0 to 4094 -
Name of the index pool to use when Mode is set to PerNodePool. Ignored for Manual and GlobalPool modes.
default: "irb-subif-pool" -
Strategy for allocating interface indices. Options are GlobalPool (default), PerNodePool, or Manual.
default: "GlobalPool"enum: "GlobalPool", "PerNodePool", "Manual"
-
-
Configures IP addresses on the IRBInterface.
-
-
Reference to a TopoNode resource, if not specified the IP address will be assigned to all nodes on which the IRB is deployed. If specified the IP address will be assigned to the specified node.
-
-
IP MTU for the IRBInterface [default=1500].
default: 1500format: int32range: 1280 to 9486 -
IPv4 parameters that are not applicable to IPv6.
-
Duration of time that dynamic ARP entries remain in the ARP cache before they expire.
default: 14400format: int64range: >= 0 -
Allow receiving and forwarding of directed broadcast packets. Enabled when set to true.
-
Enable or disable learning of unsolicited ARPs.
default: "Disabled"enum: "Enabled", "Disabled"
-
-
IPv6 parameters that are not applicable to IPv4.
-
Enable or disable learning of unsolicited Neighbor Advertisements.
default: "Disabled"enum: "All", "Global", "LinkLocal", "Disabled" -
Manages IPv6 Router Advertisement parameters.
-
The current hop limit to advertise in the router advertisement messages.
default: 64format: int32range: 0 to 255 -
Enable or disable IPv6 router advertisements.
default: false -
The IP MTU to advertise in the router advertisement messages.
format: int32range: 1280 to 9486 -
Enable DHCPv6 for address configuration (M-bit).
default: false -
Maximum time between router advertisements (in seconds).
default: 600format: int32range: 4 to 1800 -
Minimum time between router advertisements (in seconds).
default: 200format: int32range: 3 to 1350 -
Enable DHCPv6 for other configuration (O-bit).
default: false -
IPv6 prefixes to advertise in router advertisements.
-
IPv6Prefix defines the configuration for an IPv6 prefix advertisement.
-
When this is set in the prefix information option hosts can use the prefix for stateless address autoconfiguration (SLAAC).
default: true -
When this is set in the prefix information option hosts can use the prefix for on-link determination.
default: true -
The length of time in seconds (relative to the time the packet is sent) that addresses generated from the prefix via stateless address autoconfiguration remain preferred.
default: 604800format: int64range: >= 0 -
An IPv6 global unicast address prefix.
-
The length of time in seconds (relative to the time the packet is sent) that the prefix is valid for the purpose of on-link determination.
default: 2592000format: int64range: >= 0
-
-
-
Time in milliseconds for Neighbor Unreachability Detection.
default: 0format: int32range: 0 to 3600000 -
Time in milliseconds between retransmitted NS messages.
default: 0format: int32range: 0 to 1800000 -
Router lifetime in seconds for default gateway.
default: 1800format: int32range: 0 to 9000
-
-
-
Reference to a Router.
-
Configuration for Virtual IP discovery on the interface.
-
-
Virtual IP Address.
-
List of allowed MAC addresses for a discovered virtual IP address.
-
List of BridgeInterfaces on the associated MAC-VRF to which the ARP probes are sent. If left blank, the probes are sent on all BridgeInterfaces associated with the BridgeDomain.
-
ARP probe interval in seconds.
default: 0format: int32range: 0 to 86400 -
List of VLANs on the associated BridgeDomain to which the ARP probes are sent. If left blank, the probes are sent on all VLANs associated with the BridgeDomain.
-
-
STATUS
IRBInterfaceStatus defines the observed state of IRBInterface
-
Indicates the health score of the VNET.
format: int32range: <= 100 -
Explains the reason for the health score.
-
Details of the interfaces associated with the IRB.
-
-
Administrative status of the SubInterface.
-
Timestamp of when this SubInterface last changed state.
-
Reference to Node object.
-
Node specific interface name.
-
Operating System of the Node.
-
Current operational state of the SubInterface.
enum: "Up", "Down", "Degraded", "Unknown"
-
-
-
Timestamp of the last state change.
-
Operational state of the VNET.
enum: "Up", "Down", "Degraded", "Unknown"