Difference between revisions of "Using the IPv4 Code Option"

From ARL Wiki
Jump to navigationJump to search
Line 4: Line 4:
  
 
== Introduction ==
 
== Introduction ==
 
>>>> Metanet or Meta-Net ??? <<<<<
 
  
 
An SPP is a PlanetLab node that combines the high-performance and programmability of Network Processors (NPs) with the programmability of general-purpose processors (GPEs).
 
An SPP is a PlanetLab node that combines the high-performance and programmability of Network Processors (NPs) with the programmability of general-purpose processors (GPEs).
Line 35: Line 33:
 
== The SPP Fastpath ==
 
== The SPP Fastpath ==
  
[[Image:spp-network.png|right|300px|border|SPP Network]]
+
[[Image:sub-net.png|right|300px|border|SPP Substrate Network]]
  
A network of SPPs is a network of nodes connected by UDP tunnels.
+
A network of nodes containing SPPs is formed by connecting the nodes with UDP tunnels.
The nodes can be SPPs, hosts (PlanetLab and non-PlanetLab), or any packet processors.
+
This network forms a ''substrate-net'' which can carry packets from one or more ''meta-nets''.
A UDP tunnel has two endpoints, each defined by the pair (IP address, UDP port).
+
The nodes can be SPPs, hosts (PlanetLab and non-PlanetLab), or any packet processors that support this paradigm.
Note that this address-port pair is from the addressing domain of the IP network that carries the packets.
+
A UDP tunnel has two endpoints, each defined by a (IP address, UDP port) pair.
Note the following about an SPP node:
+
Note that this address-port pair is from the addressing domain of the substrate-net.
 +
Also, note that an SPP node:
  
* It has multiple physical interfaces.
+
* Has multiple physical interfaces, each with an IP address.
* Each physical interface has an IP address.
+
* Can support concurrent traffic from multiple SPP slices (users) at each interface.
* An interface connected to another SPP has a private IP address.
 
* An interface can be shared (without interference) by multiple SPP slices (users).
 
  
A packet that travels through this network of SPPs have an outer header, an inner (meta-net) header and a payload (packet content).
+
[[Image:sub-net-packet.png|right|300px|border| Substrate Packet]]
  
A packet arriving to an SPP is assumed to be a meta-net packet encapsulated in an IP/UDP packet.
+
A packet that travels through this network of SPPs has an outer (substrate-net) header, an inner (meta-net) header and a payload (packet content); i.e., a meta-net packet is encapsulated in a substrate-net IP/UDP packet.
The SPP strips off the outer IP/UDP headers before delivering the meta-net packet to either a user's process running on a GPE or to the fastpath code option running on the network processor (NP).
+
If an SPP has been configured to process the packet using the fastpath, the packet is sent to the NP where the substrate header is removed to expose the meta-net packet.
That is, a meta-net packet is tunneled through the Internet and between SPPs.
+
The NP processes the meta-net packet and encapsulates the meta-net packet in an IP/UDP packet before forwarding the packet out of one of its interfaces.
 +
In the case of an IPv4 meta-net, an IPv4 packet is encapsulated in another IPv4 packet.
 +
 
 +
[[Image:packet-path.png|right|300px|border| Meta-Interfaces, Filters and Queues]]
 +
 
 +
A ''meta-interface'' is bound to an endpoint
 +
(IP address, UDP port) pair where the IP address is the address of a physical interface and allows SPP users to share an SPP's physical interface.
  
In the case of an IPv4 meta-net, an IPv4 packet is encapsulated in another IPv4 packet.
 
We refer to the inner packet as an IPv4 meta-net packet and the outer packet as the real-net packet which consists of an IPv4 meta-net packet, UDP header and IP header.
 
  
A meta-interface allows SPP users to share an SPP's physical interface.
 
  
 
>>>>> HERE <<<<<
 
>>>>> HERE <<<<<

Revision as of 16:47, 10 March 2010

Template:Under Construction

Introduction

An SPP is a PlanetLab node that combines the high-performance and programmability of Network Processors (NPs) with the programmability of general-purpose processors (GPEs). The Hello GPE World Tutorial page described how to use a GPE. This page describes the SPP's fastpath (NP) features using the IPv4 meta-net as an example. Those features include:

  • Bandwidth, queue, filter and memory resources
  • Logical interfaces (meta-interfaces) within each physical interface
  • Packet scheduling queues and their binding to meta-interfaces
  • Filters for forwarding packets to queues

