Gec7 spp tutorial
This presentation is the property of its rightful owner.
Sponsored Links
1 / 61

GEC7: SPP Tutorial PowerPoint PPT Presentation


  • 120 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

GEC7: SPP Tutorial

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Gec7 spp tutorial

GEC7: SPP Tutorial

John DeHartComputer Science & EngineeringWashington Universitywww.arl.wustl.edu


Essence of a good 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

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

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

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

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

    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

    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

    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

    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

    User: gec01

    • SPP Host: spphost1.arl.wustl.edu

    • SPP Host login id: gec01

    • SPP Host password: GEC7User01

    • SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS)

    • Slice: wupl_GEC7_01

    • Private Key: ~/.ssh/gec01_id_rsa

    • Passphrase: GEC7 User 01

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec01_id_rsa [email protected]

    • Neighbor User: gec01


    User gec02

    User: gec02

    • SPP Host: spphost2.arl.wustl.edu

    • SPP Host login id: gec02

    • SPP Host password: GEC7User02

    • SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH)

    • Slice: wupl_GEC7_02

    • Private Key: ~/.ssh/gec02_id_rsa

    • Passphrase: GEC7 User 02

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec02_id_rsa [email protected]

    • Neighbor User: gec01


    User gec03

    User: gec03

    • SPP Host: spphost3.arl.wustl.edu

    • SPP Host login id: gec03

    • SPP Host password: GEC7User03

    • SPP: sppsalt1.arl.wustl.edu (64.57.23.210) (SALT)

    • Slice: wupl_GEC7_03

    • Private Key: ~/.ssh/gec03_id_rsa

    • Passphrase: GEC7 User 03

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec03_id_rsa [email protected]

    • Neighbor User: gec04


    User gec04

    User: gec04

    • SPP Host: spphost4.arl.wustl.edu

    • SPP Host login id: gec04

    • SPP Host password: GEC7User04

    • SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS)

    • Slice: wupl_GEC7_04

    • Private Key: ~/.ssh/gec04_id_rsa

    • Passphrase: GEC7 User 04

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec04_id_rsa [email protected]

    • Neighbor User: gec03


    User gec05

    User: gec05

    • SPP Host: spphost5.arl.wustl.edu

    • SPP Host login id: gec05

    • SPP Host password: GEC7User05

    • SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH)

    • Slice: wupl_GEC7_05

    • Private Key: ~/.ssh/gec05_id_rsa

    • Passphrase: GEC7 User 05

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec05_id_rsa [email protected]

    • Neighbor User: gec06


    User gec06

    User: gec06

    • SPP Host: spphost6.arl.wustl.edu

    • SPP Host login id: gec06

    • SPP Host password: GEC7User06

    • SPP: sppsalt1.arl.wustl.edu (64.57.23.210) (SALT)

    • Slice: wupl_GEC7_06

    • Private Key: ~/.ssh/gec06_id_rsa

    • Passphrase: GEC7 User 06

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec06_id_rsa [email protected]

    • Neighbor User: gec05


    User gec07

    User: gec07

    • SPP Host: spphost1.arl.wustl.edu

    • SPP Host login id: gec07

    • SPP Host password: GEC7User07

    • SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS)

    • Slice: wupl_GEC7_07

    • Private Key: ~/.ssh/gec07_id_rsa

    • Passphrase: GEC7 User 07

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec07_id_rsa [email protected]

    • Neighbor User: gec08


    User gec08

    User: gec08

    • SPP Host: spphost2.arl.wustl.edu

    • SPP Host login id: gec08

    • SPP Host password: GEC7User08

    • SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH)

    • Slice: wupl_GEC7_08

    • Private Key: ~/.ssh/gec08_id_rsa

    • Passphrase: GEC7 User 08

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec08_id_rsa [email protected]

    • Neighbor User: gec07


    User gec09

    User: gec09

    • SPP Host: spphost3.arl.wustl.edu

    • SPP Host login id: gec09

    • SPP Host password: GEC7User09

    • SPP: sppsalt1.arl.wustl.edu (64.57.23.210) (SALT)

    • Slice: wupl_GEC7_09

    • Private Key: ~/.ssh/gec09_id_rsa

    • Passphrase: GEC7 User 09

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec09_id_rsa [email protected]

    • Neighbor User: gec10


    User gec10

    User: gec10

    • SPP Host: spphost4.arl.wustl.edu

    • SPP Host login id: gec10

    • SPP Host password: GEC7User10

    • SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS)

    • Slice: wupl_GEC7_10

    • Private Key: ~/.ssh/gec10_id_rsa

    • Passphrase: GEC7 User 10

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec10_id_rsa [email protected]

    • Neighbor User: gec09


    User gec11

    User: gec11

    • SPP Host: spphost5.arl.wustl.edu

    • SPP Host login id: gec02

    • SPP Host password: GEC7User02

    • SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH)

    • Slice: wupl_GEC7_02

    • Private Key: ~/.ssh/gec02_id_rsa

    • Passphrase: GEC7 User 02

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec11_id_rsa [email protected]

    • Neighbor User: gec12


    User gec12

    User: gec12

    • SPP Host: spphost6.arl.wustl.edu

    • SPP Host login id: gec12

    • SPP Host password: GEC7User12

    • SPP: sppsalt1.arl.wustl.edu (64.57.23.210) (SALT)

    • Slice: wupl_GEC7_12

    • Private Key: ~/.ssh/gec12_id_rsa

    • Passphrase: GEC7 User 12

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec12_id_rsa [email protected]

    • Neighbor User: gec11


    User gec13

    User: gec13

    • SPP Host: spphost1.arl.wustl.edu

    • SPP Host login id: gec13

    • SPP Host password: GEC7User13

    • SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS)

    • Slice: wupl_GEC7_13

    • Private Key: ~/.ssh/gec13_id_rsa

    • Passphrase: GEC7 User 13

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec13_id_rsa [email protected]

    • Neighbor User: gec14


    User gec14

    User: gec14

    • SPP Host: spphost2.arl.wustl.edu

    • SPP Host login id: gec14

    • SPP Host password: GEC7User14

    • SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH)

    • Slice: wupl_GEC7_14

    • Private Key: ~/.ssh/gec14_id_rsa

    • Passphrase: GEC7 User 14

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec14_id_rsa [email protected]

    • Neighbor User: gec13


    User gec15

    User: gec15

    • SPP Host: spphost3.arl.wustl.edu

    • SPP Host login id: gec15

    • SPP Host password: GEC7User15

    • SPP: sppsalt1.arl.wustl.edu (64.57.23.210) (SALT)

    • Slice: wupl_GEC7_15

    • Private Key: ~/.ssh/gec15_id_rsa

    • Passphrase: GEC7 User 15

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec15_id_rsa [email protected]

    • Neighbor User: gec16


    User gec16

    User: gec16

    • SPP Host: spphost4.arl.wustl.edu

    • SPP Host login id: gec16

    • SPP Host password: GEC7User16

    • SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS)

    • Slice: wupl_GEC7_16

    • Private Key: ~/.ssh/gec16_id_rsa

    • Passphrase: GEC7 User 16

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec16_id_rsa [email protected]

    • Neighbor User: gec15


    User gec17

    User: gec17

    • SPP Host: spphost5.arl.wustl.edu

    • SPP Host login id: gec17

    • SPP Host password: GEC7User17

    • SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH)

    • Slice: wupl_GEC7_17

    • Private Key: ~/.ssh/gec17_id_rsa

    • Passphrase: GEC7 User 17

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec17_id_rsa [email protected]

    • Neighbor User: gec18


    User gec18

    User: gec18

    • SPP Host: spphost6.arl.wustl.edu

    • SPP Host login id: gec18

    • SPP Host password: GEC7User18

    • SPP: sppsalt1.arl.wustl.edu (64.57.23.210) (SALT)

    • Slice: wupl_GEC7_18

    • Private Key: ~/.ssh/gec18_id_rsa

    • Passphrase: GEC7 User 18

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec18_id_rsa [email protected]

    • Neighbor User: gec17


    User gec19

    User: gec19

    • SPP Host: spphost1.arl.wustl.edu

    • SPP Host login id: gec19

    • SPP Host password: GEC7User19

    • SPP: sppkans1.arl.wustl.edu (64.57.23.178) (KANS)

    • Slice: wupl_GEC7_19

    • Private Key: ~/.ssh/gec19_id_rsa

    • Passphrase: GEC7 User 19

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec19_id_rsa [email protected]

    • Neighbor User: gec20


    User gec20

    User: gec20

    • SPP Host: spphost2.arl.wustl.edu

    • SPP Host login id: gec20

    • SPP Host password: GEC7User20

    • SPP: sppwash1.arl.wustl.edu (64.57.23.194) (WASH)

    • Slice: wupl_GEC7_20

    • Private Key: ~/.ssh/gec20_id_rsa

    • Passphrase: GEC7 User 20

      • 1 space after each of GEC7 and User

    • To ssh into your slice:

      • ssh –i ~/.ssh/gec20_id_rsa [email protected]

    • Neighbor User: gec19


    User gec00 extra user just in case

    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]


    Diagram of your network

    Diagram of Your Network

    spphost#

    Control

    Processor

    (GPE)

    MetaRouter

    Control

    NPE

    MetaRouter

    FastPath

    Connectivity to

    Neighbor Rtr

    PlanetLab

    Host

    PlanetLab

    Host


    Background

    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

    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 fastpathconfig

        • 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

    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

    MN Packet Hdr

    (IPv4 Hdr in this case)

    UDP/IP Payload

    (MN Packet)

    MN Packet Payload

    (IPv4 Pkt payload in this case)


    What we are going to do today

    What we are going to do today:

    ping

    pingit

    spphost#

    Control

    Processor

    (GPE)

    MR Control

    Pingit MI

    TG Src MI

    Neighbor Rtr

    Meta-interface

    NPE

    MR FastPath

    PlanetLab

    Host

    TG Dst MI

    Ping the SPP

    PlanetLab

    Host

    Ping the Meta-Router

    Route Traffic through Meta-Router

    Route Traffic to/from neighbor Meta-Router


    Addressing in your meta network

    Addressing in your Meta-Network

    ping

    pingit

    spphost#

    10.10.#.17

    (GPE)

    MR Control

    10.10.#.1

    Control

    Processor

    Pingit MI

    TG Src MI

    Neighbor Rtr

    Meta-interface

    NPE

    MR FastPath

    PlanetLab

    Host

    10.10.#.2

    TG Dst MI

    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)

    PlanetLab

    Host

    10.10.#.3


    Current spp network

    Current SPP Network

    64.57.23.210

    64.57.23.178

    10.1.1.1

    10.1.1.2

    KANS

    SALT

    • Each SPP has 3 Public Internet2 Interfaces.

    • Each SPP has 2 internal interfaces to each other SPP.

    64.57.23.214

    10.1.2.2

    64.57.23.182

    10.1.2.1

    64.57.23.186

    64.57.23.218

    10.1.7.2

    10.1.3.1

    10.1.8.2

    10.1.4.1

    10.1.7.1

    10.1.3.2

    10.1.4.2

    10.1.8.1

    WASH

    64.57.23.194

    64.57.23.202

    64.57.23.198


    Scfg cmd get ifaces

    scfg –cmdget_ifaces

    [[email protected]_spp ~]$ scfg --cmdget_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


    Meta interfaces udp tunnels

    Meta Interfaces (UDP Tunnels)

    SALT

    TG Src MI

    Neighbor Rtr

    Meta-interface

    TG Dst MI

    This Meta-Interface defined as:

    64.57.23.214/21003

    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--cmdsetup_fp_tunnel --fpid 0 --bw 10000

    --ipaddr $SPP_TGSRC_MI_IPADDR

    --port $SPP_TGSRC_MI_PORT

    From

    configureRouter.sh

    which we will be

    using later.


    Meta interfaces udp tunnels1

    Meta Interfaces (UDP Tunnels)

    SALT

    TG Src MI

    Neighbor Rtr

    Meta-interface

    TG Dst MI

    This Meta-Interface defined as:

    64.57.23.218/21003

    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--cmdsetup_fp_tunnel --fpid 0 --bw 10000

    --ipaddr $SPP_TGDST_MI_IPADDR

    --port $SPP_TGDST_MI_PORT

    From

    configureRouter.sh

    which we will be

    using later.


    Filters

    Filters

    SALT

    TG Src MI

    Filter

    Neighbor Rtr

    Meta-interface

    This adds a filter to the SRC MI

    to route packets to the DST MI

    TG Dst MI

    ip_fpc--cmdwrite_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

    Mask

    Result


    Filters continued

    Filters (continued)

    SALT

    TG Src MI

    Filter

    Neighbor Rtr

    Meta-interface

    Key matches on DST MetaNet Address

    TG Dst MI

    ip_fpc--cmdwrite_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_daddr0xFFFFFFFF --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

    Mask

    Result


    Filters continued1

    Filters (continued)

    SALT

    TG Src MI

    Filter

    Neighbor Rtr

    Meta-interface

    qid is bound to Router DST MI

    That is what gets packet to go OUT that MI

    TG Dst MI

    ip_fpc--cmdwrite_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

    Mask

    Result


    Filters continued2

    Filters (continued)

    SALT

    TG Src MI

    Filter

    Neighbor Rtr

    Meta-interface

    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

    TG Dst MI

    ip_fpc--cmdwrite_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

    Mask

    Result


    You will add

    You will add…

    SALT

    TG Src MI

    Filter

    Neighbor Rtr

    Meta-interface

    Filter

    TG Dst MI

    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


    Directions for hands on exercises

    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

    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 --cmdget_ifaces

          • TWO DASHES before cmd!!

      • cdHandsOnSession/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 continued1

    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 tgpkts 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 continued2

    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

    Worksheet(s) – Page 1

    UserN+1

    UserN

    srcN+1

    srcN

    TG Src MI

    TG Src MI

    Filter1

    Filter1

    Neighbor Rtr

    Meta-interface

    Filter2

    Filter2

    dstN+1

    TG Dst MI

    TG Dst MI

    dstN

    • We are going to list the parameters you will need for

      • Building a new MI

      • Adding a filter to route traffic from yoursrc to your neighbor’s dst

      • Adding a filter to route traffic coming from your neighbor’s src to your dst.


    Worksheet s page 2

    Worksheet(s) – Page 2

    UserN+1

    UserN

    srcN+1

    srcN

    • UserNMI 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

    TG Src MI

    TG Src MI

    Filter1

    Filter1

    Neighbor Rtr

    Meta-interface

    Filter2

    Filter2

    dstN+1

    TG Dst MI

    TG Dst MI

    dstN

    • 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


    Worksheet s page 3

    Worksheet(s) – Page 3

    UserN+1

    UserN

    srcN+1

    srcN

    • UserNFilter1

    • Key DADDR (dstN+1):

      • MN DestAddr: ______________ (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)

    TG Src MI

    TG Src MI

    Filter1

    Filter1

    Neighbor Rtr

    Meta-interface

    Filter2

    Filter2

    dstN+1

    TG Dst MI

    TG Dst MI

    dstN

    • UserN+1 Filter1

    • Key DADDR (dstN):

      • MN DestAddr: ______________ (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)


    Before we do filter2 lets review

    Before we do Filter2 Lets Review …

    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

    SALT

    TG Src MI

    Filter

    Neighbor Rtr

    Meta-interface

    TG Dst MI

    ip_fpc--cmdwrite_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

    Mask

    Result


    Worksheet s page 4

    Worksheet(s) – Page 4

    UserN+1

    UserN

    srcN+1

    srcN

    • UserNFilter2

    • Key DADDR (dstN):

      • MN DestAddr: ______________ (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…

    TG Src MI

    TG Src MI

    Filter1

    Filter1

    Neighbor Rtr

    Meta-interface

    Filter2

    Filter2

    dstN+1

    TG Dst MI

    TG Dst MI

    dstN

    • UserN+1 Filter2

    • Key DADDR (dstN+1):

      • MN DestAddr: ______________ (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.


    Directions for hands on exercises continued3

    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 continued4

    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 --cmdset_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

    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 srcaddr/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

    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.


    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 ProtoGENIvlan 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


    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.


  • Login