Single LAN edge deployment, dual peers¶
The following page explains how to set up an edge node deployment with simultaneous connections to two remote node or node groups.
With two active connections running simultaneously, you can dynamically distribute traffic across both links or apply granular routing policies. For example, you could route general traffic through the primary link while routing traffic for a specific public network through the secondary link.
Connecting to remote core nodes¶
![graph {
rankdir=TB;
newrank=true;
fontname="Arial";
splines=ortho;
bgcolor="transparent";
nodesep=0.25;
ranksep=0.5;
node [
shape=box,
style="filled,rounded",
fontname="Arial",
fontsize=12
];
edge [
penwidth=1.5,
fontname="Arial",
fontsize=10
];
lan [label=<LAN: <font color="#333333">198.51.100.0/24</font><br align="left"/>LAN: <font color="#333333">2001:db8::/64</font><br align="left"/>>, fillcolor="#FFFFFF", color="#666666"];
subgraph cluster_dc0 {
label="Node: dc0";
labelloc="t";
style="filled,rounded";
fillcolor="#E9F7EF";
color="#1E8449";
dc0_eth0 [
label=<<b>Interface: eth0</b><br align="left"/> Aliases: <font color="#333333">public</font><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> IPv4 address: <font color="#333333">203.0.113.1/24</font><br align="left"/> IPv6 address: <font color="#333333">2001:db8:1::1/64</font><br align="left"/> Keep on shutdown: <font color="#333333">✔ (IPv4/IPv6)</font><br align="left"/>>,
fillcolor="#FFFFFF",
color="#666666"
];
dc0_peer1 [
label=<<b>Peer: Link 1</b><br align="left"/> Mode: <font color="#D4A90D">Listen</font><br align="left"/>>,
fillcolor="#FEF9E7",
color="#F1C40F"
];
dc0_eth0 -- dc0_peer1;
}
subgraph cluster_dc1 {
label="Node: dc1";
labelloc="t";
style="filled,rounded";
fillcolor="#E9F7EF";
color="#1E8449";
dc1_eth0 [
label=<<b>Interface: eth0</b><br align="left"/> Aliases: <font color="#333333">public</font><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> IPv4 address: <font color="#333333">192.0.2.1/24</font><br align="left"/> IPv6 address: <font color="#333333">2001:db8:2::1/64</font><br align="left"/> Keep on shutdown: <font color="#333333">✔ (IPv4/IPv6)</font><br align="left"/>>,
style="filled,rounded",
fillcolor="#FFFFFF",
color="#666666"
];
dc1_peer2 [
label=<<b>Peer: Link 2</b><br align="left"/> Mode: <font color="#D4A90D">Listen</font><br align="left"/>>,
style="filled,rounded",
fillcolor="#FEF9E7",
color="#F1C40F"
];
dc1_eth0 -- dc1_peer2;
}
subgraph cluster_cpe0 {
label="Node: cpe0";
labelloc="b";
style="filled,rounded";
fillcolor="#E9F7EF";
color="#1E8449";
cpe0_route1 [
label=<<b>Route: 0.0.0.0/0</b><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> Nexthop: <font color="#333333">Link 1</font><br align="left"/> Preference: <font color="#333333">500</font><br align="left"/>>,
style="filled",
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_route2 [
label=<<b>Route: ::/0</b><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> Nexthop: <font color="#333333">Link 1</font><br align="left"/> Preference: <font color="#333333">500</font><br align="left"/>>,
style="filled",
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_route3 [
label=<<b>Route: 192.0.2.0/24</b><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> Nexthop: <font color="#333333">Link 2</font><br align="left"/> Preference: <font color="#333333">500</font><br align="left"/>>,
style="filled",
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_route4 [
label=<<b>Route: 2001:db8:2::/64</b><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> Nexthop: <font color="#333333">Link 2</font><br align="left"/> Preference: <font color="#333333">500</font><br align="left"/>>,
style="filled",
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_nexthop1 [
label=<<b>Nexthop: Peer</b><br align="left"/> Peer: <font color="#333333">Link 1</font><br align="left"/>>
style="filled",
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_nexthop2 [
label=<<b>Nexthop: Peer</b><br align="left"/> Peer: <font color="#333333">Link 2</font><br align="left"/>>
style="filled",
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_peer1 [
label=<<b>Peer: Link 1</b><br align="left"/> Mode: <font color="#D4A90D">Connect</font><br align="left"/> Interface: <font color="#D4A90D">eth1</font><br align="left"/> Interface: <font color="#D4A90D">eth2</font><br align="left"/> Remote (node): <font color="#D4A90D">dc0</font><br align="left"/> Preference: <font color="#D4A90D">500</font><br align="left"/>>,
fillcolor="#FEF9E7",
color="#F1C40F"
];
cpe0_peer2 [
label=<<b>Peer: Link 2</b><br align="left"/> Mode: <font color="#D4A90D">Connect</font><br align="left"/> Interface: <font color="#D4A90D">eth1</font><br align="left"/> Interface: <font color="#D4A90D">eth2</font><br align="left"/> Remote (node): <font color="#D4A90D">dc1</font><br align="left"/> Preference: <font color="#D4A90D">500</font><br align="left"/>>,
style="filled,rounded",
fillcolor="#FEF9E7",
color="#F1C40F"
];
cpe0_eth0 [
label=<<b>Interface: eth0</b><br align="left"/> Aliases: <font color="#333333">lan0</font><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> IPv4 address: <font color="#333333">198.51.100.1/24</font><br align="left"/> IPv6 address: <font color="#333333">2001:db8::1/64</font><br align="left"/> Keep on shutdown: <font color="#333333">✗</font><br align="left"/>>,
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_eth1 [
label=<<b>Interface: eth1</b><br align="left"/> Aliases: <font color="#484D4D">wan0</font><br align="left"/> VRF: <font color="#484D4D">No VRF</font><br align="left"/> IPv4 address: <font color="#484D4D">DHCP</font><br align="left"/> Keep on shutdown: <font color="#333333">✔ (IPv4)</font><br align="left"/>>
];
cpe0_eth2 [
label=<<b>Interface: eth2</b><br align="left"/> Aliases: <font color="#484D4D">wan1</font><br align="left"/> VRF: <font color="#484D4D">No VRF</font><br align="left"/> IPv4 address: <font color="#484D4D">DHCP</font><br align="left"/> Keep on shutdown: <font color="#333333">✗</font><br align="left"/>>
];
cpe0_peer1 -- cpe0_eth1 [weight=100];
cpe0_peer1 -- cpe0_eth2 [weight=100];
cpe0_peer2 -- cpe0_eth1 [weight=100];
cpe0_peer2 -- cpe0_eth2 [weight=100];
cpe0_route1 -- cpe0_route3 -- cpe0_eth0 [style=invis, weight=50];
cpe0_route2 -- cpe0_route4 [style=invis, weight=100];
cpe0_nexthop1 -- cpe0_nexthop2 [style=invis, weight=150];
cpe0_route1 -- cpe0_eth0 [constraint=false];
cpe0_route2 -- cpe0_eth0 [constraint=false];
cpe0_route3 -- cpe0_eth0 [constraint=false];
cpe0_route4 -- cpe0_eth0 [constraint=false];
cpe0_route1 -- cpe0_nexthop1 [constraint=false];
cpe0_route2 -- cpe0_nexthop1 [constraint=false];
cpe0_route3 -- cpe0_nexthop2 [constraint=false];
cpe0_route4 -- cpe0_nexthop2 [constraint=false];
cpe0_nexthop1 -- cpe0_peer1 [constraint=false];
cpe0_nexthop2 -- cpe0_peer2 [constraint=false];
}
dc0_peer1 -- cpe0_peer1 [color="#F1C40F"];
dc1_peer2 -- cpe0_peer2 [color="#F1C40F"];
cpe0_eth0 -- lan;
{ rank=same; cpe0_route1 -- cpe0_route2 -- cpe0_nexthop1 -- cpe0_peer1 -- cpe0_peer2 [style=invis] }
{ rank=same; cpe0_route3 -- cpe0_route4 -- cpe0_nexthop2 [style=invis] }
{ rank=same; cpe0_eth0 -- cpe0_eth1 -- cpe0_eth2 [style=invis] }
}](../../_images/graphviz-360d59ff4f522699a58d6c944c2d81b8e5b5198d.png)
Instructions¶
Follow the instructions to set up two core nodes
dc0anddc1, with the following interface configuration ondc1:Name:
eth0Aliases:
publicVRF:
GlobalIPv4:
192.0.2.1/24IPv6:
2001:db8:2::1/64Keep on shutdown enabled on both addresses
Create a new node record on the management server with the name
cpe0.Add the following interfaces to the newly created node:
Name:
eth0Aliases:
lan0VRF:
GlobalIPv4:
198.51.100.1/24IPv6:
2001:db8::1/64Keep on shutdown disabled
Name:
eth1Aliases:
wan0VRF:
No VRFIPv4:
DHCPKeep on shutdown enabled
Name:
eth2Aliases:
wan1VRF:
No VRFIPv4:
DHCPKeep on shutdown disabled
Next, add two peers to the node, with each link targeting a different remote node:
Name:
Link 1Interface:
eth1Interface:
eth2Remote (node):
dc0(Preference:500)
Name:
Link 2Interface:
eth1Interface:
eth2Remote (node):
dc1(Preference:500)
Then, add two nexthops to the node, one for each peer:
Type:
PeerPeer:
Link 1
Type:
PeerPeer:
Link 2
Finally, add four routes to the node:
Destination:
0.0.0.0/0VRF:
GlobalNexthop:
Link 1(Preference:500)
Destination:
::/0VRF:
GlobalNexthop:
Link 1(Preference:500)
Destination:
192.0.2.0/24VRF:
GlobalNexthop:
Link 2(Preference:500)
Destination:
2001:db8:2::/64VRF:
GlobalNexthop:
Link 2(Preference:500)
You now have a complete edge node configuration forming a peer connection with two remote nodes simultaneously. In this case, traffic directed to the
192.0.2.0/24or2001:db8:2::/64networks will be routed through peer 2, while all other traffic will be routed through peer 1.
Connecting to remote core node groups¶
![graph {
rankdir=TB;
newrank=true;
fontname="Arial";
splines=ortho;
bgcolor="transparent";
nodesep=0.25;
ranksep=0.5;
node [
shape=box,
style="filled,rounded",
fontname="Arial",
fontsize=12
];
edge [
penwidth=1.5,
fontname="Arial",
fontsize=10
];
lan [label=<LAN: <font color="#333333">198.51.100.0/24</font><br align="left"/>LAN: <font color="#333333">2001:db8::/64</font><br align="left"/>>, fillcolor="#FFFFFF", color="#666666"];
subgraph cluster_west {
label="Group: West";
labelloc="t";
style="filled,rounded";
fillcolor="#EAECEE";
color="#666666";
fontname="Arial";
subgraph cluster_dc1 {
label="Node: dc1";
labelloc="t";
style="filled,rounded";
fillcolor="#E9F7EF";
color="#1E8449";
dc1_eth0 [
label=<<b>Interface: eth0</b><br align="left"/> Aliases: <font color="#333333">public</font><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> IPv4: <font color="#333333">203.0.113.2/24</font><br align="left"/> IPv6: <font color="#333333">2001:db8:1::2/64</font><br align="left"/> Keep on shutdown: <font color="#333333">✔ (IPv4/IPv6)</font><br align="left"/>>,
fillcolor="#FFFFFF",
color="#666666"
];
}
subgraph cluster_dc0 {
label="Node: dc0";
labelloc="t";
style="filled,rounded";
fillcolor="#E9F7EF";
color="#1E8449";
dc0_eth0 [
label=<<b>Interface: eth0</b><br align="left"/> Aliases: <font color="#333333">public</font><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> IPv4: <font color="#333333">203.0.113.1/24</font><br align="left"/> IPv6: <font color="#333333">2001:db8:1::1/64</font><br align="left"/> Keep on shutdown: <font color="#333333">✔ (IPv4/IPv6)</font><br align="left"/>>,
fillcolor="#FFFFFF",
color="#666666"
];
}
west_peer1 [
label=<<b>Peer: Link 1</b><br align="left"/> Mode: <font color="#D4A90D">Listen</font><br align="left"/>>,
fillcolor="#FEF9E7",
color="#F1C40F"
];
dc1_eth0 -- west_peer1;
dc0_eth0 -- west_peer1;
}
subgraph cluster_east {
label="Group: East";
labelloc="t";
style="filled,rounded";
fillcolor="#EAECEE";
color="#666666";
fontname="Arial";
subgraph cluster_dc3 {
label="Node: dc3";
labelloc="t";
style="filled,rounded";
fillcolor="#E9F7EF";
color="#1E8449";
dc3_eth0 [
label=<<b>Interface: eth0</b><br align="left"/> Aliases: <font color="#333333">public</font><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> IPv4: <font color="#333333">192.0.2.2/24</font><br align="left"/> IPv6: <font color="#333333">2001:db8:2::2/64</font><br align="left"/> Keep on shutdown: <font color="#333333">✔ (IPv4/IPv6)</font><br align="left"/>>,
style="filled,rounded",
fillcolor="#FFFFFF",
color="#666666"
];
}
subgraph cluster_dc2 {
label="Node: dc2";
labelloc="t";
style="filled,rounded";
fillcolor="#E9F7EF";
color="#1E8449";
dc2_eth0 [
label=<<b>Interface: eth0</b><br align="left"/> Aliases: <font color="#333333">public</font><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> IPv4: <font color="#333333">192.0.2.1/24</font><br align="left"/> IPv6: <font color="#333333">2001:db8:2::1/64</font><br align="left"/> Keep on shutdown: <font color="#333333">✔ (IPv4/IPv6)</font><br align="left"/>>,
style="filled,rounded",
fillcolor="#FFFFFF",
color="#666666"
];
}
east_peer2 [
label=<<b>Peer: Link 2</b><br align="left"/> Mode: <font color="#D4A90D">Listen</font><br align="left"/>>,
style="filled,rounded",
fillcolor="#FEF9E7",
color="#F1C40F"
];
dc3_eth0 -- east_peer2;
dc2_eth0 -- east_peer2;
}
subgraph cluster_cpe0 {
label="Node: cpe0";
labelloc="b";
style="filled,rounded";
fillcolor="#E9F7EF";
color="#1E8449";
cpe0_route1 [
label=<<b>Route: 0.0.0.0/0</b><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> Nexthop: <font color="#333333">Link 1</font><br align="left"/> Preference: <font color="#333333">500</font><br align="left"/>>,
style="filled",
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_route2 [
label=<<b>Route: ::/0</b><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> Nexthop: <font color="#333333">Link 1</font><br align="left"/> Preference: <font color="#333333">500</font><br align="left"/>>,
style="filled",
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_route3 [
label=<<b>Route: 192.0.2.0/24</b><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> Nexthop: <font color="#333333">Link 2</font><br align="left"/> Preference: <font color="#333333">500</font><br align="left"/>>,
style="filled",
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_route4 [
label=<<b>Route: 2001:db8:2::/64</b><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> Nexthop: <font color="#333333">Link 2</font><br align="left"/> Preference: <font color="#333333">500</font><br align="left"/>>,
style="filled",
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_nexthop1 [
label=<<b>Nexthop: Peer</b><br align="left"/> Peer: <font color="#333333">Link 1</font><br align="left"/>>
style="filled",
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_nexthop2 [
label=<<b>Nexthop: Peer</b><br align="left"/> Peer: <font color="#333333">Link 2</font><br align="left"/>>
style="filled",
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_nexthop2 [
label=<<b>Nexthop: Peer</b><br align="left"/> Peer: <font color="#333333">Link 2</font><br align="left"/>>
style="filled",
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_peer1 [
label=<<b>Peer: Link 1</b><br align="left"/> Mode: <font color="#D4A90D">Connect</font><br align="left"/> Interface: <font color="#D4A90D">eth1</font><br align="left"/> Interface: <font color="#D4A90D">eth2</font><br align="left"/> Remote (group): <font color="#D4A90D">West</font><br align="left"/> Preference: <font color="#D4A90D">500</font><br align="left"/>>,
fillcolor="#FEF9E7",
color="#F1C40F"
];
cpe0_peer2 [
label=<<b>Peer: Link 2</b><br align="left"/> Mode: <font color="#D4A90D">Connect</font><br align="left"/> Interface: <font color="#D4A90D">eth1</font><br align="left"/> Interface: <font color="#D4A90D">eth2</font><br align="left"/> Remote (group): <font color="#D4A90D">East</font><br align="left"/> Preference: <font color="#D4A90D">500</font><br align="left"/>>,
style="filled,rounded",
fillcolor="#FEF9E7",
color="#F1C40F"
];
cpe0_eth0 [
label=<<b>Interface: eth0</b><br align="left"/> Aliases: <font color="#333333">lan0</font><br align="left"/> VRF: <font color="#333333">Global</font><br align="left"/> IPv4: <font color="#333333">198.51.100.1/24</font><br align="left"/> IPv6: <font color="#333333">2001:db8::1/64</font><br align="left"/> Keep on shutdown: <font color="#333333">✗</font><br align="left"/>>,
fillcolor="#FFFFFF",
color="#666666"
];
cpe0_eth1 [label=<<b>Interface: eth1</b><br align="left"/> Aliases: <font color="#484D4D">wan0</font><br align="left"/> VRF: <font color="#484D4D">No VRF</font><br align="left"/> IPv4: <font color="#484D4D">DHCP</font><br align="left"/> Keep on shutdown: <font color="#333333">✔ (IPv4)</font><br align="left"/>>];
cpe0_eth2 [label=<<b>Interface: eth2</b><br align="left"/> Aliases: <font color="#484D4D">wan1</font><br align="left"/> VRF: <font color="#484D4D">No VRF</font><br align="left"/> IPv4: <font color="#484D4D">DHCP</font><br align="left"/> Keep on shutdown: <font color="#333333">✗</font><br align="left"/>>];
cpe0_peer1 -- cpe0_eth1 [weight=100];
cpe0_peer1 -- cpe0_eth2 [weight=100];
cpe0_peer2 -- cpe0_eth1 [weight=100];
cpe0_peer2 -- cpe0_eth2 [weight=100];
cpe0_route1 -- cpe0_route3 -- cpe0_eth0 [style=invis, weight=50];
cpe0_route2 -- cpe0_route4 [style=invis, weight=100];
cpe0_nexthop1 -- cpe0_nexthop2 [style=invis, weight=150];
cpe0_route1 -- cpe0_eth0 [constraint=false];
cpe0_route2 -- cpe0_eth0 [constraint=false];
cpe0_route3 -- cpe0_eth0 [constraint=false];
cpe0_route4 -- cpe0_eth0 [constraint=false];
cpe0_route1 -- cpe0_nexthop1 [constraint=false];
cpe0_route2 -- cpe0_nexthop1 [constraint=false];
cpe0_route3 -- cpe0_nexthop2 [constraint=false];
cpe0_route4 -- cpe0_nexthop2 [constraint=false];
cpe0_nexthop1 -- cpe0_peer1 [constraint=false];
cpe0_nexthop2 -- cpe0_peer2 [constraint=false];
}
west_peer1 -- cpe0_peer1 [color="#F1C40F"];
east_peer2 -- cpe0_peer2 [color="#F1C40F"];
cpe0_eth0 -- lan;
{ rank=same; cpe0_route1 -- cpe0_route2 -- cpe0_nexthop1 -- cpe0_peer1 -- cpe0_peer2 [style=invis] }
{ rank=same; cpe0_route3 -- cpe0_route4 -- cpe0_nexthop2 [style=invis] }
{ rank=same; cpe0_eth0 -- cpe0_eth1 -- cpe0_eth2 [style=invis] }
}](../../_images/graphviz-c394971883a11a8492afdd8b7b66f0d968d25ebb.png)
Instructions¶
Follow the instructions to set up two core node groups
WestandEast. For theEastnode group, call the first nodedc2and give it the following interface configuration:Name:
eth0Aliases:
publicVRF:
GlobalIPv4:
192.0.2.1/24IPv6:
2001:db8:2::1/64Keep on shutdown enabled on both addresses
In the same node group, call the second node
dc3and give it the following interface configuration:Name:
eth0Aliases:
publicVRF:
GlobalIPv4:
192.0.2.2/24IPv6:
2001:db8:2::2/64Keep on shutdown enabled on both addresses
Next, follow the instructions for connecting to remote core nodes, but when configuring the peers, set the remote targets to the two node groups you created.