Using the IPv4 Code Option
Contents
Introduction
>>>> Metanet or Meta-Net ??? <<<<<
This page describes examples of using the fastpath features involving the IPv4 metanet. Those features include:
- Reservations for bandwidth, queues, filters and memory
- Logical interfaces (meta-interfaces) within each physical interface
- Packet scheduling queues bound to meta-interfaces
- Filters that forward packets to specific queues
Recall that an SPP is a PlanetLab node that combines the high-performance of Network Processors (NPs) with the programmability of general-purpose processors. A PlanetLab node runs a server that allows a user to allocate a subset of a node's resources called a slice to act as a router. An SPP node extends this packet processing paradigm with the notion of a fastpath-slowpath split where the fastpath uses NPs to process data packets at high-speed while the slower speed slowpath handles control and exception packets. In order to provide this service dichotomy for an application, an SPP user does the following for each of its slices:
- Allocate (and configure) a fastpath (FP)
- Create one or more meta-interfaces (MIs) within the FP
- Create and configure packet queues, and bind each queue to an MI
- Install filters to direct incoming packets to packet queues
A fastpath request specifies your desire for SPP resources such as bandwidth, 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.
An SPP IPv4 router was constructed on top of the SPP's substrate facility and is available to SPP users through a code option (copt 1). Examining this code option will improve your understanding of what might be possible when designing the code option for your own protocol.
The SPP Fastpath
A packet arriving to an SPP is assumed to be a meta-net packet encapsulated in an 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). That is, a meta-net packet is tunneled through the Internet and between SPPs.
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 <<<<<
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