150 likes | 241 Views
Click Software Routers. Sarah Edwards GENI Project Office. Software Routers. Not wire-speed Easy to deploy Provide ability to implement new routing protocols over a L2 network fast MobilityFirst , Packet Cache, XIA An easy way to bandwidth limit your slice. Install scripts.
E N D
Click Software Routers Sarah Edwards GENI Project Office
Software Routers • Not wire-speed • Easy to deploy • Provide ability to implement new routing protocols over a L2 network fast • MobilityFirst, Packet Cache, XIA • An easy way to bandwidth limit your slice
Install scripts • Specify in the RSpec • Where to download software from • Usually comes with an install-script.sh • What commands to run at boot time • It runs in the context of a the “geni” user • It is not your user account • It does have sudo privileges
Hands On Exercise Run a non-IP multi-path router over layer 2 Reserve 6 VMs: 4 will be Click routers 2 will be end hosts Oddchecksums left Evenchecksums right
Part I: Design/Setup • Obtain Resources: Create a slice and reserve resources • Part II: Execute • Configure and Initialize Services: Configure the Click Routers • Execute Experiment: Use custom routing to forward traffic over multi-path topology • Part III: Finish • Teardown Experiment
For the Tutorial: Portal Account with Omni GENI Portal AM Slice : click<initials> Experimenter $ omni.pycreatesliveraliceslicemyRSpec.xml INFO:omni:Loadingconfig file omni_config INFO:omni:Using control framework pgeni INFO:omni:Sliceurn:publicid:IDN+pgeni.gpolab. expires within 1 day on 2011-07-07 INFO:omni:Creating sliver(s) from rspec file INFO:omni:Writing result of createsliver for INFO:omni:Writing to ‘aliceslice-manifest-rspe INFO:omni: ----------------------------------- INFO:omni: Completed createsliver: Options as run: aggregate: https://www.emulab. framework: pgeni native: True Args: createsliveraliceslicemyRSpec.xml Result Summary: Slice urn:publicid:IDN+pgeni Reserved resources on https://www.emulab.net/p Saved createsliver results to aliceslice-man INFO:omni: =================================== o m n i Sliver You InstaGENI Aggregate http://www.gpolab.bbn.com/exp/ClickExampleExperiment/click.rspec
… in the meantime … Install Scripts • specified in the rspec • It needs to be available over http • does not run as “you”, but has sudo • it runs at every boot • $PATH might not be set • OS-dependent • Write script in language of choice • Upload script • Test script • Add to rspec
Install Scripts: Look inside # 1. Change to dir. with installed software cd /local # 2. Check if first time if [ ! -f "./installed.txt" ] then #### Create the file #### sudo touch "./installed.txt” #### Run one-time commands #### #2a. Install necessary packages #2b. Install custom software #2c. Reboot if needed fi #3. Run Boot-time commands #3a. Start common services hn=`echo $HOSTNAME | cut -d'.' -f 1` if [ $hn == "server" ] then #4. Host specific commands fi 1. Download install script 2. Identify the 4 sections
Experiment Workflow • Part I: Design/Setup • Obtain Resources: Create a slice and reserve resources • Part II: Execute • Configure and Initialize Services: Configure the Click Routers • Execute Experiment: Use custom routing to forward traffic over multi-path topology • Part III: Finish • Teardown Experiment
Remote configuration of Click • Remotely invoke configuration script: extractClickConfig.py • parse manifest rspec • extract information about topology • create click.config • Remotely turn off IP in the routers IP
Experiment Workflow • Part I: Design/Setup • Obtain Resources: Create a slice and reserve resources • Part II: Execute • Configure and Initialize Services: Configure the Click Routers • Execute Experiment: Use custom routing to forward traffic over multi-path topology • Part III: Finish • Teardown Experiment
Send Traffic Start routers Send packet using netcat Right Top HostA Bottom HostB IP Left
Click Config File route :: Classifier(27/01%01,-); modify :: Unstrip(2) -> StoreData(0, "AliceWasHere3546") -> route; FromDevice(eth3, PROMISC true) -> Classifier(12/0800) -> modify; route[0] -> left :: EtherEncap(0x7744, 00:04:23:b7:14:76, 00:04:23:b7:18:fa) -> SimpleQueue -> Print(outL) -> ToDevice(eth2); route[1]-> right :: EtherEncap(0x7744, 00:04:23:b7:1c:e0, 00:04:23:b7:19:2e) -> SimpleQueue -> Print(outR) -> ToDevice(eth4); restore:: SimpleQueue -> Strip(30) -> EtherEncap(0x800, 00:04:23:b7:14:77, 00:04:23:b7:20:00) -> ToDevice(eth3);
Experiment Workflow • Part I: Design/Setup • Setup: Omni with Multiple Users • Obtain Resources: Create a slice and reserve resources • Part II: Execute • Configure and Initialize Services: Configure the Click Routers • Execute Experiment: Use custom routing to forward traffic over multi-path topology • Part III: Finish • Teardown Experiment
Part III: Finish Experiment When your experiment is done, you should always release your resources. • Normally this is when you would archive your data • Delete your slivers at each aggregate sliver credentials sliver project RSpec resource user AM API aggregate certificate slice