Difference between revisions of "SPP Command Interface"

From ARL Wiki
Jump to navigationJump to search
Line 3: Line 3:
 
>>>>> WARNING:  NOT READY FOR PUBLIC CONSUMPTION <<<<<
 
>>>>> WARNING:  NOT READY FOR PUBLIC CONSUMPTION <<<<<
  
== System Resource Manager (SRM) ==
+
== System Resource Manager (SRM) and Resource Manager Proxy (RMP) ==
  
The SRM is the top level controller for the SPP and provides several services.
+
The page [[SPP Control Software]] described the System Resource Manager (SRM) that runs on the SPP's Control Processor and the Resource Manager Proxy (RMP) that runs on each SPP's GPE.
These include acquiring slice definitions from SPP-PLC, instantiating slice definitions, reserving and assigning resources to slices and coordinating the initialization of the whole system.
+
In brief, the SRM coordinates the use of various SPP resources while the RMP provides an interface through which user slices can request and configure resources.
The SRM implements functions provided by the Node Manager on a conventional PlanetLab node, but must provide this functionality in the context of a system with a more complex internal structure, and a richer set of resources.
+
The RMP, in turn, may communicate with the Substrate Control Daemons (SCD) in the Line Card and the NPE to configure packet pathways.
  
The SRM polls SPP-PLC periodically to obtain new slice definitions.
 
When a new slice is detected, the SRM selects one of the two GPEs on which to instantiate the slice.
 
Slice instantiation involves creating a vServer on the selected slice, initializing it and configuring a login so that users can access their assigned vServer.
 
 
Once assigned to a vServer, a user can run programs that send and receive packets on the external interfaces.
 
Outgoing connections are subjected to port number translation at the Line Cards, as described in Section 4.
 
Users may also request the use of specific external port numbers in order to run servers that listen on specific ports.
 
 
User requests are made through an interface provided by the RMP on the user’s assigned GPE.
 
User requests are made through an interface provided by the RMP on the user’s assigned GPE.
 
The RMP forwards these requests to the SRM which manages all system level resources, including external port numbers, physical interface bandwidth and NPE resources.
 
The RMP forwards these requests to the SRM which manages all system level resources, including external port numbers, physical interface bandwidth and NPE resources.
 +
For example, a user can request the use of a specific external port number in order to run a server that listens on that port at the user's GPE.
 +
Or a user may want to reserve resources in advance (e.g., port bandwidth and NPE fastpath).
 +
 +
[[SPP Control Software]] described the programming API provided by the RMP.
 +
This page describes the accompanying command line interface which
 +
allows users to reserve and configure resources interactively or through a shell script.
 +
That command line interface is provided through four programs:
 +
 +
* client
 +
* fltr
 +
* resrv
 +
* create_fp
  
== Resource Manager Proxy (RMP) ==
+
All of these programs implement their functionallity by calling the RMP library functions.
 +
They exist as separate programs for historical reasons.
 +
You will notice that there is a small amount of overlap between functions offered by the programs
 +
although it is our intent to keep this overlap to a minimum.
  
The RMP provides an API used by applications running in vServers.
+
=== HERE HERE HERE ===
The API allows users to reserve resources in advance (such as external port bandwidth and NPE fastpaths), to acquire those resources when a reservation period starts and configure the resources as needed.
 
The RMP is implemented as a daemon that runs in the root context and is accessed through a
 
set of library routines.
 
A command line interface is also provided so that users can reserve and configure resources interactively, or through a shell script.
 
The command line interface converts the given commands to API calls.
 
  
 
The main API calls are listed below in topical sub-sections, along with a brief description of how each call is used.
 
The main API calls are listed below in topical sub-sections, along with a brief description of how each call is used.

Revision as of 22:41, 3 December 2009


>>>>> WARNING: NOT READY FOR PUBLIC CONSUMPTION <<<<<

System Resource Manager (SRM) and Resource Manager Proxy (RMP)

The page SPP Control Software described the System Resource Manager (SRM) that runs on the SPP's Control Processor and the Resource Manager Proxy (RMP) that runs on each SPP's GPE. In brief, the SRM coordinates the use of various SPP resources while the RMP provides an interface through which user slices can request and configure resources. The RMP, in turn, may communicate with the Substrate Control Daemons (SCD) in the Line Card and the NPE to configure packet pathways.

