Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "John DeHart Computer Science & Engineering Washington University www.arl.wustl.edu GEC7: SPP Tutorial."— Presentation transcript:

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

2 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

3 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

4 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.

5 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)

6 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

7 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

8 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

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

10 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

11 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

12 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

13 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

14 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

15 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

16 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

17 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

18 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

19 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

20 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

21 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

22 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

23 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

24 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

25 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

26 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

27 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.eduwupl_GEC7_17@sppwash1.arl.wustl.edu Neighbor User: gec18

28 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

29 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

30 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

31 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

32 Connectivity to Neighbor Rtr Diagram of Your Network NPE MetaRouter FastPath (GPE) MetaRouter Control Processor spphost# PlanetLab Host PlanetLab Host

33 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.

34 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

35 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)

36 Neighbor Rtr Meta-interface What we are going to do today: NPE MR FastPath (GPE) MR Control Pingit MI TG Src MI TG Dst MI ping pingit Control Processor spphost# PlanetLab Host PlanetLab Host Ping the Meta-Router Route Traffic through Meta-Router Ping the SPP Route Traffic to/from neighbor Meta-Router

37 Neighbor Rtr Meta-interface Addressing in your Meta-Network NPE MR FastPath (GPE) MR Control 10.10.#.1 Pingit MI TG Src MI TG Dst MI ping pingit Control Processor spphost# 10.10.#.17 PlanetLab Host 10.10.#.2 PlanetLab Host 10.10.#.3 Where # is replaced by the number From 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)

38 Current SPP Network KANS SALT WASH 64.57.23.178 64.57.23.182 64.57.23.186 64.57.23.210 64.57.23.214 64.57.23.218 64.57.23.194 64.57.23.198 64.57.23.202 10.1.1.1 10.1.1.2 10.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.2 10.1.8.2 10.1.7.1 10.1.8.1 Each SPP has 3 Public Internet2 Interfaces. Each SPP has 2 internal interfaces to each other SPP.

39 scfg –cmd get_ifaces [wupl_GEC7_01@kans_spp ~]$ scfg --cmd get_ifaces Interface 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

40 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 From configureRouter.sh which we will be using later.

41 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 From configureRouter.sh which we will be using later.

42 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 MI to route packets to the DST MI

43 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

44 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 MI That is what gets packet to go OUT that MI

45 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 host at other end of that tunnel. Addr is what gets the Internet to deliver packet to end host and port gets the host to deliver to application

46 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 DST New Filter to direct traffic from their SRC to your DST Filter

47 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.

48 Directions for Hands On Exercises (continued) Window 2: ssh to slice on your assigned SPP » ssh -i ~/.ssh/gec##_id_rsa wupl_GEC7_##@ 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 »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.

49 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.

50 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

51 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

52 Worksheet(s) – Page 2 TG 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

53 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

54 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 from your SRC MI to your DST MI. qid is bound to Router DST MI That is what gets packet to go OUT that MI Addr/Port in Result are for host at other end of that tunnel. Addr is what gets the Internet to deliver packet to end host and port gets the host to deliver to application YOU WILL NEED THESE SAME VALUES when you have Filter2 send to your DST MI

55 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

56 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)

57 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.

58 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.

59 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.

60 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

61 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.


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

Similar presentations


Ads by Google