Difference between revisions of "The SPP Tutorial"

From ARL Wiki
Jump to navigationJump to search
Line 19: Line 19:
 
There are four main wiki pages in [[The SPP Tutorial]]:
 
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.
+
* 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.
* [[The Hello GPE Tutorial]]: describes how to use the GPE to create a GPE-only prototype.
+
* The [[Hello GPE Tutorial]]: describes how to use the GPE to create a GPE-only prototype.
* [[The Hello IPv4 Code Option Tutorial]]: describes how to use the IPv4 code option which uses an NPE to forward IPv4 packets and a GPE process packets terminating at the router (e.g., local delivery and exceptions).
+
* The [[IPv4 Code Option Tutorial]]: describes how to use the IPv4 code option which uses an NPE to forward IPv4 packets and a GPE process packets terminating at the router (e.g., local delivery and exceptions).
* [[Writing A Simple Code Option Tutorial]]: discusses how to develop a new code option.
+
* The [[Writing A Simple Code Option Tutorial]]: discusses how to develop a new code option.
  
The [[The Hello GPE Tutorial]] describes how to get information about ''interfaces'' and how to create ''slowpath endpoints'' for communicating with a process running on a GPE.
+
The The [[Hello GPE Tutorial]] describes how to get information about ''interfaces'' and how to create ''slowpath endpoints'' for communicating with a process running on a GPE.
 
This tutorial will help you understand how to write a simple packet-processing program that will run on a GPE; i.e., a GPE-only prototype.
 
This tutorial will help you understand how to write a simple packet-processing program that will run on a GPE; i.e., a GPE-only prototype.
The [[The Hello IPv4 Code Option Tutorial]] describes a simple example of using the IPv4 code option.
+
The [[IPv4 Code Option Tutorial]] describes a simple example of using the IPv4 code option.
 
This tutorial explains how to create ''fastpath endpoints'', ''meta-interfaces'', ''packet queues'' and ''IPv4 filters''.
 
This tutorial explains how to create ''fastpath endpoints'', ''meta-interfaces'', ''packet queues'' and ''IPv4 filters''.
 
Your code option can directly use all of these concepts except for IPv4 filters.
 
Your code option can directly use all of these concepts except for IPv4 filters.
 
However, your code option will need to use filters to direct incoming packets to packet queues.
 
However, your code option will need to use filters to direct incoming packets to packet queues.
 
Seeing how it is done for the IPv4 code option will give you an understanding of how to design your filters.
 
Seeing how it is done for the IPv4 code option will give you an understanding of how to design your filters.
The [[Writing A Simple Code Option Tutorial]] xxx
+
The [[Writing A Simple Code Option Tutorial]] goes through an example of a simple code option in which we first build a GPE-only prototype and how it would be transformed to use both an NPE and a GPE.
  
 
= Requirements =
 
= Requirements =
Line 39: Line 39:
  
 
# An environment where you can compile code for a Linux operating system
 
# An environment where you can compile code for a Linux operating system
# OpenSSH
+
# An OpenSSH executable
 
# The latest version of Java to run some monitoring software and traffic generators
 
# The latest version of Java to run some monitoring software and traffic generators
 +
 +
== The Java Run-time Environment (JRE) ==
 +
 +
Most of the tutorial can be done without the JRE.
 +
But it will be helpful in the [[IPv4 Code Option Tutorial]].
 +
 +
First, determine if you already have JRE 1.6.0 or higher.
 +
Enter the following in a command-line window: ''java -version''.
 +
If the response says that you are already running some version that is atleast 1.6.0, you can skip this step.
 +
 +
If you need to install the JRE, go to the Java download page [[http://java.com/en/download/manual.jsp]] and download the latest JRE for your platform by following the instructions posted at the Sun site.
 +
'''Note:''' You only need to download the JRE (less than 20 MB), not the entire JDK (Java Development Kit).
 +
 +
'''MAC Users:'''
 +
<blockquote>
 +
Follow this link to <a href="http://www.onl.wustl.edu/get-rli.html#MAC"> the instructions for MAC users</a>.
 +
</blockquote>
  
 
= Getting Started =
 
= Getting Started =

Revision as of 20:03, 25 February 2010

Template:Under Construction

Introduction

This tutorial is designed to give a new SPP user some simple, step-by-step usage examples. This page and three others illustrate the main concepts required to get you started quickly and contain links to a number of auxilliary pages that will allow you to try more complex examples.

File:SPP-components.png
SPP Components (LC, CP, GPE, NPE)

Recall from Internet Scale Overlay Hosting that an advanced SPP developer writes code for a General-purpose Processing Engine (GPE) and a Network Processor Engine (NPE). Typically, a developer configures the SPP so that the NPE handles most data packets (the fastpath) while the GPE handles control and exception packets (the slowpath). The configuration process loads code into the GPE and NPE and installs filters in the Line Card (LC) to direct packets to the GPE or NPE.

In practice, we anticipate that most developers will write a prototype version of their router software using only the GPE and work with a SPP developer to transform the performance-critical parts of their GPE code to run on the NPE because programming an NPE is quite different than programming a general-purpose processor. That is, most developers will write a GPE-only prototype which captures the logic of their router software and pass this design to an advanced SPP developer to create a high-speed NPE-GPE version.

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.
  • The Hello GPE Tutorial: describes how to use the GPE to create a GPE-only prototype.
  • The IPv4 Code Option Tutorial: describes how to use the IPv4 code option which uses an NPE to forward IPv4 packets and a GPE process packets terminating at the router (e.g., local delivery and exceptions).
  • The Writing A Simple Code Option Tutorial: discusses how to develop a new code option.

The The Hello GPE Tutorial describes how to get information about interfaces and how to create slowpath endpoints for communicating with a process running on a GPE. This tutorial will help you understand how to write a simple packet-processing program that will run on a GPE; i.e., a GPE-only prototype. The IPv4 Code Option Tutorial describes a simple example of using the IPv4 code option. This tutorial explains how to create fastpath endpoints, meta-interfaces, packet queues and IPv4 filters. Your code option can directly use all of these concepts except for IPv4 filters. However, your code option will need to use filters to direct incoming packets to packet queues. Seeing how it is done for the IPv4 code option will give you an understanding of how to design your filters. The Writing A Simple Code Option Tutorial goes through an example of a simple code option in which we first build a GPE-only prototype and how it would be transformed to use both an NPE and a GPE.

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. An OpenSSH executable
  3. The latest version of Java to run some monitoring software and traffic generators

The Java Run-time Environment (JRE)

Most of the tutorial can be done without the JRE. But it will be helpful in the IPv4 Code Option Tutorial.

First, determine if you already have JRE 1.6.0 or higher. Enter the following in a command-line window: java -version. If the response says that you are already running some version that is atleast 1.6.0, you can skip this step.

If you need to install the JRE, go to the Java download page [[1]] and download the latest JRE for your platform by following the instructions posted at the Sun site. Note: You only need to download the JRE (less than 20 MB), not the entire JDK (Java Development Kit).

MAC Users:

Follow this link to <a href="http://www.onl.wustl.edu/get-rli.html#MAC"> the instructions for MAC users</a>.

Getting Started

xxx

Creating an Account

Getting a Slice

Adding SPPs to Your Slice

Deploying Software to the SPPs