=================================================
Single LAN edge deployment
=================================================

The following page explains how to set up an edge node deployment for
connecting to a remote node or node group.

Edge nodes generally correspond to sites that provide network service to
clients, and are typically located on the periphery of the network. See the
`peer documentation <../peers/index.html>`__ for more information on the
distinction between core nodes and edge nodes.

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

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

.. graphviz::

    graph {
        rankdir=TB;
        newrank=true;
        fontname="Arial";
        splines=ortho;
        bgcolor="transparent";
        nodesep=0.25;
        ranksep=0.25;

        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: <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"
            ];

            dc0_peer [
                label=<<b>Peer: Default</b><br align="left"/>    Mode: <font color="#D4A90D">Listen</font><br align="left"/>>,
                shape=box,
                fillcolor="#FEF9E7",
                color="#F1C40F"
            ];

            dc0_eth0 -- dc0_peer;
        }

        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">Default</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">Default</font><br align="left"/>    Preference: <font color="#333333">500</font><br align="left"/>>,
                style="filled",
                fillcolor="#FFFFFF",
                color="#666666"
            ];

            cpe0_nexthop [
                label=<<b>Nexthop: Peer</b><br align="left"/>    Peer: <font color="#333333">Default</font><br align="left"/>>
                style="filled",
                fillcolor="#FFFFFF",
                color="#666666"
            ];

            cpe0_peer [
                label=<<b>Peer: Default</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_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_peer -- cpe0_eth1 [weight=100];
            cpe0_peer -- cpe0_eth2 [weight=100];
            cpe0_route1 -- cpe0_route2 -- cpe0_eth0 [style=invis, weight=100];
            cpe0_route1 -- cpe0_eth0 [constraint=false];
            cpe0_route2 -- cpe0_eth0 [constraint=false];
            cpe0_route1 -- cpe0_nexthop [constraint=false];
            cpe0_route2 -- cpe0_nexthop [constraint=false];
            cpe0_nexthop -- cpe0_peer [constraint=false];
        }

        dc0_peer -- cpe0_peer [color="#F1C40F"];
        cpe0_eth0 -- lan;

        { rank=same; cpe0_route1 -- cpe0_route2 -- cpe0_nexthop -- cpe0_peer [style=invis] }
        { rank=same; cpe0_eth0 -- cpe0_eth1 -- cpe0_eth2 [style=invis] }
    }

|

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

#. Follow the instructions to `set up a core node
   <core-node-setup.html>`__.

#. 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 a peer <../peers/managing-peers.html>`__ to the node:

   - Name: ``Default``

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

#. Then, `add a nexthop <../routing-and-vrfs/nexthops/managing-nexthops.html>`__
   to the node:

   - Type: ``Peer``

      - Peer: ``Default``

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

   - Destination: ``0.0.0.0/0``

      - VRF: ``Global``
      - Nexthop: ``Default`` (Preference: ``500``)

   - Destination: ``::/0``

      - VRF: ``Global``
      - Nexthop: ``Default`` (Preference: ``500``)

#. You now have a complete edge node configuration forming a peer connection
   with a remote node.

Connecting to remote core node group
====================================

.. graphviz::

    graph {
        rankdir=TB;
        newrank=true;
        fontname="Arial";
        splines=ortho;
        bgcolor="transparent";
        nodesep=0.25;
        ranksep=0.25;

        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";

            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_peer [
                label=<<b>Peer: Default</b><br align="left"/>    Mode: <font color="#D4A90D">Listen</font><br align="left"/>>,
                fillcolor="#FEF9E7",
                color="#F1C40F"
            ];

            dc1_eth0 -- west_peer;
            dc0_eth0 -- west_peer;
        }

        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">Default</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">Default</font><br align="left"/>    Preference: <font color="#333333">500</font><br align="left"/>>,
                style="filled",
                fillcolor="#FFFFFF",
                color="#666666"
            ];

            cpe0_nexthop [
                label=<<b>Nexthop: Peer</b><br align="left"/>    Peer: <font color="#333333">Default</font><br align="left"/>>
                style="filled",
                fillcolor="#FFFFFF",
                color="#666666"
            ];

            cpe0_peer [
                label=<<b>Peer: Default</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_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_peer -- cpe0_eth1 [weight=100];
            cpe0_peer -- cpe0_eth2 [weight=100];
            cpe0_route1 -- cpe0_route2 -- cpe0_eth0 [style=invis, weight=100];
            cpe0_route1 -- cpe0_eth0 [constraint=false];
            cpe0_route2 -- cpe0_eth0 [constraint=false];
            cpe0_route1 -- cpe0_nexthop [constraint=false];
            cpe0_route2 -- cpe0_nexthop [constraint=false];
            cpe0_nexthop -- cpe0_peer [constraint=false];
        }

        west_peer -- cpe0_peer [color="#F1C40F"];
        cpe0_eth0 -- lan;

        { rank=same; cpe0_route1 -- cpe0_route2 -- cpe0_nexthop -- cpe0_peer [style=invis] }
        { rank=same; cpe0_eth0 -- cpe0_eth1 -- cpe0_eth2 [style=invis] }
    }

|

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

#. Follow the instructions to `set up a core node group
   <core-node-group-setup.html>`__.

#. Next, follow the `instructions for connecting to a remote core node
   <single-lan-edge-deployment.html#connecting-to-remote-core-node>`__,
   but when configuring the peer, set the remote target to the node group you
   created.