From 7c08125826d4507b381fbbd8985404ae94e48bf7 Mon Sep 17 00:00:00 2001 From: Damien Arnodo Date: Sun, 30 Nov 2025 08:21:24 +0000 Subject: [PATCH] Add comprehensive host interface configuration documentation --- docs/HOST_CONFIGURATION.md | 135 +++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 docs/HOST_CONFIGURATION.md diff --git a/docs/HOST_CONFIGURATION.md b/docs/HOST_CONFIGURATION.md new file mode 100644 index 0000000..0b9206d --- /dev/null +++ b/docs/HOST_CONFIGURATION.md @@ -0,0 +1,135 @@ +# Host Interface Configuration Summary + +## Overview +This document describes the persistent interface configuration approach for hosts in the Arista EVPN-VXLAN lab. + +## Configuration Method +Hosts use persistent `/etc/network/interfaces` files mounted via ContainerLab's `binds` feature. This ensures: +- Configuration persists across container restarts +- Clean deployments without manual post-configuration +- Proper LACP bonding with VLAN tagging on Alpine Linux hosts + +## Host Configurations + +### Host1 (VTEP1 - L2 VXLAN on VLAN 40) +- **Location**: configs/host1-interfaces +- **IP Address**: 10.40.40.101/24 +- **VLAN**: 40 (tagged) +- **Bonding**: LACP (802.3ad) using eth1 and eth2 +- **Connected to**: leaf1 (eth1) and leaf2 (eth1) + +### Host2 (VTEP2 - L3 VXLAN in VRF gold on VLAN 34) +- **Location**: configs/host2-interfaces +- **IP Address**: 10.34.34.102/24 +- **VLAN**: 34 (tagged) +- **Gateway**: 10.34.34.1 +- **Bonding**: LACP (802.3ad) using eth1 and eth2 +- **Connected to**: leaf3 (eth1) and leaf4 (eth1) + +### Host3 (VTEP3 - L2 VXLAN on VLAN 40) +- **Location**: configs/host3-interfaces +- **IP Address**: 10.40.40.103/24 +- **VLAN**: 40 (tagged) +- **Bonding**: LACP (802.3ad) using eth1 and eth2 +- **Connected to**: leaf5 (eth1) and leaf6 (eth1) + +### Host4 (VTEP4 - L3 VXLAN in VRF gold on VLAN 78) +- **Location**: configs/host4-interfaces +- **IP Address**: 10.78.78.104/24 +- **VLAN**: 78 (tagged) +- **Gateway**: 10.78.78.1 +- **Bonding**: LACP (802.3ad) using eth1 and eth2 +- **Connected to**: leaf7 (eth1) and leaf8 (eth1) + +## Interface File Structure +All host interface files follow this pattern: + +``` +auto lo +iface lo inet loopback + +auto bond0 +iface bond0 inet manual + use bond + bond-slaves eth1 eth2 + bond-mode 802.3ad + bond-miimon 100 + bond-lacp-rate fast + up ip link set $IFACE up + +auto bond0. +iface bond0. inet static + address + netmask 255.255.255.0 + [gateway ] # Only for L3 VXLAN hosts + vlan-raw-device bond0 + up ip link set $IFACE up +``` + +## Key Configuration Points + +### Alpine Linux Bonding Syntax +- Uses `use bond` directive (specific to ifupdown-ng in Alpine Linux) +- LACP mode configured via `bond-mode 802.3ad` +- Fast LACP rate for quicker failover detection + +### VLAN Tagging +- VLANs are tagged by the hosts using subinterfaces (bond0.40, bond0.34, bond0.78) +- Switch ports are configured in trunk mode, NOT access mode +- This prevents layer 2/3 mismatches that would break VXLAN connectivity + +### Topology Integration +The topology file (evpn-lab.clab.yml) mounts these files using binds: +```yaml +host1: + kind: linux + image: alpine:latest + binds: + - configs/host1-interfaces:/etc/network/interfaces +``` + +## Testing Connectivity + +### L2 VXLAN (VLAN 40) +Host1 and Host3 should be able to ping each other: +```bash +# From host1 +ping 10.40.40.103 + +# From host3 +ping 10.40.40.101 +``` + +### L3 VXLAN (VRF gold) +Host2 and Host4 should be able to ping each other: +```bash +# From host2 +ping 10.78.78.104 + +# From host4 +ping 10.34.34.102 +``` + +## Verification Commands + +### On hosts - Check bonding status: +```bash +cat /proc/net/bonding/bond0 +ip link show bond0 +ip addr show bond0. +``` + +### On leaf switches - Check MLAG port-channels: +```bash +show mlag interfaces +show port-channel summary +show interfaces status +``` + +### On leaf switches - Check VXLAN: +```bash +show vxlan vtep +show vxlan address-table +show bgp evpn route-type mac-ip +show bgp evpn route-type ip-prefix ipv4 +```