This project is used to synthesize benchmarks (large fattree topologies configured with bgp/ospf with shortest-path or valley-free routing policy) for S2 (ACM SIGCOMM 2025). It builds on the ACORN benchmark with some debugging and adjustment.
For OSPF fattrees, there's no difference between shortest-path and valley-free.
In the following, we use x to represent the id of each router (i.e., the number after '-' in the router name. For example, the id of core-0 is 0).
For each edge router:
- One Loopback interface (70.0.x.0/32).
- Several Serial interfaces (10.0.x.?) to connect to aggregation routers.
- Several Ethernet interfaces (70.0.x.?) towards hosts.
One static route against 70.0.x.0/24.
Passive interfaces: Loopback and Ethernet interfaces.
Network: 10.0.0.0/8
Redistribute: static routes
For each aggregation router:
- One Loopback interface (70.0.x.0/32).
- Several Serial interfaces (10.0.x.?) to connect to edge, core and other aggregation routers.
Passive interfaces: Loopback interface.
Network: 10.0.0.0/8
For each core router:
- One Loopback interface (70.0.x.0/32).
- Several Serial interfaces (10.0.x.?) to connect to aggregation routers.
Passive interfaces: Loopback interface.
Network: 10.0.0.0/8
For BGP fattrees, the interface configurations of each router is the same with OSPF fattrees. However, shortest-path fattrees and valley-free fattrees differ in BGP configurations.
- The AS Number of each router equals its id.
bgp bestpath as-path multipath-relax.send-communityenabled for every neighbor.- Each edge router networks a /24 subnet (i.e., 70.0.x.0/24).
Besides basic BGP configurations as in shortest-path, there are route-maps on edge and aggregation routers.
Route-map towards aggregation routers:
If the router is the destination:
router bgp xxx
neighbor 10.0.x.x remote-as x
neighbor 10.0.x.x send-community
neighbor 10.0.x.x route-map init_dest out
!
route-map init_dest permit 10
set community 650:100
else:
router bgp xxx
neighbor 10.0.x.x remote-as x
neighbor 10.0.x.x send-community
neighbor 10.0.x.x route-map filter_comm1 out
!
ip community-list 1 permit 650:100
!
route-map filter_comm1 permit 10
match community 1
set community 650:100
Route-map towards edge routers:
router bgp xxx
neighbor 10.0.x.x remote-as x
neighbor 10.0.x.x send-community
neighbor 10.0.x.x route-map set_communities out
!
ip community-list 1 permit 650:100
ip community-list 2 permit 650:200
!
route-map set_communities permit 10
match community 1
set community 650:200
route-map set_communities permit 20
match community 2
set community 650:300
route-map set_communities permit 30
set community 650:400
Route-map towards core routers:
router bgp xxx
neighbor 10.0.x.x remote-as x
neighbor 10.0.x.x send-community
neighbor 10.0.x.x route-map filter_comm out
!
ip community-list 1 permit 650:100
ip community-list 2 permit 650:200
!
route-map filter_comm permit 10
match community 1
set community 650:200
In general, only one BGP route generated by the destination edge router is propagated through the fattree topology, and it traverses no valley paths (e.g., edge6 -> aggregation4 -> edge7 -> aggregation5 -> core0 -> ...) because of the route-maps.