Difference between revisions of "The SPP Tutorial"

From ARL Wiki
Jump to navigationJump to search
Line 1: Line 1:
 +
{{Under Constructin}}
 
[[Category: The SPP]]
 
[[Category: The SPP]]
 
[[Category: The SPP Tutorial]]
 
[[Category: The SPP Tutorial]]
Line 7: Line 8:
 
It is hoped that these main pages will get you started quickly but supply sufficient information and links so you can try more complex examples.
 
It is hoped that these main pages will get you started quickly but supply sufficient information and links so you can try more complex examples.
  
There are three main wiki pages in [[The SPP Tutorial]] in addition to this page:
+
Recall from [[Internet Scale Overlay Hosting]] that an SPP developer writes code for a ''General-purpose Processing Engine'' (GPE) and a ''Network Processor Engine'' (NPE).
 +
Typically, the NPE code handles packets along the ''fastpath'' while the GPE code handles control and exception packets.
 +
Programming a GPE is similar to programming any general-purpose processor with multiple network interfaces.
 +
But because programming an NPE is quite different than programming a general-purpose processor, we anticipate that a typical SPP user will develop their router software for GPE's and then NPE-knowledgable programmers will transform the fastpath components of the GPE code to run on an NPE.
  
* [[Hello GPE Tutorial]]
+
There are four main wiki pages in [[The SPP Tutorial]]:
<blockquote>
+
 
xxx
+
* [[The SPP Tutorial]]: is this page which gives an overview of the other tutorial pages and covers administrative issues such as creating an account and getting a slice.
</blockquote>
+
* [[Hello GPE Tutorial]]: describes how to use the GPE as a slowpath router.
* [[Hello IPv4 Code Option Tutorial]]
+
* [[Hello IPv4 Code Option Tutorial]]: describes how to use the IPv4 code option which uses the NPE to process most IPv4 packets and uses the GPE to handle slowpath packets (e.g., local delivery and exceptions).
<ul>
+
* [[Writing A Simple Code Option Tutorial]]: describes how to write a new code option.
xxx
 
</ul>
 
* [[Writing A Simple Code Option Tutorial]]
 
<ul>
 
xxx
 
</ul>
 
  
This page covers administrative issues such as creating an account and getting a slice.
 
 
The [[Hello GPE Tutorial]] xxx
 
The [[Hello GPE Tutorial]] xxx
 +
 
The [[Hello IPv4 Code Option Tutorial]] xxx
 
The [[Hello IPv4 Code Option Tutorial]] xxx
 +
 
The [[Writing A Simple Code Option Tutorial]] xxx
 
The [[Writing A Simple Code Option Tutorial]] xxx
  
We anticipate that a typical SPP user will develop their router software in
+
= Requirements =
four steps:
 
  
* Develop a slow-path version by writing a stylized socket program that captures the semantics of the protocol processing and debug it using any PlanetLab-like host.
+
This tutorial assumes that you are using a Linux operating system and have access to standard Unix tools.
* Repeat the testing of the slow-path version of the router software on the SPPs' GPEs.
+
In particular, you will need:
* Send to the SPP developers information regarding the slow-path program that handles your new protocol (e.g., slow-path code, test results, informal/formal protocol description).
 
* The SPP developers will transform the slow-path socket program into a slow-path part that will run on a GPE and a fast-path part that will run on an NPE.
 
** The slow-path part typically handles the control path and exception processing.
 
** The fast-path part handles the data path.
 
  
This approach is needed because programming NPEs (used for the fast-path) is specific to the IXP network processors.
+
# An environment where you can compile code for a Linux operating system
Programming GPEs (General-purpose Processing Engines) is similar to programming any general-purpose processor with multiple network interfaces.
+
# OpenSSH
We are currently working through an example of this process using an early version of the Forest Protocol.
+
# The latest version of Java to run some monitoring software and traffic generators
This effort is described in [[The Forest Project]].
 
  
Using a GPE is similar to using any PlanetLab node except that SPP slices are administered through a special PLC (PlanetLab Central) site at http://drn06.arl.wustl.edu/.
+
= Getting Started =
But the following PlanetLab procedure still holds:
 
  
* A Principle Investigator (PI) must create a slice for you.
+
xxx
* The PI must assign you to that slice.
 
* Then, you can add SPP nodes to your slice.
 
 
 
In a typical scenario, you (as an ordinary PlanetLab user) will use both normal PlanetLab nodes and SPP nodes.
 
This requires that you are assigned both a normal PlanetLab slice and an SPP slice.
 
Once you have been assigned to an SPP slice, you can log into the GPE of an SPP slice like any other PlanetLab node using ''ssh'' and develop a socket program as you would for any other PlanetLab node except for a few small differences:
 
 
 
* An SPP has multiple network interfaces if you want to use more than one interface.
 
* You must configure the SPP before you can use it.
 
 
 
But the configuration process is fairly straightforward since a user typically customizes an existing configuration script to do the configuration.
 
 
 
= Requirements =
 
 
 
= Getting Started =
 
  
 
== Creating an Account ==
 
== Creating an Account ==

Revision as of 22:26, 24 February 2010

Template:Under Constructin

Introduction

The main tutorial pages are designed to give a new SPP user step-by-step, simple examples that illustrate the main SPP concepts and contain links to a number of auxilliary pages that provide more information. It is hoped that these main pages will get you started quickly but supply sufficient information and links so you can try more complex examples.

Recall from Internet Scale Overlay Hosting that an SPP developer writes code for a General-purpose Processing Engine (GPE) and a Network Processor Engine (NPE). Typically, the NPE code handles packets along the fastpath while the GPE code handles control and exception packets. Programming a GPE is similar to programming any general-purpose processor with multiple network interfaces. But because programming an NPE is quite different than programming a general-purpose processor, we anticipate that a typical SPP user will develop their router software for GPE's and then NPE-knowledgable programmers will transform the fastpath components of the GPE code to run on an NPE.

There are four main wiki pages in The SPP Tutorial:

  • The SPP Tutorial: is this page which gives an overview of the other tutorial pages and covers administrative issues such as creating an account and getting a slice.
  • Hello GPE Tutorial: describes how to use the GPE as a slowpath router.
  • Hello IPv4 Code Option Tutorial: describes how to use the IPv4 code option which uses the NPE to process most IPv4 packets and uses the GPE to handle slowpath packets (e.g., local delivery and exceptions).
  • Writing A Simple Code Option Tutorial: describes how to write a new code option.

The Hello GPE Tutorial xxx

The Hello IPv4 Code Option Tutorial xxx

The Writing A Simple Code Option Tutorial xxx

Requirements

This tutorial assumes that you are using a Linux operating system and have access to standard Unix tools. In particular, you will need:

  1. An environment where you can compile code for a Linux operating system
  2. OpenSSH
  3. The latest version of Java to run some monitoring software and traffic generators

Getting Started

xxx

Creating an Account

Getting a Slice

Adding SPPs to Your Slice

Deploying Software to the SPPs