Difference between revisions of "Using the IPv4 Code Option"
Line 7: | Line 7: | ||
>>>> Metanet or Meta-Net ??? <<<<< | >>>> Metanet or Meta-Net ??? <<<<< | ||
− | This page describes | + | 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 metanet as an example. | ||
Those features include: | Those features include: | ||
− | * | + | * Bandwidth, queue, filter and memory resources |
* Logical interfaces (''meta-interfaces'') within each physical interface | * Logical interfaces (''meta-interfaces'') within each physical interface | ||
− | * Packet scheduling queues | + | * Packet scheduling queues and their binding to meta-interfaces |
− | * Filters | + | * 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. | |
− | the ''fastpath'' uses NPs to process data packets at high | + | |
− | + | This page describes a simple IPv4 metanet 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) | * Allocate (and configure) a ''fastpath'' (FP) | ||
− | * Create one or more ''meta-interfaces'' (MIs) | + | * Create one or more ''meta-interfaces'' (MIs) |
* Create and configure packet queues, and bind each queue to an MI | * Create and configure packet queues, and bind each queue to an MI | ||
* Install filters to direct incoming packets to packet queues | * Install filters to direct incoming packets to packet queues | ||
− | A ''fastpath request'' specifies your desire for SPP resources such as | + | 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. | 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 == | |
− | |||
− | + | [[Image:udp-tunnels.png|right|300px|border|UDP Tunnels]] | |
− | + | Packets in a network of SPPs travel through UDP tunnels. | |
− | A packet arriving to an SPP is assumed to be a | + | A packet arriving to an SPP is assumed to be a metanet packet encapsulated in an IP/UDP packet. |
− | The SPP strips off the outer IP/UDP headers before delivering the | + | The SPP strips off the outer IP/UDP headers before delivering the metanet packet to either a user's process running on a GPE or to the fastpath code option running on the network processor (NP). |
− | That is, a | + | That is, a metanet packet is tunneled through the Internet and between SPPs. |
− | In the case of an IPv4 | + | In the case of an IPv4 metanet, an IPv4 packet is encapsulated in another IPv4 packet. |
− | We refer to the inner packet as an IPv4 | + | We refer to the inner packet as an IPv4 metanet packet and the outer packet as the real-net packet which consists of an IPv4 metanet packet, UDP header and IP header. |
A meta-interface allows SPP users to share an SPP's physical interface. | A meta-interface allows SPP users to share an SPP's physical interface. | ||
Line 58: | Line 60: | ||
* Code option | * Code option | ||
− | == The IPv4 | + | == The IPv4 Metanet == |
XXXXX | XXXXX | ||
Line 85: | Line 87: | ||
* overview of Ex1 | * overview of Ex1 | ||
* 1 SPP | * 1 SPP | ||
− | * real-net, | + | * real-net, metanet relations |
* only ping traffic (local and remote) | * only ping traffic (local and remote) | ||
Revision as of 15:11, 10 March 2010
Contents
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). The Hello GPE World Tutorial page described how to use a GPE. This page describes the SPP's fastpath (NP) features using the IPv4 metanet 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 metanet 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
Packets in a network of SPPs travel through UDP tunnels.
A packet arriving to an SPP is assumed to be a metanet packet encapsulated in an IP/UDP packet. The SPP strips off the outer IP/UDP headers before delivering the metanet packet to either a user's process running on a GPE or to the fastpath code option running on the network processor (NP). That is, a metanet packet is tunneled through the Internet and between SPPs.
In the case of an IPv4 metanet, an IPv4 packet is encapsulated in another IPv4 packet. We refer to the inner packet as an IPv4 metanet packet and the outer packet as the real-net packet which consists of an IPv4 metanet packet, UDP header and IP header.
A meta-interface 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 Metanet
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, metanet 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