blob: 8993d2e49493ee0074ae8f2883a337be2827b031 [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
}
sim "wipe-out please"
spinePorts=48
leafPorts=64
accessPorts=1024
# 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..25}; do
sim "null-create-host Access-${access} 10.0.${access}.${host}"
done
done
# make sure null providers are activated
onos ${node} app activate org.onosproject.null
sleep 2
# start custom simulation..
onos ${node} null-simulation start custom
# 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
sleep 5
# Add devices, links, and hosts
cat $CMDS | onos ${node}