=============================================================
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.

.. contents::
   :local:
   :depth: 1

Connecting to remote core nodes
===============================

.. graphviz::

    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] }
    }

|

Instructions
------------

#. Follow the instructions to `set up two core nodes
   <core-node-setup.html>`__ ``dc0`` and ``dc1``, with the following interface
   configuration on ``dc1``:

   - Name: ``eth0``

      - Aliases: ``public``
      - VRF: ``Global``
      - IPv4: ``192.0.2.1/24``
      - IPv6: ``2001:db8:2::1/64``
      - Keep 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: ``eth0``

      - Aliases: ``lan0``
      - VRF: ``Global``
      - IPv4: ``198.51.100.1/24``
      - IPv6: ``2001:db8::1/64``
      - Keep on shutdown disabled

   - Name: ``eth1``

      - Aliases: ``wan0``
      - VRF: ``No VRF``
      - IPv4: ``DHCP``
      - Keep on shutdown enabled

   - Name: ``eth2``

      - Aliases: ``wan1``
      - VRF: ``No VRF``
      - IPv4: ``DHCP``
      - Keep on shutdown disabled

#. Next, `add two peers <../peers/managing-peers.html>`__ to the node, with
   each link targeting a different remote node:

   - Name: ``Link 1``

      - Interface: ``eth1``
      - Interface: ``eth2``
      - Remote (node): ``dc0`` (Preference: ``500``)

   - Name: ``Link 2``

      - Interface: ``eth1``
      - Interface: ``eth2``
      - Remote (node): ``dc1`` (Preference: ``500``)

#. Then, `add two nexthops <../routing-and-vrfs/nexthops/managing-nexthops.html>`__
   to the node, one for each peer:

   - Type: ``Peer``

      - Peer: ``Link 1``

   - Type: ``Peer``

      - Peer: ``Link 2``

#. Finally, `add four routes <../routing-and-vrfs/routes/managing-routes.html>`__
   to the node:

   - Destination: ``0.0.0.0/0``

      - VRF: ``Global``
      - Nexthop: ``Link 1`` (Preference: ``500``)

   - Destination: ``::/0``

      - VRF: ``Global``
      - Nexthop: ``Link 1`` (Preference: ``500``)

   - Destination: ``192.0.2.0/24``

      - VRF: ``Global``
      - Nexthop: ``Link 2`` (Preference: ``500``)

   - Destination: ``2001:db8:2::/64``

      - VRF: ``Global``
      - Nexthop: ``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/24`` or ``2001:db8:2::/64`` networks will be routed through
   peer 2, while all other traffic will be routed through peer 1.

Connecting to remote core node groups
=====================================

.. graphviz::

    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] }
    }

|

Instructions
------------

#. Follow the instructions to `set up two core node groups
   <core-node-group-setup.html>`__ ``West`` and ``East``. For the ``East``
   node group, call the first node ``dc2`` and give it the following
   interface configuration:

    - Name: ``eth0``

      - Aliases: ``public``
      - VRF: ``Global``
      - IPv4: ``192.0.2.1/24``
      - IPv6: ``2001:db8:2::1/64``
      - Keep on shutdown enabled on both addresses

   In the same node group, call the second node ``dc3`` and give it the
   following interface configuration:

    - Name: ``eth0``

      - Aliases: ``public``
      - VRF: ``Global``
      - IPv4: ``192.0.2.2/24``
      - IPv6: ``2001:db8:2::2/64``
      - Keep on shutdown enabled on both addresses

#. Next, follow the `instructions for connecting to remote core nodes
   <single-lan-edge-deployment-dual-peers.html#connecting-to-remote-core-nodes>`__,
   but when configuring the peers, set the remote targets to the two node groups
   you created.