GEC7: SPP Tutorial

61
John DeHart Computer Science & Engineering Washington University www.arl.wustl.edu GEC7: SPP Tutorial

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

Page 1: GEC7: SPP Tutorial

John DeHartComputer Science & EngineeringWashington University

www.arl.wustl.edu

GEC7: SPP Tutorial

Page 2: 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

Page 3: GEC7: SPP Tutorial

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

Page 4: GEC7: SPP Tutorial

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.

Page 5: GEC7: SPP Tutorial

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)

Page 6: GEC7: SPP Tutorial

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

Page 7: GEC7: SPP Tutorial

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

Page 8: GEC7: SPP Tutorial

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

Page 9: GEC7: SPP Tutorial

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, …)

Page 10: GEC7: SPP Tutorial

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

Page 11: GEC7: SPP Tutorial

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

Page 12: GEC7: SPP Tutorial

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

Page 13: GEC7: SPP Tutorial

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

Page 14: GEC7: SPP Tutorial

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

Page 15: GEC7: SPP Tutorial

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

Page 16: GEC7: SPP Tutorial

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

Page 17: GEC7: SPP Tutorial

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

Page 18: GEC7: SPP Tutorial

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

Page 19: GEC7: SPP Tutorial

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

Page 20: GEC7: SPP Tutorial

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

Page 21: GEC7: SPP Tutorial

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

Page 22: GEC7: SPP Tutorial

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

Page 23: GEC7: SPP Tutorial

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

Page 24: GEC7: SPP Tutorial

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

Page 25: GEC7: SPP Tutorial

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

Page 26: GEC7: SPP Tutorial

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

Page 27: GEC7: SPP Tutorial

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

Page 28: GEC7: SPP Tutorial

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

Page 29: GEC7: SPP Tutorial

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

Page 30: GEC7: SPP Tutorial

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

Page 31: GEC7: SPP Tutorial

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]

Page 32: GEC7: SPP Tutorial

Connectivity toNeighbor Rtr

Diagram of Your Network

NPEMetaRouter FastPath

(GPE)MetaRouter Control

ControlProcessor

spphost#

PlanetLabHost

PlanetLabHost

Page 33: GEC7: SPP Tutorial

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.

Page 34: GEC7: SPP Tutorial

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

Page 35: GEC7: SPP Tutorial

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)

Page 36: GEC7: SPP Tutorial

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

Page 37: GEC7: SPP Tutorial

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)

Page 38: GEC7: SPP Tutorial

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.

Page 39: GEC7: SPP Tutorial

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

Page 40: GEC7: SPP Tutorial

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.

Page 41: GEC7: SPP Tutorial

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.

Page 42: GEC7: SPP Tutorial

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

Page 43: GEC7: SPP Tutorial

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

Page 44: GEC7: SPP Tutorial

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

Page 45: GEC7: SPP Tutorial

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

Page 46: GEC7: SPP Tutorial

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

Page 47: GEC7: SPP Tutorial

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.

Page 48: GEC7: SPP Tutorial

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.

Page 49: GEC7: SPP Tutorial

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.

Page 50: GEC7: SPP Tutorial

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

Page 51: GEC7: SPP Tutorial

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

Page 52: GEC7: SPP Tutorial

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

Page 53: GEC7: SPP Tutorial

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

Page 54: GEC7: SPP Tutorial

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

Page 55: GEC7: SPP Tutorial

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

Page 56: GEC7: SPP Tutorial

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)

Page 57: GEC7: SPP Tutorial

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.

Page 58: GEC7: SPP Tutorial

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.

Page 59: GEC7: SPP Tutorial

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.

Page 60: GEC7: SPP Tutorial

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

Page 61: GEC7: SPP Tutorial

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.