GEC7: SPP Tutorial

Post on 22-Feb-2016

61 views 0 download

description

GEC7: SPP Tutorial. John DeHart Computer Science & Engineering Washington University www.arl.wustl.edu. 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 - PowerPoint PPT Presentation

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 wupl_GEC7_01@sppkans1.arl.wustl.edu

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 wupl_GEC7_02@sppwash1.arl.wustl.edu

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 wupl_GEC7_03@sppsalt1.arl.wustl.edu

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 wupl_GEC7_04@sppkans1.arl.wustl.edu

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 wupl_GEC7_05@sppwash1.arl.wustl.edu

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 wupl_GEC7_06@sppsalt1.arl.wustl.edu

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 wupl_GEC7_07@sppkans1.arl.wustl.edu

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 wupl_GEC7_08@sppwash1.arl.wustl.edu

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 wupl_GEC7_09@sppsalt1.arl.wustl.edu

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 wupl_GEC7_10@sppkans1.arl.wustl.edu

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 wupl_GEC7_11@sppwash1.arl.wustl.edu

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 wupl_GEC7_12@sppsalt1.arl.wustl.edu

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 wupl_GEC7_13@sppkans1.arl.wustl.edu

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 wupl_GEC7_14@sppwash1.arl.wustl.edu

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 wupl_GEC7_15@sppsalt1.arl.wustl.edu

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 wupl_GEC7_16@sppkans1.arl.wustl.edu

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 wupl_GEC7_17@sppwash1.arl.wustl.edu

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 wupl_GEC7_18@sppsalt1.arl.wustl.edu

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 wupl_GEC7_19@sppkans1.arl.wustl.edu

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 wupl_GEC7_20@sppwash1.arl.wustl.edu

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 wupl_GEC7_00@sppsalt1.arl.wustl.edu

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.