GEC7: SPP Tutorial
description
Transcript of GEC7: SPP Tutorial
John DeHartComputer Science & EngineeringWashington University
www.arl.wustl.edu
GEC7: SPP Tutorial
Essence of a Good Tutorial Mix of Talks and Hands-On Exercises Hands-On Exercises in Reverse Order
» Give them something that works first• This lets them see how everything works
» Then have them change something in the working exercise» Then give them less and have them fill in some details» Etc.
Have people on hand to answer questions and give help during hands-on exercises
Provide handouts so attendees have printed directions for exercises and copies of slides
Working in groups vs. working as individuals Don’t try to do too much
What do we want to achieve? Experience GPE and NPE based Routers? GPE-based Router:
» Simple Pass-Through• Two Interfaces
– Packets from Interface 1 are sent out Interface 2 and vice versa NPE-based Router:
» Control from GPE» Local Delivery (LD) and Exception (EXC) traffic to GPE» Filters» Tunnels
What resources will be need? Predefined SPP Slices and Accounts? Pre-built tarfiles for attendees to download? Network Connections at site? Data generating nodes
» Planetlab?• Coordinating planetlab slices with our SPP slices• Difficulty with UDP Tunnels on PlanetLab nodes.
Agenda (3 Hrs, with 15 min. break) 0:00 – 0:20 Overview (Jon and/or Patrick)
» System Components» Software Components and Interfaces» Deployed nodes and configuration
0:20 – 0:45 Reserving and Using System Resources (Ken)» External Interfaces» NPE Resources» Command Line API» Traffic Monitoring
0:45 – 1:10 Creating and Running GPE-based App (Jon)» Forest
• Configuring external interfaces• Configuring and running Forest routers• Using Planetlab to generate traffic
1:10 – 1:25 Break 1:25 – 2:00 Creating and Running a Fastpath (John, Ken or Mart)
» IPv4• Similar to above
2:00 – 3:00 Hands-on Session (Jon, John, Ken, Patrick)
Reserving and Using System Resources Talk SPP Interfaces
» External» Internal
Reservations» FastPath» SlowPath» XML file
• Time• Resource Parameters• Interfaces
Command Line API• Leave ip_fpc and ip_fpd for FastPath talk or do here? Maybe mention here but leave details for later?
» scfg» sliced
Traffic Monitoring» FastPath
• Stats Indices• Queues
» SlowPath• User Data from File
Creating and Running a FastPath Configuring SPP Interfaces for a Fast Path
» Meta-Interfaces and UDP Tunnels Packet Formats
» UDP Tunnels» Meta-Net Packets
Starting a FastPath» Fast Path Daemon (e.g. ip_fpd)» Local Delivery and Exception traffic» Responding to ICMP Requests, etc.
Filters» MN Specific (e.g. ip_fpc)
Generating Data» UDP Tunnel Encapsulation
Traffic Monitoring» FastPath
• Stats Indices• Queues
Hands-On Session Each person works individually Use IPv4 Fastpath One router/slice per person Make tarfile available for them to download to their slice
» Includes script to run to configure router Make SPPmon and hardware file available for them to load on laptops Part 1
» Configure router to route a packet from their laptop back to their laptop» “ping” router from their laptops using a program we provide
• Needs to run on variety of laptop OS’s Part 2
» Group 3 participants routers to join their routers» Add filters to send packets the long way around
Part 3» Use traffic generators we have set up on Planetlab Nodes
• We provide script/program that they run that sends message to server on PL Node to start traffic generator.
» Manipulate Queue parameters» Monitor traffic
Tasks Tarfile for configuring Router SPPmon and hardware file for uses to load on laptop Ping program for sending and receiving packet to test router.
» Runs on users’ laptops (Linux, MacOS, Windows, Cygwin?)» Sends IP packet in UDP tunnel» Command line arguments to set tunnel and internal IP pkt headers» Receives IP packet in UDP tunnel and verifies that internal packet is same as sent.
Traffic generator start script/program client/server» Client
• Runs on users’ laptops (Linux, MacOS, Windows, Cygwin?)• Sends IP packet (no tunnel required) to planetlab node to start traffic generator• Command line arguments to set planetlab node IP and Port, traffic parameters (duration, rate, type,
IP hdrs)» Server
• Runs on planetlab nodes• Receives IP packet (no tunnel) • Starts traffic generator with parameters as set in packet payload
Handouts detailing what resources each participant should use.» SPP, Slice, planetlab node for traffic generator (IP, Port#), etc.
Finish conversion of current SPP Utilities (client, resrv, …)
Command Lines for Utility Programs sppPing –sppDA 1.2.3.4 –sppDPort 5555 –sppSPort 4444 –intDA
10.10.10.1 –intDPort 2222 –intSA 10.10.10.2 –intSPort 3333 startTraffic –plDA 1.2.3.4 –plDPort 5555 –numPkts 1000 –pps 1000 –
sppDA 1.2.3.4 –sppDPort 5555 –sppSPort 4444 –dataDA 10.10.10.1 –dataDPort 2222 –dataSA 10.10.10.2 –dataSPort 3333
User: gec01 SPP Host: spphost1.arl.wustl.edu SPP Host login id: gec01 SPP Host password: GEC7User01
SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS) Slice: wupl_GEC7_01 Private Key: ~/.ssh/gec01_id_rsa Passphrase: GEC7 User 01
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec01_id_rsa [email protected]
Neighbor User: gec01
User: gec02 SPP Host: spphost2.arl.wustl.edu SPP Host login id: gec02 SPP Host password: GEC7User02
SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH) Slice: wupl_GEC7_02 Private Key: ~/.ssh/gec02_id_rsa Passphrase: GEC7 User 02
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec02_id_rsa [email protected]
Neighbor User: gec01
User: gec03 SPP Host: spphost3.arl.wustl.edu SPP Host login id: gec03 SPP Host password: GEC7User03
SPP: sppsalt1.arl.wustl.edu (64.57.23.210) (SALT) Slice: wupl_GEC7_03 Private Key: ~/.ssh/gec03_id_rsa Passphrase: GEC7 User 03
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec03_id_rsa [email protected]
Neighbor User: gec04
User: gec04 SPP Host: spphost4.arl.wustl.edu SPP Host login id: gec04 SPP Host password: GEC7User04
SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS) Slice: wupl_GEC7_04 Private Key: ~/.ssh/gec04_id_rsa Passphrase: GEC7 User 04
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec04_id_rsa [email protected]
Neighbor User: gec03
User: gec05 SPP Host: spphost5.arl.wustl.edu SPP Host login id: gec05 SPP Host password: GEC7User05
SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH) Slice: wupl_GEC7_05 Private Key: ~/.ssh/gec05_id_rsa Passphrase: GEC7 User 05
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec05_id_rsa [email protected]
Neighbor User: gec06
User: gec06 SPP Host: spphost6.arl.wustl.edu SPP Host login id: gec06 SPP Host password: GEC7User06
SPP: sppsalt1.arl.wustl.edu (64.57.23.210) (SALT) Slice: wupl_GEC7_06 Private Key: ~/.ssh/gec06_id_rsa Passphrase: GEC7 User 06
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec06_id_rsa [email protected]
Neighbor User: gec05
User: gec07 SPP Host: spphost1.arl.wustl.edu SPP Host login id: gec07 SPP Host password: GEC7User07
SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS) Slice: wupl_GEC7_07 Private Key: ~/.ssh/gec07_id_rsa Passphrase: GEC7 User 07
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec07_id_rsa [email protected]
Neighbor User: gec08
User: gec08 SPP Host: spphost2.arl.wustl.edu SPP Host login id: gec08 SPP Host password: GEC7User08
SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH) Slice: wupl_GEC7_08 Private Key: ~/.ssh/gec08_id_rsa Passphrase: GEC7 User 08
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec08_id_rsa [email protected]
Neighbor User: gec07
User: gec09 SPP Host: spphost3.arl.wustl.edu SPP Host login id: gec09 SPP Host password: GEC7User09
SPP: sppsalt1.arl.wustl.edu (64.57.23.210) (SALT) Slice: wupl_GEC7_09 Private Key: ~/.ssh/gec09_id_rsa Passphrase: GEC7 User 09
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec09_id_rsa [email protected]
Neighbor User: gec10
User: gec10 SPP Host: spphost4.arl.wustl.edu SPP Host login id: gec10 SPP Host password: GEC7User10
SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS) Slice: wupl_GEC7_10 Private Key: ~/.ssh/gec10_id_rsa Passphrase: GEC7 User 10
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec10_id_rsa [email protected]
Neighbor User: gec09
User: gec11 SPP Host: spphost5.arl.wustl.edu SPP Host login id: gec02 SPP Host password: GEC7User02
SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH) Slice: wupl_GEC7_02 Private Key: ~/.ssh/gec02_id_rsa Passphrase: GEC7 User 02
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec11_id_rsa [email protected]
Neighbor User: gec12
User: gec12 SPP Host: spphost6.arl.wustl.edu SPP Host login id: gec12 SPP Host password: GEC7User12
SPP: sppsalt1.arl.wustl.edu (64.57.23.210) (SALT) Slice: wupl_GEC7_12 Private Key: ~/.ssh/gec12_id_rsa Passphrase: GEC7 User 12
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec12_id_rsa [email protected]
Neighbor User: gec11
User: gec13 SPP Host: spphost1.arl.wustl.edu SPP Host login id: gec13 SPP Host password: GEC7User13
SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS) Slice: wupl_GEC7_13 Private Key: ~/.ssh/gec13_id_rsa Passphrase: GEC7 User 13
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec13_id_rsa [email protected]
Neighbor User: gec14
User: gec14 SPP Host: spphost2.arl.wustl.edu SPP Host login id: gec14 SPP Host password: GEC7User14
SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH) Slice: wupl_GEC7_14 Private Key: ~/.ssh/gec14_id_rsa Passphrase: GEC7 User 14
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec14_id_rsa [email protected]
Neighbor User: gec13
User: gec15 SPP Host: spphost3.arl.wustl.edu SPP Host login id: gec15 SPP Host password: GEC7User15
SPP: sppsalt1.arl.wustl.edu (64.57.23.210) (SALT) Slice: wupl_GEC7_15 Private Key: ~/.ssh/gec15_id_rsa Passphrase: GEC7 User 15
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec15_id_rsa [email protected]
Neighbor User: gec16
User: gec16 SPP Host: spphost4.arl.wustl.edu SPP Host login id: gec16 SPP Host password: GEC7User16
SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS) Slice: wupl_GEC7_16 Private Key: ~/.ssh/gec16_id_rsa Passphrase: GEC7 User 16
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec16_id_rsa [email protected]
Neighbor User: gec15
User: gec17 SPP Host: spphost5.arl.wustl.edu SPP Host login id: gec17 SPP Host password: GEC7User17
SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH) Slice: wupl_GEC7_17 Private Key: ~/.ssh/gec17_id_rsa Passphrase: GEC7 User 17
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec17_id_rsa [email protected]
Neighbor User: gec18
User: gec18 SPP Host: spphost6.arl.wustl.edu SPP Host login id: gec18 SPP Host password: GEC7User18
SPP: sppsalt1.arl.wustl.edu (64.57.23.210) (SALT) Slice: wupl_GEC7_18 Private Key: ~/.ssh/gec18_id_rsa Passphrase: GEC7 User 18
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec18_id_rsa [email protected]
Neighbor User: gec17
User: gec19 SPP Host: spphost1.arl.wustl.edu SPP Host login id: gec19 SPP Host password: GEC7User19
SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS) Slice: wupl_GEC7_19 Private Key: ~/.ssh/gec19_id_rsa Passphrase: GEC7 User 19
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec19_id_rsa [email protected]
Neighbor User: gec20
User: gec20 SPP Host: spphost2.arl.wustl.edu SPP Host login id: gec20 SPP Host password: GEC7User20
SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH) Slice: wupl_GEC7_20 Private Key: ~/.ssh/gec20_id_rsa Passphrase: GEC7 User 20
» 1 space after each of GEC7 and User To ssh into your slice:
» ssh –i ~/.ssh/gec20_id_rsa [email protected]
Neighbor User: gec19
User: gec00 (Extra user, just in case) Slice: wupl_GEC7_00 Private Key: ~/.ssh/gec00_id_rsa Passphrase: GEC7 User 00
» 1 space after each of GEC7 and User SPP: sppsalt1.arl.wustl.edu (64.57.23.210) (SALT) SPP Host: spphost1.arl.wustl.edu SPP Host login id: gec00 SPP Host password: GEC7User00
To ssh into your slice:» ssh –i ~/.ssh/gec00_id_rsa [email protected]
Connectivity toNeighbor Rtr
Diagram of Your Network
NPEMetaRouter FastPath
(GPE)MetaRouter Control
ControlProcessor
spphost#
PlanetLabHost
PlanetLabHost
Background We will use the terms “Meta-Interface” and “UDP Tunnel”
interchangeably at times. A Meta-Interface is defined by a SPP IP Address and UDP Port Queues are bound to a Meta-Interface.
» There can be many queues bound to a Meta-Interface.» For our examples later we will have just one queue per meta-interface
Filters in our Meta-Router route packets from one Meta-Interface to another.» Filters are specific to a Meta-Interface.
Filters have three parts:» Key (type, rxmi, daddr, saddr, dport, sport, proto)
• type=0: Normal• type=1: Bypass, used for packets coming from the slow_path which have already been classified.
» Mask» Result (daddr, dport, qid, stats_index)
• The qid identifies the outgoing MI since queues are bound to MIs• The (daddr, dport) pair defines the other end of the MI for outgoing pkt.• The stats_index allows us to monitor the number of packets forwarded by this filter.
Background (Continued) Utilities and Daemons:
» scfg: Slice Config • Generic: Not specific to any Meta-Router• Add/remove meta interfaces (udp tunnels)• Bind queues to meta interfaces• Set queue parameters.
» ip_fpd: ipv4 fastpath daemon• Specific to the IPv4 Meta-Router• Create fast path• Process local delivery and exception packets
» ip_fpc: ipv4 fastpath config• Specific to the IPv4 Meta-Router• Add filters to fast path meta router
» sliced: slice daemon• Generic: Not specific to any Meta-Router• Process monitoring requests
Scripts» configureRouter.sh
• Builds the fast path and configures it.• Uses a lot of shell variables (may be confusing)
» teardownRouter.sh
Meta Router You will be working with an IPv4 Meta-Router
» Your meta-router will route based on the fields in the MN Packet Hdr Meta-Routers have Interfaces, called Meta-Interfaces Packets arrive at a Meta-Interface encapsulated in a UDP Tunnel
UDP/IP Tunnel Hdr
UDP/IP Payload(MN Packet)
MN Packet Hdr(IPv4 Hdr in this case)
MN Packet Payload(IPv4 Pkt payload in this case)
Neighbor Rtr Meta-interface
What we are going to do today:
NPEMR FastPath
(GPE)MR ControlPingit MI
TG Src MI
TG Dst
MI
pingpingit
ControlProcessor
spphost#
PlanetLabHost
PlanetLabHost Ping the Meta-Router
Route Traffic through Meta-Router
Ping the SPP
Route Traffic to/from neighbor Meta-Router
Neighbor Rtr Meta-interface
Addressing in your Meta-Network
NPEMR FastPath
(GPE)MR Control10.10.#.1Pingit MI
TG Src MI
TG Dst
MI
pingpingit
ControlProcessor
spphost#10.10.#.17
PlanetLabHost10.10.#.2
PlanetLabHost10.10.#.3
Where # is replaced by the numberFrom your user id.Example for user gec07:
10.10.7.1 (MR Address)10.10.7.17 (Pingit host)10.10.7.2 (TG Src PL
Host)10.10.7.3 (TG Dst PL
Host)
Current SPP Network
KANS SALT
WASH
64.57.23.178
64.57.23.18264.57.23.186
64.57.23.210
64.57.23.21464.57.23.218
64.5
7.23
.194
64.5
7.23
.198
64.5
7.23
.202
10.1.1.1 10.1.1.210.1.2.1 10.1.2.2
10.1.3.1
10.1.4.1
10.1.3.2
10.1.4.2
10.1.
7.210
.1.8.2
10.1.
7.110
.1.8.1
Each SPP has 3 Public Internet2 Interfaces.
Each SPP has 2 internal interfaces to each other SPP.
scfg –cmd get_ifaces[wupl_GEC7_01@kans_spp ~]$ scfg --cmd get_ifacesInterface list: [ifn 0, type "inet", linkBW 1000000Kbps, availBW 864488Kbps, ipAddr 64.57.23.178] [ifn 1, type "inet", linkBW 1000000Kbps, availBW 869360Kbps, ipAddr 64.57.23.182] [ifn 2, type "inet", linkBW 1000000Kbps, availBW 869360Kbps, ipAddr 64.57.23.186] [ifn 3, type "p2p", linkBW 1000000Kbps, availBW 869360Kbps, ipAddr 10.1.1.1] [ifn 4, type "p2p", linkBW 1000000Kbps, availBW 869296Kbps, ipAddr 10.1.2.1] [ifn 5, type "p2p", linkBW 1000000Kbps, availBW 869360Kbps, ipAddr 10.1.3.1] [ifn 6, type "p2p", linkBW 1000000Kbps, availBW 869296Kbps, ipAddr 10.1.4.1]
ifn: interface number type:
» inet: Internet» p2p: Point to Point
linkBW: total bandwidth on the link (1Gb/s) availBW: total bandwidth currently available ipAddr: This interface’s address on this SPP
Neighbor Rtr Meta-interface
Meta Interfaces (UDP Tunnels)
SALT
TG Src MI
TG Dst MI
SALT_SPP_IFN_1="64.57.23.214" …SPP_IFN_1=$SALT_SPP_IFN_1…SPP_TGSRC_MI_IPADDR=$IP_RTR_PORT_9…SPP_TGSRC_MI_PORT=21003
scfg --cmd setup_fp_tunnel --fpid 0 --bw 10000 --ipaddr $SPP_TGSRC_MI_IPADDR --port $SPP_TGSRC_MI_PORT
This Meta-Interface defined as:64.57.23.214/21003
FromconfigureRouter.shwhich we will beusing later.
Neighbor Rtr Meta-interface
Meta Interfaces (UDP Tunnels)
SALT
TG Src MI
TG Dst MI
SALT_SPP_IFN_2="64.57.23.218" …SPP_IFN_2=$SALT_SPP_IFN_2…SPP_TGDST_MI_IPADDR=$SPP_IFN_2…SPP_TGDST_MI_PORT=21003
scfg --cmd setup_fp_tunnel --fpid 0 --bw 10000 --ipaddr $SPP_TGDST_MI_IPADDR --port $SPP_TGDST_MI_PORT
This Meta-Interface defined as:64.57.23.218/21003
FromconfigureRouter.shwhich we will beusing later.
Neighbor Rtr Meta-interface
Filters
SALT
TG Src MI
TG Dst MI
ip_fpc --cmd write_fltr --fpid 0 --fid $FID \ --key_type 0 --key_rxmi $MID_SRC \ --key_daddr $ HOST_TGDST_MN_ADDR \ --key_saddr 0 --key_sport 0 --key_dport 0 --key_proto 0 \
--mask_daddr 0xFFFFFFFF --mask_saddr 0 --mask_sport 0 \ --mask_dport 0 --mask_flags 0 \
--txdaddr $HOST_TGDST_IPADDR \ --txdport $HOST_TGDST_PORT –qid $QID_DST_MI --sindx $FID
Key
Filter
Mask
Result
This adds a filter to the SRC MIto route packets to the DST MI
Neighbor Rtr Meta-interface
Filters (continued)
SALT
TG Src MI
TG Dst MI
ip_fpc --cmd write_fltr --fpid 0 --fid $FID \ --key_type 0 --key_rxmi $MID_SRC \ --key_daddr $HOST_TGDST_MN_ADDR \ --key_saddr 0 --key_sport 0 --key_dport 0 --key_proto 0 \
--mask_daddr 0xFFFFFFFF --mask_saddr 0 --mask_sport 0 \ --mask_dport 0 --mask_flags 0 \
--txdaddr $HOST_TGDST_IPADDR \ --txdport $HOST_TGDST_PORT –qid $QID_DST_MI --sindx $FID
Key
Filter
Mask
Result
Key matches on DST MetaNet Address
Neighbor Rtr Meta-interface
Filters (continued)
SALT
TG Src MI
TG Dst MI
ip_fpc --cmd write_fltr --fpid 0 --fid $FID \ --key_type 0 --key_rxmi $MID_SRC \ --key_daddr $ HOST_TGDST_MN_ADDR \ --key_saddr 0 --key_sport 0 --key_dport 0 --key_proto 0 \
--mask_daddr 0xFFFFFFFF --mask_saddr 0 --mask_sport 0 \ --mask_dport 0 --mask_flags 0 \
--txdaddr $HOST_TGDST_IPADDR \ --txdport $HOST_TGDST_PORT –qid $QID_DST_MI --sindx $FID
Key
Filter
Mask
Result
qid is bound to Router DST MIThat is what gets packet to go OUT that MI
Neighbor Rtr Meta-interface
Filters (continued)
SALT
TG Src MI
TG Dst MI
ip_fpc --cmd write_fltr --fpid 0 --fid $FID \ --key_type 0 --key_rxmi $MID_SRC \ --key_daddr $HOST_TGDST_MN_ADDR \ --key_saddr 0 --key_sport 0 --key_dport 0 --key_proto 0 \
--mask_daddr 0xFFFFFFFF --mask_saddr 0 --mask_sport 0 \ --mask_dport 0 --mask_flags 0 \
--txdaddr $ HOST_TGDST_IPADDR \ --txdport $ HOST_TGDST_PORT –qid $QID_DST_MI --sindx $FID
Key
Filter
Mask
Result
Addr/Port in Result are for hostat other end of that tunnel.Addr is what gets the Internet todeliver packet to end host and port gets the host to deliver to application
Neighbor Rtr Meta-interface
You will add…
SALT
TG Src MI
TG Dst MI
Filter
New Meta-Interface to connect your router to a neighbor router.New Filter to direct traffic from your SRC to their DSTNew Filter to direct traffic from their SRC to your DST
Filter
Directions for Hands On Exercises Note your User id: gec## Note your SPP Open THREE windows ssh to your spp host in EACH window Window 1: ping
» First, ping your SPP (refer to your “User: gec##” page for your SPP)• ping sppkans1.arl.wustl.edu OR sppwash1.arl.wustl.edu OR sppsalt1.arl.wustl.edu
» Run pingit• cd GEC7• ./pingit
– Notice the UDP Port number that it reports.– But don’t “press any key to continue” yet.
Directions for Hands On Exercises (continued) Window 2: ssh to slice on your assigned SPP
» ssh -i ~/.ssh/gec##_id_rsa wupl_GEC7_##@<spp>• Also show on your “User: gec##” page
» Ping something back on your campus that your firewalls will allow you to ping…• Or ping something on our campus:
– > ping drn06.arl.wustl.edu» See what interfaces your SPP has:
• >scfg --cmd get_ifaces– TWO DASHES before cmd!!
» cd HandsOnSession/UserScripts/User_##/» ./configureRouter.sh <udpport from pingit>» Now, just for practice, tear down the router:
• ./teardownRouter.sh» Then re-run the configureRouter.sh script
On your laptop, start SPPMon.jar Load monitoring file
» Under File menu select Open» Double Click on GEC7» Double Click on User##.exp
Go back to ‘pingit’ window (Window 1) and hit Enter» You should see the monitoring graph counting the ping requests and responses.» Try it multiple times if you like.
Directions for Hands On Exercises (continued) Window 3: Traffic Generator Run the traffic generator:
» cd GEC7» ./tgit
• Notice the values that it reports for – Number of packets– Packet per second rate– Packet payload length– Destination address
• tgit is actually a script that runs a java app on your spphost. The java app sends a request to a server on the TG SRC host asking it to start a traffic generator.
Look at monitoring graph to see the tg pkts being counted. Look at the command line arguments for tgit:
» ./tgit --help Try running tgit and change the parameters of the traffic.
» Leave the destination address the same as original run reported.
Directions for Hands On Exercises (continued) Now lets pair up with another user
• gec01 – gec02• gec03 – gec04• Etc…
» Before editing the configureRouter.sh script, fill in the work sheets on the following pages» We want to add a new meta-interface to connect your two routers» Then add the necessary filters to be able to send traffic across both routers
Worksheet(s) – Page 1
Neighbor Rtr Meta-interface
TG Src MI
TG Dst MI
Filter1
Filter2
TG Src MI
TG Dst MI
Filter1
Filter2
We are going to list the parameters you will need for Building a new MI Adding a filter to route traffic from your src to your neighbor’s dst Adding a filter to route traffic coming from your neighbor’s src to your dst.
srcN
dstN
srcN+1
dstN+1
UserN UserN+1
Worksheet(s) – Page 2TG Src MI
TG Dst MI
Filter1
Filter2
TG Src MI
TG Dst MI
Filter1
Filter2
UserN MI to Neighbor My SPP: ___________ Other SPP: ___________ Link between SPPs:
» Look at “Current SPP Network” Slide!!!» My Addr: _______________ (Arg0)» Other End Addr: _______________
Pick a Port Number ________ (Arg1)» Do NOT use port #’s in range 32768-49151
UserN+1 MI to Neighbor My SPP: ___________ Other SPP: ___________ Link between SPPs:
» Look at “Current SPP Network” Slide!!!» My Addr: _______________ (Arg0)» Other End Addr: _______________
Pick a Port Number ________ (Arg1)» Do NOT use port #’s in range 32768-49151
srcN
dstN
srcN+1
dstN+1
UserN UserN+1
Neighbor Rtr Meta-interface
Worksheet(s) – Page 3
Neighbor Rtr Meta-interface
TG Src MI
TG Dst MI
Filter1
Filter2
TG Src MI
TG Dst MI
Filter1
Filter2
UserN Filter1 Key DADDR (dstN+1):
» MN Dest Addr: ______________ (Arg2) MI to send pkts to: _______
» QID: _____________ (Arg5)• We have already used 0, 1, 2 for other Mis.• Chose something else
» Addr on other end of MI: ___________ (Arg3)» Port on other end of MI: ___________ (Arg4)
UserN+1 Filter1 Key DADDR (dstN):
» MN Dest Addr: ______________ (Arg2) MI to send pkts to: _______
» QID: _____________ (Arg5)We have already used 0, 1, 2 for other Mis.Chose something else
» Addr on other end of MI: ___________ (Arg3)» Port on other end of MI: ___________ (Arg4)
srcN
dstN
srcN+1
dstN+1
UserN UserN+1
Neighbor Rtr Meta-interface
Before we do Filter2 Lets Review …
SALT
TG Src MI
TG Dst MI
ip_fpc --cmd write_fltr --fpid 0 --fid $FID \ --key_type 0 --key_rxmi $MID_SRC \ --key_daddr $HOST_TGDST_MN_ADDR \ --key_saddr 0 --key_sport 0 --key_dport 0 --key_proto 0 \
--mask_daddr 0xFFFFFFFF --mask_saddr 0 --mask_sport 0 \ --mask_dport 0 --mask_flags 0 \
--txdaddr $HOST_TGDST_IPADDR \ --txdport $HOST_TGDST_PORT –qid $QID_DST_MI --sindx $FID
Key
Filter
Mask
Result
Here is the filter for sending fromyour SRC MI to your DST MI.
qid is bound to Router DST MIThat is what gets packet to go OUT that MI
Addr/Port in Result are for hostat other end of that tunnel.Addr is what gets the Internet todeliver packet to end host and port gets the host to deliver to application
YOU WILL NEED THESE SAME VALUESwhen you have Filter2 send to your DST MI
Worksheet(s) – Page 4
Neighbor Rtr Meta-interface
TG Src MI
TG Dst MI
srcN
dstN
Filter1
Filter2
TG Src MI
TG Dst MI
Filter1
Filter2
UserN Filter2 Key DADDR (dstN):
» MN Dest Addr: ______________ (Arg6) MI to send pkts to: _______
» QID: _____________ (Arg9)» Addr on other end of MI: ___________ (Arg7)» Port on other end of MI: ___________ (Arg8)» Feel free to re-use existing variables…
UserN+1 Filter2 Key DADDR (dstN+1):
» MN Dest Addr: ______________ (Arg6) MI to send pkts to: _______
» QID: _____________ (Arg9)» Addr on other end of MI: ___________ (Arg7)» Port on other end of MI: ___________ (Arg8)» Feel free to re-use existing variables.
srcN+1
dstN+1
UserN UserN+1
Directions for Hands On Exercises (continued) Now make the necessary changes to configureRouter.sh
» There are notes in configureRouter.sh to help you achieve this.» Editors available: vi, emacs, nano» Open configureRouter.sh in an editor and search for the word Updates. Start there…
Redo your configuration:» Close SPPmon session:
• Under File menu select ‘Close’» Run ./teardownRouter.sh to remove the previous configuration.» Run ./configureRouter.sh to reconfigure with your new configuration.» Look for errors in log.out
When all seems ok:» Reload the monitoring from the same file.» Add any new monitoring entries that you might need.
• Look at the output from your configureRouter.sh script to see what indices you need to add» Change your dest. address argument to tgit and try to send through both of your routers.
• Try it from both directions (each of you try running tgit)
Directions for Hands On Exercises (continued) Now increase the packet per second rate until you think the rates you are
seeing on the two routers are different.» Why are they different?
Try adding some monitoring to look at the queues on each side of your new Meta-Interface.» Add a new monitoring graph» Add a monitor for the queue length in packets for your new qid
Try your increased packet rate now.» Do you see the queue fill up?
Now lets manipulate the queue parameters» scfg --cmd set_queue_params --fpid 0 --qid <###> --threshold 1000 --bw 10000» Try different values for threshold.» Changing the BW right now will not have any impact since there are no competing flows.
• This queue is the only queue on a MI that has a 10Mb/s rate.• Even if you reduce this queue to less than 10Mb/s it will be capped by the MI rate if there is no other
traffic for that MI.
Still to do… Clean up output from configureRouter.sh so it tells the user something understandable. Re-populate all slices with files Populate USB flash drives Make Sirius reservations Get mail working on SPP PLC Automate startup of servers and receivers for TG
» Servers seem to need re-starting regularly. Backup plan for planetlab hosts that are not working
» Have a second and third host ready for each user and make it easy to switch» To switch TGSRC need to change tgit» For TGSRC, probably don’t actually need to change configureRouter.sh since we don’t actually check for src
addr/port and we don’t send anything back to the SRC. » Not sure we care about TGDST. If it is dead, does it really matter? ICMP error messages?» But to be complete we should change TGSRC in tgit and configureRouter.sh and TGDST in configureRouter.sh» All PL_HOST’s should have server and receiver started on them so we can quickly switch» 2/27/10: Added 33 more planetlab hosts to washu_sppDemo slice.
install fsd on all CPs Add slide info on tgit and how it works so they know it just sends pkt to server. Add some directions on adding SPPmon monitoring entries Make up solution configureRouter.sh scripts for each user. Add to slice directories. Make up solution worksheets.
In progress 3/1/10: Add SPP.hw files for each SPP and change type name to reflect SPP Name
» Jyoti is adding feature to allow user to add label to SPP 2/26/10: Update USB stick with latest SPPmon and experiment files 2/26/10: Build up the rest of the SPPmon experiment files. Purchase USB flash drives (Order sent to Kelli, 2/25) Change limit on open files on all CPs (added ulimit –n 10240 to /etc/rc.local)
» Turns out that the limit is also built into select(). There is a limit of 1024 file descriptors in the FD SET that is given to select. This limit is built into a binary library that python uses to do a select. So, we can’t easily change it for a work-around.
DONE DONE: Clean up “mnet_run: entered: calling updateEnvIP” messages in ip_fpd DONE: Clear ip_fpd.log file before running ip_fpd or just >& into it instead of >>h DONE: Change configureRouter.sh so it gives them the commands needed at end
but forces them to set the values for variables DONE: Add something to configureRouter.sh to print dots while sleeping. DONE: Change configureRouter.sh script to use the MID returned by scfg DONE: Load emacs, pico (and other editors?) on ALL GPE slices DONE: Add slide with example of get_ifaces and what each interface is. DONE: Remove use of BINDIR in configureRouter.sh, set path to use /usr/local/bin
and use utilities and daemons from there. DONE: Fix scfg with new name changes (claim_resources, etc)
» Then change scripts to use new names: Do this before FRIDAY!!! DONE: Update /usr/local/bin binaries on all slices (Do this after updating scfg above) DONE: Set hostname on spphost’s (Any implications for ONL?) DONE: Config WASH back to normal (was testing ProtoGENI vlan stuff)
» Test gec01 and gec02 with MI between: This will test KANS WASH link DONE: Expand port numbers used for sliced so unique on each GPE
DONE DONE: Change _PORT in configureRouter.sh to _IFN to agree with get_ifaces
» _PORT_10 becomes _IFN_2 _PORT_9 becomes _IFN_1 _PORT_8 becomes _IFN_0 DONE: Add a worksheet for doing the setup_fp_tunnel, write_fltr stuff at the end so
they have to write the values down on paper before going to the configureRouter.sh. And tie it in to the previous filter and its result.