Like any PlanetLab node, the SPP runs a server on each GPE that allows a user to allocate a subset of a node's resources called a slice. Although an SPP user can prototype a new router by writing a socket program for the GPE, the SPP's high performance can only be tapped by using a SPP's NP. That is, use a fastpath-slowpath packet processing paradigm where the fastpath uses NPs to process data packets at high speed while the slowpath uses GPEs to handle control and exception packets. The SPP's IPv4 code option is an example of this fastpath-slowpath paradigm.

This page describes a simple IPv4 meta-net and in doing so, illustrates the fastpath-slowpath paradigm that would be in any high-speed implementation. Configuring the SPP so that it will process IPv4 packets using the IPv4 code option involves these steps:

  • Allocate (and configure) a fastpath (FP)
  • Create one or more meta-interfaces (MIs)
  • Create and configure packet queues, and bind each queue to an MI
  • Install filters to direct incoming packets to packet queues

A fastpath creation request specifies your desire for SPP resources such as interface bandwidths, queues, filters and memory. Once you are granted those resources, you define meta-interfaces within the fastpath and structure meta-interfaces and resources for packet forwarding.

The SPP Fastpath

A network of nodes containing SPPs is formed by connecting the nodes with UDP tunnels. This network forms a substrate-net which can carry packets from one or more meta-nets. The nodes can be SPPs, hosts (PlanetLab and non-PlanetLab), or any packet processors that support this paradigm. A UDP tunnel has two endpoints, each defined by a (IP address, UDP port) pair. Note that this address-port pair is from the addressing domain of the substrate-net. Also, note that an SPP node:

  • Has multiple physical interfaces, each with an IP address.
  • Can support concurrent traffic from multiple SPP slices (users) at each interface.

A packet that travels through this network of SPPs has an outer (substrate-net) header, an inner (meta-net) header and a payload (packet content); i.e., a meta-net packet is encapsulated in a substrate-net IP/UDP packet. If an SPP has been configured to process the packet using the fastpath, the packet is sent to the NP where the substrate header is removed to expose the meta-net packet. The NP processes the meta-net packet and encapsulates the meta-net packet in an IP/UDP packet before forwarding the packet out of one of its interfaces. In the case of an IPv4 meta-net, an IPv4 packet is encapsulated in another IPv4 packet.

A meta-interface is bound to an endpoint (IP address, UDP port) pair where the IP address is the address of a physical interface and allows SPP users to share an SPP's physical interface.


>>>>> HERE <<<<<

Recall from The Hello GPE World Tutorial that slowpath endpoints allowed packets to be sent to a process running on a GPE where an endpoint is specified by its IP address and UDP port number. The same idea is used in the fastpth: fastpath endpoints


  • Meta-Router packets
  • Meta-interface
  • UDP tunnel
  • Queues
  • Code option

The IPv4 Meta-Net

XXXXX

  • Packet path
  • Filters
  • Stats

Utilities and Daemons

XXXXX

  • scfg
    • generic
    • information, reservation management, queue management, resource allocation/freeing
  • ip_fpc
    • IPv4 filter management
  • ip_fpd
    • create IPv4 fastpath
    • process LD and EX traffic
  • sliced
    • process monitoring requests

Example 1

  • overview of Ex1
  • 1 SPP
  • real-net, meta-net relations
  • only ping traffic (local and remote)

Preparation

XXXXX getting files, etc

Setup the SPP

XXXXX setup script setupFP1.sh

  • MIs
    • Implicit MI 0 for LD and EX
    • 1 for each FP EP plus MI 0 (LD, EX)
  • Filters
    • direct incoming packet to queue
    • For LD: "--txdaddr 0 --txdport 0 --qid 0"
  • Queues
    • each queue is bound to an MI
    • each MI can have 1 or more queues
    • q$N for EX and q${N-1} for LD where $N is #queues
    • pkt scheduling: weighted fair queueing

Send Traffic

XXXXX

Teardown the SPP

XXXXX teardown script teardownFP1.sh

Example 2

XXXXX

  • simplest complete example
  • all traffic
  • sliced