Sponsored by the National Science Foundation Click Software Routers Sarah Edwards GENI Project Office
Sponsored by the National Science Foundation 2 GREE-SC ‘14, July 21, 2014 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
Sponsored by the National Science Foundation 3 GREE-SC ‘14, July 21, 2014 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
Sponsored by the National Science Foundation 4 GREE-SC ‘14, July 21, 2014 Install scripts Automatic installation of software
Sponsored by the National Science Foundation 5 GREE-SC ‘14, July 21, 2014 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 Odd checksums left Even checksums right
Sponsored by the National Science Foundation 6 GREE-SC ‘14, July 21, 2014 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
Sponsored by the National Science Foundation 7 GREE-SC ‘14, July 21, 2014 Experimenter For the Tutorial: Portal Account with Omni Slice : click Sliver AM InstaGENI Aggregate You GENI Portal $ omni.py createsliver aliceslice myRSpec.xml INFO:omni:Loading config file omni_config INFO:omni:Using control framework pgeni INFO:omni:Slice urn:publicid:IDN+pgeni.gpolab. expires within 1 day on 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: framework: pgeni native: True Args: createsliver aliceslice myRSpec.xml Result Summary: Slice urn:publicid:IDN+pgeni Reserved resources on Saved createsliver results to aliceslice-man INFO:omni: =================================== omniomni
Sponsored by the National Science Foundation 8 GREE-SC ‘14, July 21, 2014 … 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 1.Write script in language of choice 2.Upload script 3.Test script 4.Add to rspec
Sponsored by the National Science Foundation 9 GREE-SC ‘14, July 21, 2014 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
Sponsored by the National Science Foundation 10 GREE-SC ‘14, July 21, 2014 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
Sponsored by the National Science Foundation 11 GREE-SC ‘14, July 21, 2014 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
Sponsored by the National Science Foundation 12 GREE-SC ‘14, July 21, 2014 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
Sponsored by the National Science Foundation 13 GREE-SC ‘14, July 21, 2014 Send Traffic Start routers Send packet using netcat HostA Top Bottom Left Right HostB
Sponsored by the National Science Foundation 14 GREE-SC ‘14, July 21, 2014 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);
Sponsored by the National Science Foundation 15 GREE-SC ‘14, July 21, :49: :ea:52:1b:47:ee (oui Unknown) > 02:25:07:e9:38:ba (oui Unknown), ethertype Unknown (0x7744), length 78: 0x0000: 416c AliceWasHere3546 0x0010: d91 0a0a x0020: 0a0a 0602 c1e5 5ff5 001c f _...x%howd 0x0030: 792c f f75 3f0a y,.how.are.you?. 21:49: :25:07:e9:38:ba (oui Unknown) > 02:ea:52:1b:47:ee (oui Unknown), ethertype Unknown (0x7744), length 87: 0x0000: 426f BobWasHere x0010: cb59 0a0a x0020: 0a0a ff5 c1e e9ef d20...._....%..I'm. 0x0030: e65 2e e 6b f72 fine..Thanks.for 0x0040: b 696e 672e 0a.asking..
Sponsored by the National Science Foundation 16 GREE-SC ‘14, July 21, 2014 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
Sponsored by the National Science Foundation 17 GREE-SC ‘14, July 21, 2014 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 slice project aggregate RSpec user resource sliver AM API sliver credentials certificate