Example topologies¶
Multiple peers can be defined on any given node using the same or different sets of interfaces and remotes. This allows for greater flexibility and redundancy when configuring peer link connections. There is no limit to the number of peers that can be assigned to a node.
Furthermore, peers can pass traffic for any VRF the node is directly or indirectly involved in. More information on VRFs can be found in the routing documentation.
The following are basic examples you may find useful when setting up SD-WAN on your nodes.
Point-to-point¶
![graph {
splines=ortho;
ranksep=1;
bgcolor="transparent";
node [
shape=box,
style="filled,rounded",
fillcolor="#E9F7EF",
color="#1E8449",
fontname="Arial",
fontsize=12
];
edge [
style=solid,
penwidth=1.5,
color="#F1C40F",
fontname="Arial",
fontsize=10,
labeldistance=2.25,
labelangle=65
];
east [label="Node: East"];
alpha [label="Node: Alpha"];
east -- alpha [headlabel=<<font color="#F1C40F">Peer 1</font>>, xlabel=" Single peer with \ntwo peer links"];
east -- alpha;
}](../../_images/graphviz-43dc025ff7d68846904fb61a8409ba8bc1bde6f4.png)
In this example, we have a simple point-to-point connection between an edge
node (Alpha) and a core node (East). The edge node has two peer links
configured on a single peer, with the core node as its target. In this
configuration, one link serves as the primary, while the other acts as a hot
spare. In a future version link aggregation will be implemented to allow
balancing across the links.
Active-backup¶
![graph {
splines=true;
ranksep=1;
bgcolor="transparent";
node [
shape=box,
style="filled,rounded",
fillcolor="#E9F7EF",
color="#1E8449",
fontname="Arial",
fontsize=12
];
edge [
style=solid,
penwidth=1.5,
color="#F1C40F",
fontname="Arial",
fontsize=10,
labeldistance=3,
labelangle=35
];
west [label="Node: West"];
east [label="Node: East"];
beta [label="Node: Beta"];
west:s -- beta [taillabel="500", headlabel=<<font color="#F1C40F">Peer 1</font>>, xlabel=" Single peer with \ntwo peer links\nand failover"];
edge [
labelangle=-35
];
east:s -- beta [style=dashed, taillabel="400"];
}](../../_images/graphviz-4f0ebfcdd099cecce79a75f6442570622e9d30c1.png)
This active-backup configuration features one edge node (Beta) connected to
two core nodes (West and East). The edge node has a peer configured
with two remotes, each one specifying a different remote node. This provides
automatic failover capability, where the edge node will only send traffic
through the link with the higher preference (West) unless that remote goes
down, in which case it will failover to the second link (East). If the
preferences were equal, the node would choose either one of the remotes as its
primary link and use the other as its backup.
Dual-path point-to-point¶
![graph {
splines=ortho;
ranksep=1;
bgcolor="transparent";
node [
shape=box,
style="filled,rounded",
fillcolor="#E9F7EF",
color="#1E8449",
fontname="Arial",
fontsize=12
];
edge [
style=solid,
penwidth=1.5,
fontname="Arial",
fontsize=10,
labeldistance=2.25,
labelangle=65,
];
west [label="Node: West"];
gamma [label="Node: Gamma"];
west -- gamma [color="#F1C40F", headlabel=<<font color="#F1C40F">Peer 1</font>>, xlabel=" Two peers with \none peer link each"];
edge [
labelangle=-65,
];
west -- gamma [color="#9B59B6", headlabel=<<font color="#9B59B6">Peer 2</font>>];
}](../../_images/graphviz-d4f51b03aa5b0f4fce2878a07b0cc216d1b3c97b.png)
This configuration is similar to point-to-point, but instead we have two
distinct peers defined on the edge node (Gamma), each using separate
links but connecting to the same core node (West). In this case, either
link can be used to send traffic. Typical use cases include dedicating one link
to low-latency traffic such as voice, with general traffic using another less
stable link.
Active-active¶
![graph {
splines=true;
ranksep=0.5;
bgcolor="transparent";
node [
shape=box,
style="filled,rounded",
fillcolor="#E9F7EF",
color="#1E8449",
fontname="Arial",
fontsize=12
];
edge [
style=solid,
penwidth=1.5,
fontname="Arial",
fontsize=10,
labeldistance=2,
labelangle=35
];
west [label="Node: West"];
east [label="Node: East"];
delta [label="Node: Delta"];
west:s -- delta:w [color="#F1C40F", headlabel=<<font color="#F1C40F">Peer 1</font>>, xlabel=" Two peers with \none peer link each,\ndifferent remotes"];
edge [
labelangle=-35
];
east:s -- delta:e [color="#9B59B6", headlabel=<<font color="#9B59B6">Peer 2</font>>];
}](../../_images/graphviz-584cc91c09ba3a8e50b2b2c7be43b0174c091b73.png)
In contrast to active-backup, this configuration defines two peers on the edge
node (Gamma), each connecting to separate core nodes (West and
East). This enables simultaneous active-active connections where traffic
can distribute across both paths, and neither link serves as a backup. Which
peer carries traffic for a given destination will be determined by routing
policy.
Full-mesh¶
![graph {
splines=true;
nodesep=0.5;
ranksep=1;
bgcolor="transparent";
node [
shape=box,
style="filled,rounded",
fillcolor="#E9F7EF",
color="#1E8449",
fontname="Arial",
fontsize=12
];
edge [
style=solid,
penwidth=1.5,
fontname="Arial",
fontsize=10,
labeldistance=2.25,
labelangle=65
];
east [label="Node: East"]
alpha [label="Node: Alpha"]
beta [label="Node: Beta"]
east -- alpha:n [color="#F1C40F", headlabel=<<font color="#F1C40F">Peer 1</font>>, xlabel=" Two edge nodes \nwith two peer\nlinks each,\nin full-mesh"];
edge [
labelangle=60
];
east -- beta:n [color="#C0392B", headlabel=<<font color="#C0392B">Peer 2</font>>];
edge [
labeldistance=2.1,
labelangle=-32
];
alpha:e -- beta:w [color="#00897B", headlabel=<<font color="#00897B">Peer 3</font>>];
{ rank=same; alpha; beta; }
}](../../_images/graphviz-044139314197a828b43fc8c949a31379df99a5a2.png)
This full-mesh implementation connects two edge nodes (Alpha and Beta)
in a dual-path topology. Each edge node maintains:
A peer connection to the core node (
East)A direct peer connection to the other edge node
This setup allows edge nodes to communicate directly rather than routing
through the core node, reducing latency for node-to-node traffic. For example,
Alpha can reach endpoints behind Beta without traversing the East
node. In this arrangement, the peer link that connects the two edge nodes only
needs to be defined on a single one of the nodes.
Full-mesh with groups¶
![graph {
newrank=true;
splines=false;
nodesep=0;
ranksep=1;
bgcolor="transparent";
compound=true;
node [
shape=box,
style="filled,rounded",
fillcolor="#E9F7EF",
color="#1E8449",
fontname="Arial",
fontsize=12
];
edge [
style=solid,
penwidth=1.5,
fontname="Arial",
fontsize=10,
labeldistance=2.25,
labelangle=65
];
subgraph cluster_west {
label="Group: West";
style="filled,rounded";
penwidth=1.5;
fillcolor="#EAECEE";
color="#B3B6B7";
fontname="Arial";
west1 [label="Node: West1"];
west_anchor [shape=point, width=0, style=invis];
west2 [label="Node: West2"];
west1 -- west_anchor -- west2 [style=invis, weight=100];
}
subgraph cluster_east {
label="Group: East";
style="filled,rounded";
penwidth=1.5;
fillcolor="#EAECEE";
color="#B3B6B7";
fontname="Arial";
east1 [label="Node: East1"];
east_anchor [shape=point, width=0, style=invis];
east2 [label="Node: East2"];
east1 -- east_anchor -- east2 [style=invis, weight=100];
}
alpha [label="Node: Alpha"];
beta [label="Node: Beta"];
west_anchor -- alpha [color="#F1C40F", fontcolor="#F1C40F", ltail=cluster_west, headlabel="Peer 1"];
edge [
labeldistance=1.4,
labelangle=110
];
east_anchor -- alpha [color="#9B59B6", fontcolor="#9B59B6", ltail=cluster_east, constraint=false, headlabel="Peer 2"];
edge [
labeldistance=2.25,
labelangle=25
];
alpha:e -- beta:w [color="#00897B", fontcolor="#00897B", constraint=false, taillabel="Peer 5"];
edge [
labeldistance=2.75,
labelangle=30
];
west_anchor -- beta [color="#C0392B", fontcolor="#C0392B", ltail=cluster_west, constraint=false, headlabel="Peer 3"];
edge [
labeldistance=2.25,
labelangle=-65
];
east_anchor -- beta [color="#2E86C1", fontcolor="#2E86C1", ltail=cluster_east, headlabel="Peer 4"];
{ rank=same; west1; west_anchor; west2; east1; east_anchor; east2; }
{ rank=same; alpha; beta; }
}](../../_images/graphviz-62bc0e456b01e52518cd72b8e7d1ef6eb649484b.png)
Expanding on the full-mesh, this configuration equips each edge node with:
Two peers targeting node groups (
West/East)One peer connecting to the other edge node
The remote node groups provide automatic load balancing and redundancy, e.g. if
one node in the West group fails, traffic automatically redirects to the
other node in the group. Combined with direct edge node connectivity, this
maximizes both failover and path efficiency.