diff --git a/README.md b/README.md index efe8784..8327392 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ # VXLAN-EVPN Lab with ContainerLab +## Sources + +- [ContainerLab](https://containerlab.dev) +- [Virtual Data Center Network](https://medium.com/@aifakhri/bgp-evpn-and-vxlan-configuration-with-arista-veos-b1046c24d046) + ## Overview This project provides a hands-on lab environment for understanding and experimenting with VXLAN-EVPN (Ethernet VPN) technology. Using ContainerLab, the lab sets up a VXLAN topology featuring 1 spine and 2 leaves nodes. The lab can be deployed directly on a PC with ContainerLab installed or through a DevContainer environment. @@ -27,7 +32,7 @@ The project directory is structured as follows: 2. **ContainerLab Setup:** - Direct Installation: Install ContainerLab on your host machine. - - Via DevContainer: Use the provided `devcontainer.json` to set up a ContainerLab environment. + - Via Terraform, documentation avalaible [here](https://github.com/MasqAs/AWS-ContainerLab-Deployment) 3. **Start the Lab:** - Navigate to the project directory. diff --git a/documentation/assets/images/diagrams/VXLAN.drawio b/documentation/assets/images/diagrams/VXLAN.drawio index 919bf9a..ef2a0ba 100644 --- a/documentation/assets/images/diagrams/VXLAN.drawio +++ b/documentation/assets/images/diagrams/VXLAN.drawio @@ -1,27 +1,27 @@ - + - + - + - + - + - + - + @@ -31,40 +31,73 @@ - + - + - - - - - - - - + + - + - - + + - - + + - + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/eos configuration/leaf1.md b/documentation/eos configuration/leaf1.md new file mode 100644 index 0000000..bd0d1b0 --- /dev/null +++ b/documentation/eos configuration/leaf1.md @@ -0,0 +1,57 @@ +# Leaf 1 configuration + +## Pre-config Setup + +Enable the multi-agent configuration on Arista switch to be able to use EVPN feature + +```config +service routing protocols model multi-agent +``` + +## IP address Configuration + +Configure need to match with [Lab Topology](../../lab_vxlan.yml) + +```yml +links: + - endpoints: ["spine1:eth1", "leaf1:eth1"] + - endpoints: ["spine1:eth2", "leaf2:eth1"] + - endpoints: ["leaf1:eth2", "host1:eth1"] + - endpoints: ["leaf2:eth2", "host2:eth1"] +``` + +That means : + +```config +interface Ethernet1 +description TO_SPINE01 +no switchport +ip address 10.1.1.1/31 +! +interface Ethernet2 +description TO_HOST1 +switchport mode trunk +! +interface Loopback0 +description VTEP +ip address 10.10.110.1/32 +! +``` + +## BGP Protocol + +```config +router bgp 65101 +router-id 10.10.110.1 +maximum-paths 4 ecmp 4 +neighbor SPINE_GROUP peer group +neighbor SPINE_GROUP allowas-in 1 +neighbor SPINE_GROUP ebgp-multihop 4 +neighbor SPINE_GROUP send-community extended +neighbor SPINE_GROUP maximum-routes 12000 +neighbor 10.1.1.0 peer group SPINE_GROUP +neighbor 10.1.1.0 remote-as 65001 +! +address-family ipv4 +neighbor 10.1.1.0 activate +``` diff --git a/documentation/eos configuration/leaf2.md b/documentation/eos configuration/leaf2.md new file mode 100644 index 0000000..1b5d76a --- /dev/null +++ b/documentation/eos configuration/leaf2.md @@ -0,0 +1,57 @@ +# Leaf 2 configuration + +## Pre-config Setup + +Enable the multi-agent configuration on Arista switch to be able to use EVPN feature + +```config +service routing protocols model multi-agent +``` + +## IP address Configuration + +Configure need to match with [Lab Topology](../../lab_vxlan.yml) + +```yml +links: + - endpoints: ["spine1:eth1", "leaf1:eth1"] + - endpoints: ["spine1:eth2", "leaf2:eth1"] + - endpoints: ["leaf1:eth2", "host1:eth1"] + - endpoints: ["leaf2:eth2", "host2:eth1"] +``` + +That means : + +```config +interface Ethernet1 +description TO_SPINE01 +no switchport +ip address 10.1.1.3/31 +! +interface Ethernet2 +description TO_HOST2 +switchport mode trunk +! +interface Loopback0 +description VTEP +ip address 10.10.110.2/32 +! +``` + +## BGP Protocol + +```config +router bgp 65102 +router-id 10.10.110.2 +maximum-paths 4 ecmp 4 +neighbor SPINE_GROUP peer group +neighbor SPINE_GROUP allowas-in 1 +neighbor SPINE_GROUP ebgp-multihop 4 +neighbor SPINE_GROUP send-community extended +neighbor SPINE_GROUP maximum-routes 12000 +neighbor 10.1.1.2 peer group SPINE_GROUP +neighbor 10.1.1.2 remote-as 65001 +! +address-family ipv4 +neighbor 10.1.1.0 activate +``` diff --git a/documentation/eos configuration/spine1.md b/documentation/eos configuration/spine1.md new file mode 100644 index 0000000..c6e5fbc --- /dev/null +++ b/documentation/eos configuration/spine1.md @@ -0,0 +1,56 @@ +# Spine 1 configuration + +## Pre-config Setup + +Enable the multi-agent configuration on Arista switch to be able to use EVPN feature + +```config +service routing protocols model multi-agent +``` + +## IP address Configuration + +Configure need to match with [Lab Topology](../../lab_vxlan.yml) + +```yml +links: + - endpoints: ["spine1:eth1", "leaf1:eth1"] + - endpoints: ["spine1:eth2", "leaf2:eth1"] + - endpoints: ["leaf1:eth2", "host1:eth1"] + - endpoints: ["leaf2:eth2", "host2:eth1"] +``` + +That means : + +```config +interface Ethernet1 +description TO_LEAF01 +no switchport +ip address 10.1.1.0/31 +! +interface Ethernet2 +description TO_LEAF02 +no switchport +ip address 10.1.1.2/31 +``` + +## BGP Protocol + +```config +router bgp 65001 +router-id 10.10.100.1 +maximum-paths 4 ecmp 4 +neighbor LEAF_GROUP peer group +neighbor LEAF_GROUP allowas-in 1 +neighbor LEAF_GROUP ebgp-multihop 4 +neighbor LEAF_GROUP send-community extended +neighbor LEAF_GROUP maximum-routes 12000 +neighbor 10.1.1.1 peer group LEAF_GROUP +neighbor 10.1.1.1 remote-as 65101 +neighbor 10.1.1.3 peer group LEAF_GROUP +neighbor 10.1.1.3 remote-as 65102 +! +address-family ipv4 +neighbor 10.1.1.1 activate +neighbor 10.1.1.3 activate +``` \ No newline at end of file diff --git a/hosts/h1_interfaces b/hosts/h1_interfaces index 588f9a7..c96d347 100644 --- a/hosts/h1_interfaces +++ b/hosts/h1_interfaces @@ -3,5 +3,6 @@ iface lo inet loopback auto eth1 iface eth1 inet static - address 10.100.100.1 - netmask 255.255.255.0 \ No newline at end of file + address 10.10.120.10 + netmask 255.255.255.0 + gateway 10.10.120.1 \ No newline at end of file diff --git a/hosts/h2_interfaces b/hosts/h2_interfaces index 5883945..e51a778 100644 --- a/hosts/h2_interfaces +++ b/hosts/h2_interfaces @@ -3,5 +3,6 @@ iface lo inet loopback auto eth1 iface eth1 inet static - address 10.100.100.2 - netmask 255.255.255.0 \ No newline at end of file + address 10.10.120.20 + netmask 255.255.255.0 + gateway 10.10.120.1 \ No newline at end of file