While waiting for some compute resources to be delivered, I was preparing configs for new labs once the resources arrived. This included the setup of an Internet eXchange Point (IXP). The featured image of this post shows the lab topology.

Creating and running the lab

Create the lab topology file ix-sim.clab.yaml :

name: ix-sim
topology:
  nodes:
    ix-rs-1:
      kind: ceos
      image: ceos:4.29.2F
    cl-1:
      kind: ceos
      image: ceos:4.29.2F
    cl-2:
      kind: ceos
      image: ceos:4.29.2F
    cl-3:
      kind: ceos
      image: ceos:4.29.2F
  links:
    - endpoints: ["ix-rs-1:eth1", "cl-1:eth1"]
    - endpoints: ["ix-rs-1:eth2", "cl-2:eth1"]
    - endpoints: ["ix-rs-1:eth3", "cl-3:eth1"]
    - endpoints: ["cl-1:eth2", "cl-3:eth2"]

Launch the lab:

[superman@fra-clab-1 ix-sim]$ sudo clab deploy
INFO[0000] Containerlab v0.38.0 started
INFO[0000] Parsing & checking topology file: ix-sim.clab.yaml
INFO[0000] Creating lab directory: /home/superman/labs/ix-sim/clab-ix-sim
INFO[0001] Creating docker network: Name="clab", IPv4Subnet="172.20.20.0/24", IPv6Subnet="2001:172:20:20::/64", MTU="1500"
INFO[0001] Creating container: "cl-3"
INFO[0001] Creating container: "cl-2"
INFO[0001] Creating container: "ix-rs-1"
INFO[0001] Creating container: "cl-1"
INFO[0003] Creating virtual wire: cl-1:eth2 <--> cl-3:eth2
INFO[0003] Creating virtual wire: ix-rs-1:eth2 <--> cl-2:eth1
INFO[0003] Creating virtual wire: ix-rs-1:eth1 <--> cl-1:eth1
INFO[0003] Creating virtual wire: ix-rs-1:eth3 <--> cl-3:eth1
INFO[0003] Running postdeploy actions for Arista cEOS 'ix-rs-1' node
INFO[0003] Running postdeploy actions for Arista cEOS 'cl-2' node
INFO[0003] Running postdeploy actions for Arista cEOS 'cl-1' node
INFO[0003] Running postdeploy actions for Arista cEOS 'cl-3' node
INFO[0096] Adding containerlab host entries to /etc/hosts file
+---+---------------------+--------------+--------------+------+---------+----------------+----------------------+
| # |        Name         | Container ID |    Image     | Kind |  State  |  IPv4 Address  |     IPv6 Address     |
+---+---------------------+--------------+--------------+------+---------+----------------+----------------------+
| 1 | clab-ix-sim-cl-1    | edbf5ac01594 | ceos:4.29.2F | ceos | running | 172.20.20.4/24 | 2001:172:20:20::4/64 |
| 2 | clab-ix-sim-cl-2    | 33f961419cc6 | ceos:4.29.2F | ceos | running | 172.20.20.3/24 | 2001:172:20:20::3/64 |
| 3 | clab-ix-sim-cl-3    | efe1b5921a7d | ceos:4.29.2F | ceos | running | 172.20.20.5/24 | 2001:172:20:20::5/64 |
| 4 | clab-ix-sim-ix-rs-1 | 5f65dec0e456 | ceos:4.29.2F | ceos | running | 172.20.20.2/24 | 2001:172:20:20::2/64 |
+---+---------------------+--------------+--------------+------+---------+----------------+----------------------+
[superman@fra-clab-1 ix-sim]$

Initial Layer 3 config and reachability

The node ix-rs-1 will take act as a route server and switch providing access to the IXP. Initial config looks like:

<snip>
!
ip routing
!
hostname ix-rs-1
!
vlan 10
  name RS_PEER_GROUP_1
