blob: f8eb3f0e29bb3663d0adda7d8f6336203fe6bd1d [file] [log] [blame]
#!/bin/bash
# -----------------------------------------------------------------------------
# Creates a spine-leaf fabric with large number of hosts using null providers
# -----------------------------------------------------------------------------
# config
node=${1:-$OCI}
# Create the script of ONOS commands first and then execute it all at once.
export CMDS="/tmp/fab-onos.cmds"
rm $CMDS
function sim {
echo "$@" >> $CMDS
}
# Generate the recipe using the following:
# 2 spines, can potentially be few more
# 12 leaves in total
#     2 leaf pair
#     8 non-paired
# Host per leaf up to 1K
spinePorts=48
leafPorts=64
accessPorts=128
# Create spines
for spine in {1..2}; do
sim "null-create-device switch Spine-${spine} ${spinePorts}"
done
# Create 2 leaf pairs with dual links to the spines and a link between the pair
for pair in A B; do
sim "null-create-device switch Leaf-${pair}1 ${leafPorts}"
sim "null-create-device switch Leaf-${pair}2 ${leafPorts}"
sim "null-create-link direct Leaf-${pair}1 Leaf-${pair}2"
for spine in {1..2}; do
for link in {1..2}; do
sim "null-create-link direct Spine-${spine} Leaf-${pair}1"
sim "null-create-link direct Spine-${spine} Leaf-${pair}2"
done
done
# Create hosts for each leaf group; multi-homed to each leaf in the pair
[ $pair = A ] && pn=1 || pn=2
for host in {1..10}; do
sim "null-create-host Leaf-${pair}1,Leaf-${pair}2 10.${pn}.1.${host}"
done
done
# Create 8 single leafs with dual links to the spines
for access in {1..8}; do
sim "null-create-device switch Access-${access} ${accessPorts}"
for spine in {1..2}; do
for link in {1..2}; do
sim "null-create-link direct Spine-${spine} Access-${access}"
done
done
# Create hosts for each single leaf
for host in {1..50}; do
sim "null-create-host Access-${access} 10.0.${access}.${host}"
done
done
# make sure null providers are activated and any running simulation is stopped
onos ${node} app activate org.onosproject.null
sleep 2
onos ${node} null-simulation stop
# wait until the masterships clear-out across the cluster
while onos ${node} masters | grep -qv " 0 devices"; do sleep 1; done
# clean-up
onos ${node} wipe-out please
sleep 1
# start custom simulation..
onos ${node} null-simulation start custom
sleep 2
# Add devices, links, and hosts
cat $CMDS | onos ${node}