# Demostración de la semana 3: tres switches en triángulo. Se levanta con el ciclo
# abierto (eth3 de sw1 apagada) y con STP desactivado. Cada enlace entre switches tiene
# 5 ms de retardo: una tormenta de broadcast sigue siendo una tormenta, pero a un ritmo
# que no se come el procesador de la laptop. No quiten ese retardo.
name: w03-loop
mgmt:
  network: redes-w03-loop
  ipv4-subnet: 172.90.3.128/26
  ipv6-subnet: 3fff:172:90:3:c::/80
topology:
  defaults:
    kind: linux
    image: redes-router
    sysctls:
      net.ipv6.conf.all.disable_ipv6: 1
      net.ipv6.conf.default.disable_ipv6: 1
  nodes:
    sw1:
      exec:
        - ip link set eth3 down
        - tc qdisc add dev eth2 root netem delay 5ms
        - tc qdisc add dev eth3 root netem delay 5ms
        - ip link add br0 type bridge priority 4096 forward_delay 200
        - sysctl -q -w net.ipv6.conf.br0.disable_ipv6=1
        - ip link set eth1 master br0
        - ip link set eth2 master br0
        - ip link set eth3 master br0
        - ip link set br0 up
    sw2:
      exec:
        - tc qdisc add dev eth2 root netem delay 5ms
        - tc qdisc add dev eth3 root netem delay 5ms
        - ip link add br0 type bridge priority 8192 forward_delay 200
        - sysctl -q -w net.ipv6.conf.br0.disable_ipv6=1
        - ip link set eth1 master br0
        - ip link set eth2 master br0
        - ip link set eth3 master br0
        - ip link set br0 up
    sw3:
      exec:
        - tc qdisc add dev eth1 root netem delay 5ms
        - tc qdisc add dev eth2 root netem delay 5ms
        - ip link add br0 type bridge priority 12288 forward_delay 200
        - sysctl -q -w net.ipv6.conf.br0.disable_ipv6=1
        - ip link set eth1 master br0
        - ip link set eth2 master br0
        - ip link set br0 up
    h1:
      exec: ["ip addr add 10.203.0.1/24 dev eth1"]
    h2:
      exec: ["ip addr add 10.203.0.2/24 dev eth1"]
  links:
    - endpoints: ["sw1:eth2", "sw2:eth3"]
    - endpoints: ["sw2:eth2", "sw3:eth1"]
    - endpoints: ["sw3:eth2", "sw1:eth3"]
    - type: veth
      endpoints:
        - {node: sw1, interface: eth1}
        - {node: h1, interface: eth1, mac: "02:00:00:00:00:01"}
    - type: veth
      endpoints:
        - {node: sw2, interface: eth1}
        - {node: h2, interface: eth1, mac: "02:00:00:00:00:02"}
