| #!/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} |
| |