Difference between revisions of "SPP Command Interface"

From ARL Wiki
Jump to navigationJump to search
Line 1: Line 1:
 
[[Category:The SPP]]
 
[[Category:The SPP]]
  
>>>>> WARNING:  NOT READY FOR PUBLIC CONSUMPTION <<<<<
+
== System Resource Manager (SRM) and Resource Manager Proxy (RMP) ==
  
== System Resource Manager (SRM) and Resource Manager Proxy (RMP) ==
+
[[Image:SPP_Control_Software.png|thumb|right|400px|border|Major Control Software Modules]]
  
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.
+
The page [[SPP Control Software]] describes 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, and it describes 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.
 
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.
 
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.
 
The RMP, in turn, may communicate with the Substrate Control Daemons (SCD) in the Line Card and the NPE to configure packet pathways.
Line 14: Line 16:
 
Or a user may want to reserve resources in advance (e.g., port bandwidth and NPE fastpath).
 
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:
 
That command line interface is provided through four programs:
  
* client
+
{| align=center border=0 cellspacing=5 cellpadding=2
* fltr
+
|-
* resrv
+
| client   || XXX
* create_fp
+
|-
 +
| resrv    || XXX
 +
|-
 +
| fltr     || XXX
 +
|-
 +
| create_fp || XXX
 +
|}
  
All of these programs implement their functionallity by calling the RMP library functions.
+
The first two (client and resrv) provide commands that are used for all metanets.
They exist as separate programs for historical reasons.
+
There exist metanet-specific versions of the second two (fltr and create_fp).
You will notice that there is a small amount of overlap between functions offered by the programs
+
For example, the ''fltr'' and ''create_fp'' programs used in the [[The GEC4 Demo]] configuration script are specific to the IPv4 code option.
although it is our intent to keep this overlap to a minimum.
+
Even though all of these programs implement their functionallity by calling RMP library functions, they exist as separate programs for historical reasons.
  
=== HERE HERE HERE ===
+
== Command Interface Syntax ==
  
The main API calls are listed below in topical sub-sections, along with a brief description of how each call is used.
+
The ''client'' and ''resrv'' commands use GNU-style ''long options'' (e.g., ''--cmd get_endpoint'', ''--ipaddr 10.1.2.3'').
We use a representation that attempts to informally describe the interface semantics.
+
And although they both have a few arguments that controls their configuration (e.g., message log noise volume), this page only describes the user commands.
More precise descriptions are given in the reference manual.
+
In the descriptions below, the following metasymbols are used in the syntactic descriptions:
We use an abstract interface syntax that has the form
 
''R &larr; 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:
 
  
 
{| align=center border=0 cellspacing=5 cellpadding=2
 
{| align=center border=0 cellspacing=5 cellpadding=2
 
|-
 
|-
| FP   || FastPath
+
| '''A'''   || An IP address (e.g., 192.168.2.32)   || || '''K'''    || The number of Kilobits per second
|-
 
|EP    || EndPoint (a logical interface used by a slice and <br> mapped to a physical interface)
 
|-
 
|LC    || LineCard
 
|-
 
|BW    || BandWidth
 
 
|-
 
|-
|DB    || DataBase
+
| '''D'''    || A date in YYYMMDDHHMMSS format        || || '''N'''    || A number (non-negative)
 
|-
 
|-
|Xdescr || X description where X is Q, EP or FP for Queue, <br> EndPoint, or FastPath (e.g., FPdescr)
+
| '''F'''  || A filename                            || || '''P'''    || Protocol number (e.g., 6 (TCP), 17 (UDP))
 
|-
 
|-
|Xid   || X identifier where X is F, FP, MI, Q or S for Filter, <br> FastPath, MetaInterface, Queue, or Slice (e.g., FPid)
+
| '''I'''   || An identifier or index                || || '''Q'''    || Queue identifier
 
|}
 
|}
 +
 +
When a command uses multiple instances of a metasymbol, quotes or integers may be used to distinguish each instance (e.g., N and N' or N1, N2 and N3).
  
 
== Command Interface ==
 
== Command Interface ==

Revision as of 00:41, 10 December 2009


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

Major Control Software Modules

The page SPP Control Software describes 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, and it describes 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. 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).

That command line interface is provided through four programs:

client XXX
resrv XXX
fltr XXX
create_fp XXX

The first two (client and resrv) provide commands that are used for all metanets. There exist metanet-specific versions of the second two (fltr and create_fp). For example, the fltr and create_fp programs used in the The GEC4 Demo configuration script are specific to the IPv4 code option. Even though all of these programs implement their functionallity by calling RMP library functions, they exist as separate programs for historical reasons.

Command Interface Syntax

The client and resrv commands use GNU-style long options (e.g., --cmd get_endpoint, --ipaddr 10.1.2.3). And although they both have a few arguments that controls their configuration (e.g., message log noise volume), this page only describes the user commands. In the descriptions below, the following metasymbols are used in the syntactic descriptions:

A An IP address (e.g., 192.168.2.32) K The number of Kilobits per second
D A date in YYYMMDDHHMMSS format N A number (non-negative)
F A filename P Protocol number (e.g., 6 (TCP), 17 (UDP))
I An identifier or index Q Queue identifier

When a command uses multiple instances of a metasymbol, quotes or integers may be used to distinguish each instance (e.g., N and N' or N1, N2 and N3).

Command Interface

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')

Resource Reservations

INFORMATION:

 resrv --cmd get_resrvs

Display all slice reservations

 resrv --cmd get_resrv [--date D]

Display slice reservation for period covered by date D (default: current) Date format is YYYYMMDDHHMMSS RESERVATIONS:

 resrv --cmd make_resrv --xfile F

Make a reservation described by XML file F

 resrv --cmd cancel_resrv [--date D]

Cancel slice reservation for period covered by date D (default: current) Date format is YYYYMMDDHHMMSS

 resrv --cmd update_resrv --xfile F

Update slice reservation described by XML file F RESOURCES:

 resrv --cmd alloc_plspec

Allocate GPE slice resources

 resrv --cmd free_plspec

Free GPE slice resources

 resrv --cmd free_fpspec --fpid I

Free fastpath slice resources for fastpath 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