Replace all post_url with Hugo ref blocks

This commit is contained in:
2024-08-05 01:43:55 +02:00
parent c1f1775c91
commit a2f10236a3
56 changed files with 221 additions and 241 deletions

View File

@ -25,7 +25,7 @@ like [FRR](https://frrouting.org/) or [Bird](https://bird.network.cz/) on top of
## Running in Production
In the first articles from this series, I showed the code that needed to be written to implement the
**Control Plane** and **Netlink Listener** plugins. In the [penultimate post]({% post_url 2021-09-10-vpp-6 %}),
**Control Plane** and **Netlink Listener** plugins. In the [penultimate post]({{< ref "2021-09-10-vpp-6" >}}),
I wrote an SNMP Agentx that exposes the VPP interface data to, say, LibreNMS.
But what are the things one might do to deploy a router end-to-end? That is the topic of this post.
@ -33,7 +33,7 @@ But what are the things one might do to deploy a router end-to-end? That is the
### A note on hardware
Before I get into the details, here's some specifications on the router hardware that I use at
IPng Networks (AS50869). See more about our network [here]({% post_url 2021-02-27-network %}).
IPng Networks (AS50869). See more about our network [here]({{< ref "2021-02-27-network" >}}).
The chassis is a Supermicro SYS-5018D-FN8T, which includes:
* Full IPMI support (power, serial-over-lan and kvm-over-ip with HTML5), on a dedicated network port.
@ -318,7 +318,7 @@ See all interfaces? Great. Moving on :)
I set a VPP interface configuration (which it'll read and apply any time it starts or restarts,
thereby making the configuration persistent across crashes and reboots). Using the `exec`
stanza described above, the contents now become, taking as an example, our first router in
Lille, France [[details]({% post_url 2021-05-28-lille %})], configured as so:
Lille, France [[details]({{< ref "2021-05-28-lille" >}})], configured as so:
```
cat << EOF | sudo tee /etc/vpp/bootstrap.vpp
@ -351,9 +351,9 @@ EOF
This base-line configuration will:
* Ensure all host interfaces are created in namespace `dataplane` which we created earlier
* Turn on `lcp-sync`, which copies forward any configuration from VPP into Linux (see
[VPP Part 2]({% post_url 2021-08-13-vpp-2 %}))
[VPP Part 2]({{< ref "2021-08-13-vpp-2" >}}))
* Turn on `lcp-auto-subint`, which automatically creates _LIPs_ (Linux interface pairs)
for all sub-interfaces (see [VPP Part 3]({% post_url 2021-08-15-vpp-3 %}))
for all sub-interfaces (see [VPP Part 3]({{< ref "2021-08-15-vpp-3" >}}))
* Create a loopback interface, give it IPv4/IPv6 addresses, and expose it to Linux
* Create one _LIP_ interface for four of the Gigabit and all 6x TenGigabit interfaces
* Leave 2 interfaces (`GigabitEthernet7/0/0` and `GigabitEthernet8/0/0`) for later
@ -423,7 +423,7 @@ for all of the connected interfaces, while Linux has already added those. Theref
avoid the source `RTS_DEVICE`, which means "connected routes", but otherwise offer all
routes to the kernel, which in turn propagates these as Netlink messages which are
consumed by VPP. A detailed discussion of Bird's configuration semantics is in my
[VPP Part 5]({% post_url 2021-09-02-vpp-5 %}) post.
[VPP Part 5]({{< ref "2021-09-02-vpp-5" >}}) post.
### Configuring SSH
@ -477,7 +477,7 @@ important to note that Linux will only see those packets that were _punted_ by V
is to say, those packets which were destined to any IP address configured on the control
plane. Any traffic going _through_ VPP will never be seen by Linux! So, I'll have to be
clever and count this traffic by polling VPP instead. This was the topic of my previous
[VPP Part 6]({% post_url 2021-09-10-vpp-6 %}) about the SNMP Agent. All of that code
[VPP Part 6]({{< ref "2021-09-10-vpp-6" >}}) about the SNMP Agent. All of that code
was released to [Github](https://github.com/pimvanpelt/vpp-snmp-agent), notably there's
a hint there for an `snmpd-dataplane.service` and a `vpp-snmp-agent.service`, including
the compiled binary that reads from VPP and feeds this to SNMP.