Exercise 3 - break the ASN design on purpose

1) Move spine2 to AS 65001 (spine2 vtysh). The ASN can't be edited in place: delete and re-create.

configure terminal
no router bgp 65000
router bgp 65001
 bgp router-id 10.0.0.2
 bgp bestpath as-path multipath-relax
 neighbor FABRIC peer-group
 neighbor FABRIC remote-as external
 neighbor eth0 interface peer-group FABRIC
 neighbor eth1 interface peer-group FABRIC
 neighbor eth2 interface peer-group FABRIC
 address-family ipv4 unicast
  network 10.0.0.2/32
 exit-address-family
end

(a) spine2# show bgp ipv4 unicast 172.16.3.0/24
    Paths: (3 available)   65103 (direct, best)
                           65101 65000 65103   (leaf1 -> spine1 -> leaf3)
                           65102 65000 65103   (leaf2 -> spine1 -> leaf3)
    Before, spine2 dropped those as loops because its own AS 65000 was in the path.
    These "valley" paths (spine -> leaf -> spine) are what RFC 7938 designs away.
    (With leaf4 from exercise 1 you get 4 paths.)

(b) The leaves need no change: "remote-as external" means "any AS that isn't mine".

(c) leaf1: remove multipath-relax and soft-clear
configure terminal
router bgp 65101
 no bgp bestpath as-path multipath-relax
end
clear bgp * soft
    leaf1# show ip route 172.16.3.0/24  -> ONE next hop.
    Without multipath-relax BGP only load-balances paths with IDENTICAL AS paths:
    65000 65103 vs 65001 65103 are the same length but different, so only one wins.
    Put it back: router bgp 65101 / bgp bestpath as-path multipath-relax / clear bgp * soft

Two sentences: RFC 7938 puts all spines in one AS so a route can never pass through two
spines, which removes valley paths and path hunting. It also makes every leaf-to-leaf path
the same AS path, so ECMP just works.

Restore: delete router bgp 65001 and paste configs/spine2.frr.conf's "router bgp 65000" block
back (or just redeploy / re-import the lab).
Tested on GNS3 and containerlab: 3 paths on spine2; leaf1 ECMP 2 -> 1 with relax off.
