Skip to content

Commit b8b85ea

Browse files
committed
Changes before the presentation at HL2025 v2
* Fixed a typo in the README.md * Added instructions for setting up an edge router for the demo stand * Added a full network diagram of the demo stand * Added configuration for CEOS * Fixed some of the parameters in evpn config for the demo stand
1 parent 7842d4e commit b8b85ea

7 files changed

Lines changed: 186 additions & 5 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ The details of the EVPN's operation and evpn-connector daemon workflow are descr
2727

2828
### Prerequisites
2929

30-
* **Python 3.8
30+
* **Python 3.8**
3131
* **System Dependencies:**
3232
* `gobgp` (for interaction via BGP within the EVPN control plane)
3333
* `openvswitch-switch` (for interaction via VXLAN within the EVPN data plane)
@@ -133,5 +133,5 @@ Start the service by specifying the path to your configuration file:
133133
2. **Run evpn-connector**
134134
```bash
135135
source evpn/bin/activate
136-
evpn-connector --config-file ~/evpn/config/evpn_connector.cfg --daemon-configs_dir "/var/lib/evpn_connector/client_configs/"
136+
evpn-connector --config-file /etc/evpn_connector/evpn_connector.conf --daemon-configs_dir "/var/lib/evpn_connector/client_configs/"
137137
```