!
<snip>
!
interface Ethernet1
   description CUSTOMER
   switchport access vlan 10
!
interface Ethernet2
   description CUSTOMER
   switchport access vlan 10
!
interface Ethernet3
   description CUSTOMER
   switchport access vlan 10
!
interface Vlan10
   description RS_PEER_GROUP_1_GW
   ip address 100.64.1.1/24
!
<snip>

Configurations for CL-1,2,3 look like:

<snip>
!
ip routing
!
hostname cl-1
!
<snip>
interface Ethernet1
   description IX
   no switchport
   ip address 100.64.1.11/24
!
interface Ethernet2
   description CL-3
   no switchport
   ip address 100.64.254.1/30
!
interface Loopback1
   ip address 100.64.10.1/24
!
<snip>
<snip>
!
ip routing
!
hostname cl-2
!
<snip>
interface Ethernet1
   description IX
   no switchport
   ip address 100.64.1.21/24
!
interface Loopback1
   ip address 100.64.20.1/24
!
<snip>
<snip>
!
ip routing
!
hostname cl-3
!
<snip>
interface Ethernet1
   description IX
   no switchport
   ip address 100.64.1.31/24
!
interface Ethernet2
   description CL-1
   no switchport
   ip address 100.64.254.2/30
!
interface Loopback1
   ip address 100.64.30.1/24
!
<snip>

Verify Layer 3 reachability

ix-rs-1#ping 100.64.1.11
PING 100.64.1.11 (100.64.1.11) 72(100) bytes of data.
80 bytes from 100.64.1.11: icmp_seq=1 ttl=64 time=8.15 ms
80 bytes from 100.64.1.11: icmp_seq=2 ttl=64 time=5.52 ms
80 bytes from 100.64.1.11: icmp_seq=3 ttl=64 time=4.46 ms
80 bytes from 100.64.1.11: icmp_seq=4 ttl=64 time=4.78 ms
80 bytes from 100.64.1.11: icmp_seq=5 ttl=64 time=5.50 ms

--- 100.64.1.11 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 30ms
rtt min/avg/max/mdev = 4.465/5.688/8.157/1.302 ms, ipg/ewma 7.587/6.883 ms
ix-rs-1#ping 100.64.1.21
PING 100.64.1.21 (100.64.1.21) 72(100) bytes of data.
80 bytes from 100.64.1.21: icmp_seq=1 ttl=64 time=6.85 ms
80 bytes from 100.64.1.21: icmp_seq=2 ttl=64 time=4.91 ms
80 bytes from 100.64.1.21: icmp_seq=3 ttl=64 time=5.87 ms
80 bytes from 100.64.1.21: icmp_seq=4 ttl=64 time=6.76 ms
80 bytes from 100.64.1.21: icmp_seq=5 ttl=64 time=5.74 ms

--- 100.64.1.21 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 28ms
rtt min/avg/max/mdev = 4.919/6.033/6.858/0.718 ms, ipg/ewma 7.029/6.452 ms
ix-rs-1#ping 100.64.1.31
PING 100.64.1.31 (100.64.1.31) 72(100) bytes of data.
80 bytes from 100.64.1.31: icmp_seq=1 ttl=64 time=6.04 ms
80 bytes from 100.64.1.31: icmp_seq=2 ttl=64 time=4.61 ms
80 bytes from 100.64.1.31: icmp_seq=3 ttl=64 time=6.45 ms
80 bytes from 100.64.1.31: icmp_seq=4 ttl=64 time=4.69 ms
80 bytes from 100.64.1.31: icmp_seq=5 ttl=64 time=4.88 ms

--- 100.64.1.31 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 24ms
rtt min/avg/max/mdev = 4.615/5.337/6.450/0.759 ms, ipg/ewma 6.214/5.669 ms
ix-rs-1#

Part 2 will be linked here once done. Check it for bgp configs.

One Comment

Leave a Reply

Cookie Consent Banner by Real Cookie Banner