# Seis sistemas autónomos, un router por AS. El router rN es el AS 6460N.
#
#                r5 (64605) ======== r6 (64606)        ===== peer
#                  |                  /      \         |     proveedor arriba,
#                  |                 /        \        |     cliente abajo
#              r2 (64602)       r4 (64604)   r3 (64603) --- h3
#                     \           /
#                      \         /
#                       r1 (64601) --- h1
#
# Cada AS es owner de 100.64.N.0/24 y lo anuncia entero. Dentro de ese bloque, la
# parte baja (100.64.N.0/25) es para hosts y la alta (100.64.N.128/25) para enlaces.
# Un enlace entre dos AS se numera con el bloque del proveedor; en el enlace de
# peers, con el de r5. 100.64.N.1 siempre es una dirección del router rN.
#
# Esta topología no tiene políticas: los frr.conf solo abren las sesiones.
name: w06-ases
mgmt:
  network: redes-w06-ases
  ipv4-subnet: 172.90.6.0/26
  ipv6-subnet: 3fff:172:90:6:1::/80
topology:
  defaults:
    kind: linux
    image: redes-router
    # Se borra la ruta por defecto de gestión (eth0): sin esto, lo que un nodo no
    # sabe a dónde mandar se iría por Docker en vez de fallar.
    exec:
      - ip route del default
      - ip -6 route del default
  nodes:
    r1:
      binds: [r1/frr.conf:/etc/frr/frr.conf:ro]
    r2:
      binds: [r2/frr.conf:/etc/frr/frr.conf:ro]
    r3:
      binds: [r3/frr.conf:/etc/frr/frr.conf:ro]
    r4:
      binds: [r4/frr.conf:/etc/frr/frr.conf:ro]
    r5:
      binds: [r5/frr.conf:/etc/frr/frr.conf:ro]
    r6:
      binds: [r6/frr.conf:/etc/frr/frr.conf:ro]
    h1:
      exec:
        - ip route del default
        - ip -6 route del default
        - ip addr add 100.64.1.10/25 dev eth1
        - ip route add default via 100.64.1.1
    h3:
      exec:
        - ip route del default
        - ip -6 route del default
        - ip addr add 100.64.3.10/25 dev eth1
        - ip route add default via 100.64.3.1
  # Containerlab usa MTU 9500 por defecto; aquí queremos el valor de Ethernet.
  links:
    - endpoints: ["r1:eth1", "h1:eth1"]
      mtu: 1500
    - endpoints: ["r1:eth2", "r2:eth1"]
      mtu: 1500
    - endpoints: ["r1:eth3", "r4:eth1"]
      mtu: 1500
    - endpoints: ["r2:eth2", "r5:eth1"]
      mtu: 1500
    - endpoints: ["r4:eth2", "r6:eth1"]
      mtu: 1500
    - endpoints: ["r5:eth2", "r6:eth2"]
      mtu: 1500
    - endpoints: ["r3:eth1", "r6:eth3"]
      mtu: 1500
    - endpoints: ["r3:eth2", "h3:eth1"]
      mtu: 1500