docs/demo/PREPARE_BORDER.md

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
Configuring border for demo env:
2+
3+
Full network scheme ![here](./demo_env_network_scheme.png)
4+
5+
1. Download Debian 12 nocloud image:
6+
```bash
7+
wget https://cdimage.debian.org/images/cloud/bookworm/latest/debian-12-nocloud-amd64.qcow2
8+
```
9+
2. Run virtual machine via virt-manager or qemu:
10+
```
11+
Hostname: border, ip_address: 10.10.10.3 on enp1s0
12+
```
13+
3. Install packages:
14+
```bash
15+
sudo apt update
16+
sudo apt install screen tcpdump jq curl git wget
17+
```
18+
4. Run virtual machine for border router
19+
```
20+
Hostname: border, ip_address: 10.10.10.3
21+
22+
5. Install docker on border router
23+
```bash
24+
sudo apt-get install ca-certificates curl
25+
sudo install -m 0755 -d /etc/apt/keyrings
26+
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
27+
sudo chmod a+r /etc/apt/keyrings/docker.asc
28+
echo \
29+
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
30+
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
31+
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
32+
sudo apt-get update
33+
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
34+
```
35+
6. Download CEOS image (cEOS64-lab-4.34.3M.tar) from [Arista oficial repo](https://www.arista.com/en/support/software-download)
36+
37+
7. Import image to docker
38+
```bash
39+
docker import cEOS64-lab-4.34.3M.tar ceos:4.34.3M
40+
```
41+
8. Run CEOS container
42+
```bash
43+
docker run --name ceos --network bridge --privileged -p 4443:443 -td --rm -e INTFTYPE=eth -e ETBA=1 -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 -e CEOS=1 -e EOS_PLATFORM=ceoslab -e container=docker -e MAPETH0=1 -e MGMT_INTF=enp1s0 ceos:4.34.3M /sbin/init systemd.setenv=INTFTYPE=eth systemd.setenv=ETBA=1 systemd.setenv=SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 systemd.setenv=CEOS=1 systemd.setenv=EOS_PLATFORM=ceoslab systemd.setenv=container=docker systemd.setenv=MAPETH0=1 systemd.setenv=MGMT_INTF=enp1s0 -e
44+
```
45+
9. Add veth pairs to CEOS container netns
46+
```bash
47+
sudo ip net attach ceos "$(docker inspect -f '{{.State.Pid}}' ceos)"
48+
ip link add veth-11 type veth peer name eth12
49+
ip link set netns ceos eth12
50+
ip link set veth-11 up
51+
ip net exec ceos ip link set eth12 up
52+
ip link add veth22 type veth peer name eth22
53+
ip link set veth22 up
54+
ip link set netns ceos eth22
55+
ip net exec ceos ip link set eth22 up
56+
```
57+
10. Configure routing in main netns
58+
```bash
59+
ip address add 10.20.20.1/24 dev veth-11
60+
ip address add 10.30.30.1/24 dev veth22
61+
ip route add 10.40.40.0/24 via 10.20.20.2
62+
ip route add 172.16.0.0/24 via 10.30.30.2
63+
iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o enp1s0 -j MASQUERADE
64+
iptables -t nat -A POSTROUTING -s 10.30.30.0/24 -o enp1s0 -j MASQUERADE
65+
echo 1 > /proc/sys/net/ipv4/ip_forward
66+
iptables -P FORWARD ACCEPT
67+
```
68+
11. Connecting to CEOS CLI
69+
```bash
70+
docker exec -it ceos Cli
71+
```
72+
12. Configuring CEOS router
73+
```bash
74+
> no aaa root
75+
> enable
76+
# agent Fru terminate
77+
# agent Ebra terminate
78+
# configure
79+
(config)# <paste ./border/ceos_config.txt here>
80+
(config)# exit
81+
# write mem
82+
```
Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ Configuring demo env:
66
```
77
2. Run virtual machines via virt-manager or qemu:
88
```
9-
Hostname: compute1, ip_address: 10.10.10.1
10-
Hostname: compute2, ip_address: 10.10.10.2
9+
Hostname: compute1, ip_address: 10.10.10.1 on enp1s0
10+
Hostname: compute2, ip_address: 10.10.10.2 on enp1s0
1111
```
1212
3. Install packages:
1313
```bash
@@ -59,4 +59,11 @@ Configuring demo env:
5959
```
6060
11. Copy configs for all daemons from repo (for each compute host separately):
6161
```bash
62-
cp -r evpn_connector/docs/source/demo/compute1/* ~/
62+
cp -r evpn_connector/docs/demo/compute1/* ~/
63+
64+
12. (Optional) Add routing to work with the border router
65+
```bash
66+
ip route add 10.20.20.0/24 via 10.10.10.3
67+
ip route add 10.30.30.0/24 via 10.10.10.3
68+
ip route add 10.40.40.0/24 via 10.10.10.3
69+
```

docs/demo/border/ceos_config.txt

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
! Command: show running-config
2+
! device: ceos (cEOSLab, EOS-4.34.3M-44102281.4343M (engineering build))
3+
!
4+
no aaa root
5+
!
6+
no service interface inactive port-id allocation disabled
7+
!
8+
transceiver qsfp default-mode 4x10G
9+
!
10+
service routing protocols model multi-agent
11+
!
12+
agent PowerManager shutdown
13+
agent LedPolicy shutdown
14+
agent Thermostat shutdown
15+
agent PowerFuse shutdown
16+
agent StandbyCpld shutdown
17+
agent LicenseManager shutdown
18+
!
19+
hostname ceos
20+
!
21+
spanning-tree mode mstp
22+
!
23+
system l1
24+
unsupported speed action error
25+
unsupported error-correction action error
26+
!
27+
vrf instance ext
28+
rd 1:1
29+
!
30+
interface Ethernet12
31+
no switchport
32+
ip address 10.20.20.2/24
33+
!
34+
interface Ethernet22
35+
no switchport
36+
vrf ext
37+
ip address 10.30.30.2/24
38+
!
39+
interface Ethernet510
40+
!
41+
interface Loopback0
42+
ip address 10.40.40.1/32
43+
!
44+
interface Vxlan1
45+
vxlan source-interface Loopback0
46+
vxlan udp-port 4789
47+
vxlan vrf ext vni 10
48+
!
49+
ip routing
50+
ip routing vrf ext
51+
!
52+
ip route 10.10.10.0/24 10.20.20.1
53+
ip route vrf ext 0.0.0.0/0 10.30.30.1
54+
!
55+
router bgp 65300
56+
neighbor 10.10.10.1 remote-as 65100
57+
neighbor 10.10.10.1 ebgp-multihop 7
58+
neighbor 10.10.10.1 timers min-hold-time 3
59+
neighbor 10.10.10.1 idle-restart-timer 60
60+
neighbor 10.10.10.1 send-community extended
61+
neighbor 10.10.10.2 remote-as 65200
62+
neighbor 10.10.10.2 ebgp-multihop 7
63+
neighbor 10.10.10.2 timers min-hold-time 3
64+
neighbor 10.10.10.2 idle-restart-timer 60
65+
neighbor 10.10.10.2 send-community extended
66+
!
67+
address-family evpn
68+
neighbor 10.10.10.1 activate
69+
neighbor 10.10.10.2 activate
70+
!
71+
vrf ext
72+
rd 10.30.30.2:10
73+
route-target import 65000:10
74+
route-target export 65000:10
75+
redistribute static
76+
!
77+
router multicast
78+
ipv4
79+
software-forwarding kernel
80+
!
81+
ipv6
82+
software-forwarding kernel
83+
!
84+
end

docs/demo/compute1/evpn_connector.cfg

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ grpc_timeout_sec = 100
2727
# Don't change this param without gobgp restart
2828
source_ip = "10.10.10.1"
2929
as_number = 1
30+
router_mac_type5 = "12:34:56:78:90:a1"
3031

3132
[ovs]
3233
switch_name = "evpn"
@@ -37,3 +38,6 @@ ovs_ofctl_bin_path="/usr/bin/ovs-ofctl"
3738

3839
[anycast]
3940
anycast_status_file = /tmp/anycast_status_file
41+
42+
[daemon]
43+
configs_dir = /root/vm_conf/

docs/demo/compute2/evpn_connector.cfg

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ grpc_timeout_sec = 100
2727
# Don't change this param without gobgp restart
2828
source_ip = "10.10.10.2"
2929
as_number = 1
30+
router_mac_type5 = "12:34:56:78:90:a2"
3031

3132
[ovs]
3233
switch_name = "evpn"
@@ -37,3 +38,6 @@ ovs_ofctl_bin_path="/usr/bin/ovs-ofctl"
3738

3839
[anycast]
3940
anycast_status_file = /tmp/anycast_status_file
41+
42+
[daemon]
43+
configs_dir = /root/vm_conf/
317 KB
Loading

0 commit comments

Comments
 (0)