User requests are made through an interface provided by the RMP on the user’s assigned GPE. The RMP forwards these requests to the SRM which manages all system level resources, including external port numbers, physical interface bandwidth and NPE resources. For example, a user can request the use of a specific external port number in order to run a server that listens on that port at the user's GPE. Or a user may want to reserve resources in advance (e.g., port bandwidth and NPE fastpath).

SPP Control Software described the programming API provided by the RMP. This page describes the accompanying command line interface which allows users to reserve and configure resources interactively or through a shell script. That command line interface is provided through four programs:

  • client
  • fltr
  • resrv
  • create_fp

All of these programs implement their functionallity by calling the RMP library functions. They exist as separate programs for historical reasons. You will notice that there is a small amount of overlap between functions offered by the programs although it is our intent to keep this overlap to a minimum.

HERE HERE HERE

The main API calls are listed below in topical sub-sections, along with a brief description of how each call is used. We use a representation that attempts to informally describe the interface semantics. More precise descriptions are given in the reference manual. We use an abstract interface syntax that has the form “R ← F(A1,…,An)” where F is the function name, Ai is the i-th argument, and R is the return value. Mnemonic names are used to convey usage while data type modifiers have been omitted. The following abbreviations and mnemonics are used in argument names and descriptions:

FP FastPath
EP EndPoint (a logical interface used by a slice and
mapped to a physical interface)
LC LineCard
BW BandWidth
DB DataBase
Xdescr X description where X is Q, EP or FP for Queue,
EndPoint, or FastPath (e.g., FPdescr)
Xid X identifier where X is F, FP, MI, Q or S for Filter,
FastPath, MetaInterface, Queue, or Slice (e.g., FPid)

Getting Interface Information

 client --cmd get_ifaces
    Display all interfaces
 client --cmd get_ifpeer --ifn N
    Display the peer of interface num N
 client --cmd get_ifattrs --ifn N
    Display the attributes of interface num N
 client --cmd get_ifn --ipaddr A
    Display the interface associated with IP address A
 client --cmd get_endpoint --fpid I --mii I'
    Display the endpoint associated with (fastpath I, meta-interface I')

Endpoint Management

 client --cmd alloc_endpoint --bw K --ipaddr A --port N --proto P
    Create the K Kbps capacity LC endpoint (A, N, P)
 client --cmd free_endpoint --ipaddr A --port N --proto P
    Remove the K Kbps capacity LC endpoint (A, N, P)

Fastpath Management

 client --cmd alloc_udp_tunnel --fpid I --bw  K --ipaddr A --port N
    Add (A, N) as a local end of a UDP tunnel with capacity K Kbps to fastpath I
 client --cmd free_udp_tunnel --fpid I --ipaddr A --port N
    Free (A, N) as a local end of a UDP tunnel
 client --cmd alloc_fastpath --copt C --firm K --soft 0
               --fltrs N1 --qs N2 --stats N3 --buffs N4 --sram 4096 --dram 0
    Allocate fastpath resources for code option C: K Kbps firm bandwidth, N1 filters, N2 queues, N3 stats indices, N4 buffers
 client --cmd free_fastpath --fpid I
    Free the resources for fastpath I

Queue Management

 client --cmd get_queue_params --fpid I --qid I'
    Get the threshold and bandwidth for (fastpath I, queue I')
 client --cmd get_queue_len --fpid I --qid I'
    Get the length (bytes) of (fastpath I, queue I')
 client --cmd bind_queue --fpid I --miid I' --qid_list_type 0 --qid_list Q1 --qid_list Q2 ...
    Bind queues Q1, Q2, ... to (fastpath I, meta-interface I')
 client --cmd bind_queue --fpid I --miid I' --qid_list_type 1 --qid_list Q1 --qid_list Q2
    Bind queues in the range Q1 to Q2-1 inclusive to (fastpath I, meta-interface I')
 client --cmd set_queue_params --fpid I --qid I' --threshold B --bw K
    Set the threshold and bandwidth of (fastpath I, queue I') to B bytes and K Kbps

Filter Management

Reservations