Core-Distribution Topology
Create and manage a Campus Fabric Core-Distribution EVPN Topology
Build the topology
Use the Create Site EVPN Topology resource to create the EVPN Topology at the Site level.
It is possible to configure the Core-Distribution in
-
CRBmode withevpn_options.routed_at=core. In this model, the Layer 3 (L3) VXLAN gateway function is configured only on the core devices. This is accomplished by defining integrated routing and bridging (IRB) interfaces on the core devices to provide L3 routing services. This option uses virtual gateway addressing for all devices participating in the L3 subnet. Enabling this option configures core switches with a shared IP address for each L3 subnet. This address is shared between both the core switches and is used as the default gateway address for all devices within the VLAN. In addition, Mist assigns each core device with a unique IP address.When
evpn_options.routed_at==core, it is possible to configureevpn_options.per_vlan_vga_v4_mac. If you enable it, Mist provides a unique MAC address to each L3 IRB interface (per network). -
ERBmode withevpn_options.routed_at=edge. In this model, the L2 and L3 VXLAN gateway functions are configured on the distribution devices. In this case the IRB interfaces are defined on the distribution devices to provide L3 routing services. This option uses anycast addressing for all devices participating in the L3 subnet. In this case, the distribution switches are configured with the same IP address for each L3 subnet.
{
"name": "evpn_one",
"evpn_options": {
"routed_at": "core",
"overlay": {
"as": 65000
},
"core_as_border": true,
"auto_loopback_subnet": "172.16.192.0/24",
"per_vlan_vga_v4_mac": true,
"underlay": {
"as_base": 65001,
"use_ipv6": false,
"subnet": "10.255.240.0/20"
}
},
"switches": [
{
"mac": "020004000000",
"role": "core"
},
{
"mac": "02000400001",
"role": "core"
},
{
"mac": "02000400002",
"role": "distribution"
},
{
"mac": "02000400003",
"role": "distribution"
},
{
"mac": "02000400004",
"role": "esilag-access"
},
{
"mac": "02000400005",
"role": "esilag-access"
}
]
}Update the device port configs
Update the site settings with Update Site Settings API Call to define:
- the Virtual Network Identifiers that will be used in the topology in the
networksobject, with- the Virtual Network Identifier in
vlan_id - the Virtual Network Subnet in
subnet
- the Virtual Network Identifier in
- the VRF instances with
- the networks belonging to the VRF instance
- (optional) the additional routes
- the port usages that will be assigned to the switches:
x-esilag(the name can be changed) will be used to configure the ESI-LAG links between the Core and Distribution switches- (optional) the access port profiles
The example below is using the port profile name "x-esilag". This name can be customized and must be used when assigning the ESI-LAG profile the the switch ports in the step 3.
⚠️ It is recommended to define the
ui_evpntopo_idattribute in the ESI-LAG profile used between the Distribution and Access layer with the ID of the EVPN Topology created during the step 1. If this attribute is not configured, the UI may not be able to identify the ESI-LAG profile and will ask to configure a new one.
{
"networks": {
"vlan1099": {
"vlan_id": 1099,
"subnet": "10.99.99.0/24",
"gateway": "10.99.99.1"
},
"vlan1088": {
"vlan_id": 1088,
"subnet": "10.88.88.0/24",
"gateway": "10.88.88.1"
},
"vlan1033": {
"vlan_id": 1033,
"subnet": "10.33.33.0/24",
"gateway": "10.33.33.1"
}
},
"vrf_instances": {
"customera": {
"networks": [
"vlan1099"
],
"extra_routes": {
"0.0.0.0/0": {
"via": "10.99.99.254"
}
}
},
"customerb": {
"networks": [
"vlan1088"
],
"extra_routes": {
"0.0.0.0/0": {
"via": "10.88.88.254"
}
}
},
"devices": {
"networks": [
"vlan1033"
],
"extra_routes": {
"0.0.0.0/0": {
"via": "10.33.33.254"
}
}
}
},
"port_usages": {
"l2fabricexit": {
"mode": "trunk",
"all_networks": false,
"networks": [
"vlan1099",
"vlan1088",
"vlan1033"
],
"mtu": "9018"
},
"vlan1099": {
"mode": "access",
"port_network": "vlan1099"
},
"vlan1088": {
"mode": "access",
"port_network": "vlan1088"
},
"vlan1033": {
"mode": "access",
"port_network": "vlan1033"
},
"x-esilag": {
"mode": "trunk",
"all_networks": false,
"networks": [
"vlan1099",
"vlan1088",
"vlan1033"
],
"poe_disabled": true,
"mtu": "9100",
"ui_evpntopo_id": "a4986d48-b2ac-481c-8a88-4085f2eb69c3"
}
}
}Update the device port configs
Update the Switches with the Update Site Device API Call to configure the port_usages and assign the corresponding profile to the ports you have used (or plan to use) to inter-connect the switches by assigning them the ESI-LAG, evpn_uplink or evpn_downlink profiles:
⚠️ When defining the
port_configwith theevpn_uplinkorevpn_downlinkusages, the interfaces in the interface range must be ordered based on the remote switch MAC Address with the lower MAC Address first
Core Switches
- Switch
name - Switch
port_config:- Links to other Cores with 1 x
evpn_downlinkand 1 xevpn_uplink - Links to each Distribution switch with
usage=<esilag name>,aggregatedandesilagtotrueandae_idxconfigured
- Links to other Cores with 1 x
- If
CRBmode is used -- Switchother_ip_configs:- Configure a static IP Address for each network. The IP Addresses must be the same across each Access Switches.
- If
CRBmode is used -- Switchvrf_configwithenabled=true
// CRB Mode
{
"name": "core-01",
"port_config": {
"ge-0/0/0": {
"usage": "l2fabricexit",
"aggregated": true,
"esilag": true,
"ae_idx": 0
},
"ge-0/0/2,ge-0/0/1": {
"usage": "evpn_downlink"
}
},
"other_ip_configs": {
"vlan1099": {
"type": "static",
"ip": "10.99.99.2",
"netmask": "255.255.255.0",
"evpn_anycast": true
},
"vlan1088": {
"type": "static",
"ip": "10.88.88.2",
"netmask": "255.255.255.0",
"evpn_anycast": true
},
"vlan1033": {
"type": "static",
"ip": "10.33.33.2",
"netmask": "255.255.255.0",
"evpn_anycast": true
}
},
"vrf_config": {
"enabled": true
}
}// ERB Mode
{
"name": "core-01",
"port_config": {
"ge-0/0/0": {
"usage": "l2fabricexit",
"aggregated": true,
"esilag": true,
"ae_idx": 0
},
"ge-0/0/2,ge-0/0/1": {
"usage": "evpn_downlink"
}
}
}Distribution Switches
- Switch
name - Switch
port_config:- Links to the Core layer configured with
usage=evpn_uplink - Links to each Access switch configured with
usage=<esilag name>,aggregatedandesilagtotrueandae_idxconfigured
- Links to the Core layer configured with
- If
ERBmode is used -- Switchother_ip_configs:- Configure a static IP Address for each network. The IP Addresses must be the same across each Access Switches.
- If
ERBmode is used -- Switchvrf_configwithenabled=true
// CRB Mode
{
"name": "distri-01",
"port_config": {
"ge-0/0/1": {
"usage": "x-esilag",
"aggregated": true,
"esilag": true,
"ae_idx": 10
},
"ge-0/0/2": {
"usage": "x-esilag",
"aggregated": true,
"esilag": true,
"ae_idx": 11
},
"ge-0/0/3,ge-0/0/4": {
"usage": "evpn_uplink"
}
}
}// ERB Mode
{
"name": "distri-01",
"port_config": {
"ge-0/0/1": {
"usage": "x-esilag",
"aggregated": true,
"esilag": true,
"ae_idx": 10
},
"ge-0/0/2": {
"usage": "x-esilag",
"aggregated": true,
"esilag": true,
"ae_idx": 11
},
"ge-0/0/3,ge-0/0/4": {
"usage": "evpn_uplink"
}
},
"other_ip_configs": {
"vlan1099": {
"type": "static",
"ip": "10.99.99.2",
"netmask": "255.255.255.0",
"evpn_anycast": true
},
"vlan1088": {
"type": "static",
"ip": "10.88.88.2",
"netmask": "255.255.255.0",
"evpn_anycast": true
},
"vlan1033": {
"type": "static",
"ip": "10.33.33.2",
"netmask": "255.255.255.0",
"evpn_anycast": true
}
},
"vrf_config": {
"enabled": true
}
}Access Switches
- Switch
name - Switch
port_config:- Links to the Core layer configured with
usage=<esilag name>,aggregatedandesilagtotrueandae_idxconfigured - Access port switches based on your requirements
- Links to the Core layer configured with
{
"name": "access-01",
"port_config": {
"ge-0/0/0,ge-0/0/1": {
"usage": "x-esilag",
"aggregated": true,
"esilag": true,
"ae_idx": 0
}
}
}