Difference between revisions of "SPP Command Interface"

From ARL Wiki
Jump to navigationJump to search
 
(11 intermediate revisions by the same user not shown)
Line 16: 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).
  
That command line interface is currently provided through four programs:  ''client'', ''resrv'', ''fltr_ipv4'' and ''create_fp_ipv4''.
+
That command line interface is currently provided through three programs:  ''scfg'' (slice configuration), ''ip_fpc'' (IPv4 filter configuration) and ''ip_fpd'' (IPv4 fastpath daemon).
The ''client'' and ''resrv'' programs apply to any metanet while ''fltr_ipv4'' and ''create_fp_ipv4'' are specific to the IPv4 code option.
+
(<font color=red>'''Note:''' These names are likely to change in the near future.</font>
 +
The ''scfg'' program applies to any fastpath while ''ip_fpc'' and ''ip_fpd'' are specific to the IPv4 code option.
  
 
{| align=center border=1 cellspacing=0 cellpadding=3
 
{| align=center border=1 cellspacing=0 cellpadding=3
 
! Program            || Functionality
 
! Program            || Functionality
 
|-
 
|-
| ''client''        || Interface information, endpoint management, <br>fastpath management, queue management
+
| ''scfg''        || Interface information, endpoint management, <br>fastpath management, queue management, <br>reservation management
 
|-
 
|-
| ''resrv''         || Resource reservation
+
| ''ip_fpc''     || IPv4 filter management
 
|-
 
|-
| ''fltr_ipv4''     || Filter management
+
| ''ip_fpd'' || IPv4 fastpath configuration, LD and EX traffic handling
|-
 
| ''create_fp_ipv4'' || Fastpath configuration, LD and EX traffic handling
 
 
|}
 
|}
  
There will be other metanet-specific programs as other code options get developed.
+
There will be other fastpath-specific programs as other code options get developed.
 
It is worth noting that all of these programs implement their functionallity by calling RMP library functions.
 
It is worth noting that all of these programs implement their functionallity by calling RMP library functions.
 
The fact that these programs exist as separate programs is historic.
 
The fact that these programs exist as separate programs is historic.
 
For example, one could have a single ''ipv4_control'' program that included all of the functionality of these programs.
 
For example, one could have a single ''ipv4_control'' program that included all of the functionality of these programs.
Furthermore, a new code option such as ''vnet'' would have a ''vnet_control'' program that included the functionality in the ''client'' and ''resrv'' programs above and vnet-specific functionality for filters and handling LD and EX traffic.
+
Furthermore, a new code option such as ''vnet'' would have a ''vnet_control'' program that included the functionality in the ''scfg'' program above and vnet-specific functionality for filters and handling LD and EX traffic.
(Note:  The programs ''fltr_ipv4'' and ''create_fp_ipv4'' were called ''fltr'' and ''create_fp'' respectively in [[The GEC4 Demo]].)
+
(Note:  The programs ''ip_fpc'' and ''ip_fpd'' were called ''fltr'' and ''create_fp'' respectively in [[The GEC4 Demo]].)
  
 
== Command Interface Syntax ==
 
== Command Interface Syntax ==
  
The ''client'' and ''resrv'' commands use GNU-style ''long options'' (e.g., ''--cmd get_endpoint'', ''--ipaddr 10.1.2.3'').
+
The ''scfg'' command uses GNU-style ''long options'' (e.g., ''--cmd get_endpoint'', ''--ipaddr 10.1.2.3'').
 
And although they both have a few arguments that control their configuration (e.g., message log noise volume), this page only describes the user commands.
 
And although they both have a few arguments that control 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:
 
In the descriptions below, the following metasymbols are used in the syntactic descriptions:
Line 48: Line 47:
 
| '''A'''    || IP address (e.g., 192.168.2.32)      || || '''K'''    || The number of Kilobits per second
 
| '''A'''    || IP address (e.g., 192.168.2.32)      || || '''K'''    || The number of Kilobits per second
 
|-
 
|-
| '''D'''    || Date in YYYMMDDHHMMSS format          || || '''M'''    || Meta-interface identifier
+
| '''D'''    || Date in YYYMMDDHHMMSS format          || ||           ||  
 
|-
 
|-
 
| '''F'''    || Filter identifier                    || || '''N'''    || Number (non-negative)
 
| '''F'''    || Filter identifier                    || || '''N'''    || Number (non-negative)
Line 56: Line 55:
 
| '''I'''    || An identifier or index                || || '''Q'''    || Queue identifier
 
| '''I'''    || An identifier or index                || || '''Q'''    || Queue identifier
 
|-
 
|-
| '''[x]''' || Optional argument x                   || || '''S'''    || Statistics index
+
| '''['''x''']'''|| Optional argument x               || || '''S'''    || Statistics index
 
|-
 
|-
| '''{x|y}'''|| Alternative arguments x and y         || || '''X'''    || Hexadecimal mask or 0
+
| '''{''' x '''xxx''' y '''}''' || Alternative arguments x and y || || '''X'''    || Hexadecimal mask or 0
 
|}
 
|}
  
Line 64: Line 63:
  
 
== Command Interface ==
 
== Command Interface ==
 +
 +
The following description of the command-line interface is meant as a quick reference.
 +
If you are looking for a tutorial format, consider [[The SPP Tutorial]] page which will contain links to [[The Hello GPE World Tutorial]] and [[Using the IPv4 Code Option]].
 +
 +
The command-line interface is provided through three programs:  ''scfg'' (slice configuration), ''ip_fpc'' (IPv4 fastpath filter configuration) and ''ip_fpd'' (IPv4 fastpath daemon).
 +
The ''scfg'' program applies to any fastpath while ''ip_fpc'' and ''ip_fpd'' are specific to the IPv4 code option.
 +
The primary function of the IPv4 daemon ''ip_fpd'' is to intialize the IPv4
 +
code option and handle local delivery and error packets for that code option.
 +
The program ''ip_fpc'' manages filters for the IPv4 code option.
 +
All other functions that are generic to any fastpath (e.g., getting information about physical interfaces, allocating resources, making resource reservations, managing fastpath queues) are done by the ''scfg'' program.
  
 
=== Getting Interface Information ===
 
=== Getting Interface Information ===
  
 
+
* scfg --cmd get_ifaces
  client --cmd get_ifaces
 
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
 
Display all interfaces
 
Display all interfaces
 
         </ul>
 
         </ul>
  client --cmd get_ifpeer --ifn N
+
* scfg --cmd get_ifpeer --ifn <font color=red>N</font>
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Display the peer of interface num N
+
Display the peer of interface num <font color=red>N</font>
 
         </ul>
 
         </ul>
  client --cmd get_ifattrs --ifn N
+
* scfg --cmd get_ifattrs --ifn <font color=red>N</font>
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Display the attributes of interface num N
+
Display the attributes of interface num <font color=red>N</font>
 
         </ul>
 
         </ul>
  client --cmd get_ifn --ipaddr A
+
* scfg --cmd get_ifn --ipaddr <font color=red>A</font>
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Display the interface associated with IP address A
+
Display the interface associated with IP address <font color=red>A</font>
        </ul>
 
  client --cmd get_endpoint --fpid I --mii M
 
        <ul style="padding-left: 0.5in;">
 
Display the endpoint associated with (fastpath I, meta-interface M)
 
 
         </ul>
 
         </ul>
 +
 
=== Reservation Management ===
 
=== Reservation Management ===
  
  resrv --cmd get_resrvs
+
* scfg --cmd get_resrvs
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
 
Display all slice reservations
 
Display all slice reservations
 
         </ul>
 
         </ul>
  resrv --cmd get_resrv [--date D]
+
* scfg --cmd get_resrv [--date <font color=red>D</font>]
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Display slice reservation for period covered by date D (default: current).
+
Display slice reservation for period covered by date <font color=red>D</font> (default: current).
 
<br>Date format is YYYYMMDDHHMMSS.
 
<br>Date format is YYYYMMDDHHMMSS.
 
         </ul>
 
         </ul>
  resrv --cmd make_resrv --xfile FN
+
* scfg --cmd make_resrv --xfile <font color=red>FN</font>
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Make a reservation described by XML file FN
+
Make a reservation described by XML file <font color=red>FN</font>
 
         </ul>
 
         </ul>
  resrv --cmd cancel_resrv [--date D]
+
* scfg --cmd cancel_resrv [--date <font color=red>D</font>]
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Cancel slice reservation for period covered by date D (default: current).
+
Cancel slice reservation for period covered by date <font color=red>D</font> (default: current).
 
<br>Date format is YYYYMMDDHHMMSS.
 
<br>Date format is YYYYMMDDHHMMSS.
 
         </ul>
 
         </ul>
  resrv --cmd update_resrv --xfile FN
+
* scfg --cmd update_resrv --xfile <font color=red>FN</font>
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Update slice reservation described by XML file FN
+
Update slice reservation described by XML file <font color=red>FN</font>
 
         </ul>
 
         </ul>
  resrv --cmd alloc_plspec
+
 
 +
=== Setup/Free ===
 +
 
 +
 
 +
* scfg --cmd claim_resources
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Allocate GPE slice resources
+
Allocate slowpath (GPE) slice resources
 
         </ul>
 
         </ul>
  resrv --cmd free_plspec
+
* scfg --cmd free_sp_resources
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Free GPE slice resources
+
Free slowpath (GPE) slice resources
 
         </ul>
 
         </ul>
  resrv --cmd free_fpspec --fpid I
+
* scfg --cmd free_fp_resources --fp <font color=red>I</font>
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Free fastpath slice resources for fastpath I
+
Free fastpath slice resources for fastpath <font color=red>I</font>
 
         </ul>
 
         </ul>
 
+
* scfg --cmd setup_sp_endpoint --bw <font color=red>K</font> --ipaddr <font color=red>A</font> --port <font color=red>N</font> --proto <font color=red>P</font>
 
 
=== Endpoint Management ===
 
 
 
  client --cmd alloc_endpoint --bw K --ipaddr A --port N --proto P
 
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Create the K Kbps capacity LC endpoint (A, N, P)
+
Create the <font color=red>K</font> Kbps capacity slowpath LC endpoint (<font color=red>A</font>, <font color=red>N</font>, <font color=red>P</font>)
 
         </ul>
 
         </ul>
  client --cmd free_endpoint --ipaddr A --port N --proto P
+
* scfg --cmd free_sp_endpoint --ipaddr <font color=red>A</font> --port <font color=red>N</font> --proto <font color=red>P</font>
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Remove the K Kbps capacity LC endpoint (A, N, P)
+
Remove the slowpath LC endpoint (<font color=red>A</font>, <font color=red>N</font>, <font color=red>P</font>)
 
         </ul>
 
         </ul>
 
+
* scfg --cmd setup_fp_tunnel --fp <font color=red>I</font> --bw  <font color=red>K</font> --ipaddr <font color=red>A</font> --port <font color=red>N</font>
=== Fastpath Management ===
 
 
 
  client --cmd alloc_udp_tunnel --fpid I --bw  K --ipaddr A --port N
 
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Add (A, N) as a local end of a UDP tunnel with capacity K Kbps to fastpath I
+
Add (<font color=red>A</font>, <font color=red>N</font>) as a local end of a fastpath (UDP) tunnel with capacity <font color=red>K</font> Kbps to fastpath <font color=red>I</font>.  Return the fastpath interface identifier in ''scfg'''s exit code which can be captured in the shell variable ''$?''.
 
         </ul>
 
         </ul>
  client --cmd free_udp_tunnel --fpid I --ipaddr A --port N
+
* scfg --cmd free_fp_tunnel --fp <font color=red>I</font> --fpif <font color=red>I'</font>
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Free (A, N) as a local end of a UDP tunnel
+
Free fastpath interface (<font color=red>I</font>, <font color=red>I'</font>) where <font color=red>I</font> is the fastpath identifier and <font color=red>I'</font> is the fastpath interface identifier
 
         </ul>
 
         </ul>
<!-- COMMENT
 
### OBSOLTE ###
 
#  client --cmd alloc_fastpath --copt C --firm K --soft 0
 
#                --fltrs N1 --qs N2 --stats N3 --buffs N4 --sram 4096 --dram 0
 
#        <ul style="padding-left: 0.5in;">
 
# Allocate fastpath resources for code option C:
 
#   K Kbps firm bandwidth, N1 filters, N2 queues, N3 stats indices, N4 buffers
 
#        </ul>
 
#  client --cmd free_fastpath --fpid I
 
#        <ul style="padding-left: 0.5in;">
 
# Free the resources for fastpath I
 
#        </ul>
 
END -->
 
  
 
=== Queue Management ===
 
=== Queue Management ===
  
  client --cmd get_queue_params --fpid I --qid Q
+
* scfg --cmd get_queue_params --fp <font color=red>I</font> --qid <font color=red>Q</font>
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Get the threshold and bandwidth for (fastpath I, queue Q)
+
Get the threshold and bandwidth for (fastpath <font color=red>I</font>, queue <font color=red>Q</font>)
 
         </ul>
 
         </ul>
  client --cmd get_queue_len --fpid I --qid Q
+
* scfg --cmd get_queue_len --fp <font color=red>I</font> --qid <font color=red>Q</font>
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Get the length (bytes) of (fastpath I, queue Q)
+
Get the length (bytes) of (fastpath <font color=red>I</font>, queue <font color=red>Q</font>)
 
         </ul>
 
         </ul>
  client --cmd bind_queue --fpid I --miid M --qid_list_type 0 --qid_list Q1 --qid_list Q2 ...
+
* scfg --cmd bind_queue --fp <font color=red>I</font> --fpif <font color=red>I'</font> --qid <font color=red>Q1,Q2,...</font>
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Bind queues Q1, Q2, ... to (fastpath I, meta-interface M)
+
Bind queues <font color=red>Q1</font>, <font color=red>Q2</font>, ... to (fastpath <font color=red>I</font>, fastpath interface <font color=red>I'</font>)
 
         </ul>
 
         </ul>
  client --cmd bind_queue --fpid I --miid M --qid_list_type 1 --qid_list Q1 --qid_list Q2
+
* scfg --cmd bind_queue --fp <font color=red>I</font> --fpif <font color=red>I'</font> --qid <font color=red>Q1-Q2</font>
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Bind queues in the range Q1 to Q2-1 inclusive to (fastpath I, meta-interface M)
+
Bind queues in the range <font color=red>Q1</font> to <font color=red>Q2</font> inclusive to (fastpath <font color=red>I</font>, fastpath interface <font color=red>I'</font>)
 
         </ul>
 
         </ul>
  client --cmd set_queue_params --fpid I --qid Q --threshold B --bw K
+
* scfg --cmd set_queue_params --fp <font color=red>I</font> --qid <font color=red>Q</font> --threshold <font color=red>B</font> --bw <font color=red>K</font>
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
Set the threshold and bandwidth of (fastpath I, queue I') to B bytes and K Kbps
+
Set the threshold and bandwidth of (fastpath <font color=red>I</font>, queue <font color=red>Q</font>) to <font color=red>B</font> bytes and <font color=red>K</font> Kbps
 
         </ul>
 
         </ul>
  
 
=== IPv4 Filter Management ===
 
=== IPv4 Filter Management ===
  
xxxxx
+
Filter management for the IPv4 code option is done through the ''ip_fpc'' program.
key, mask, peer
+
The stylized syntax of the ''ip_fpc'' command is:
  
   fltr --cmd write_fltr --fpid I --fid F
+
   ip_fpc --cmd write_fltr --fpid I --fid I'                                      # ID
        --key_type {0|1} --key_rxmi M
+
    [--res_ld]                                                                  # SPECIAL
        --key_saddr A   --key_sport N   --key_daddr A'   --key_dport N'
+
   
        --mask_saddr X1 --mask_sport X2 --mask_daddr X1' --mask_dport X2'
+
    --key_type {0|1}   --key_rxmi M                                             # KEY
        --key_proto P   --mask_flags xxxxx
+
    --key_saddr Asrc   --key_sport Nsrc   --key_daddr Adst   --key_dport Ndst    # KEY
        --txdaddr Aout  --txdport Nout
+
    --key_proto P                                                                # KEY
        --qid Q         --sindx S
+
   
 +
    --mask_saddr Asrc' --mask_sport Nsrc' --mask_daddr Adst' --mask_dport Ndst' # MASK
 +
    --mask_flags P'XXX                                                          # MASK
 +
   
 +
    --txdaddr Anxt    --txdport Nnxt                                            # RESULT
 +
    --qid Q           --sindx S                                                 # RESULT
 +
 
 +
(CAVEAT: XXXXX)
 +
 
 +
* ID
 +
** x
 +
* SPECIAL
 +
** x
 +
* KEY
 +
** x
 +
* MASK
 +
** x
 +
* RESULT
 +
** x
 +
 
 +
XXXXX
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
 
         Install a filter for fastpath I with filter identifier F.
 
         Install a filter for fastpath I with filter identifier F.
Line 205: Line 214:
 
         F is from the range 0 to n-3 where n is the number of filter resources requested for the fastpath.
 
         F is from the range 0 to n-3 where n is the number of filter resources requested for the fastpath.
 
         </ul>
 
         </ul>
   fltr --cmd update_result
+
   ip_fpc --cmd update_result --fpid I --fid I' RESULT
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
 +
        Update the result part of filter (I, I') where I is the fastpath identifier and I' is the filter identifier.
 
         </ul>
 
         </ul>
   fltr --cmd get_fltr_bykey
+
   ip_fpc --cmd get_fltr_bykey --fpid I KEY
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
 +
        Display the entire filter (key, mask, result) from fastpath I matching KEY.
 
         </ul>
 
         </ul>
   fltr --cmd get_fltr_byfid
+
   ip_fpc --cmd get_fltr_byfid --fpid I --fid I'
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
 +
        Display the filter from fastpath I with filter identifier I'.
 
         </ul>
 
         </ul>
   fltr --cmd lookup_fltr
+
   ip_fpc --cmd lookup_fltr --fpid I KEY
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
 +
        Display the result part of the filter from fastpath I matching KEY.
 
         </ul>
 
         </ul>
   fltr --cmd rem_fltr_bykey
+
   ip_fpc --cmd rem_fltr_bykey --fpid I KEY
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
 
         </ul>
 
         </ul>
   fltr --cmd rem_fltr_byfid
+
   ip_fpc --cmd rem_fltr_byfid --fpid I --fid I'
 
         <ul style="padding-left: 0.5in;">
 
         <ul style="padding-left: 0.5in;">
 +
        Remove the filter (I, I') where I is the fastpath identifier and I' is the filter identifier.
 
         </ul>
 
         </ul>
  
 +
=== IPv4 Fastpath Creation ===
 +
 +
  ip_fpd --fpName FN --myIP A --myPort N >> ip_fpd.log &
  
=== IPv4 Fastpath Creation ===
 
  
 
xxx
 
xxx
 +
 +
 
  
 
== Examples ==
 
== Examples ==
  
 
xxx
 
xxx

Latest revision as of 16:02, 2 April 2010


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 currently provided through three programs: scfg (slice configuration), ip_fpc (IPv4 filter configuration) and ip_fpd (IPv4 fastpath daemon). (Note: These names are likely to change in the near future. The scfg program applies to any fastpath while ip_fpc and ip_fpd are specific to the IPv4 code option.

Program Functionality
scfg Interface information, endpoint management,
fastpath management, queue management,
reservation management
ip_fpc IPv4 filter management
ip_fpd IPv4 fastpath configuration, LD and EX traffic handling

There will be other fastpath-specific programs as other code options get developed. It is worth noting that all of these programs implement their functionallity by calling RMP library functions. The fact that these programs exist as separate programs is historic. For example, one could have a single ipv4_control program that included all of the functionality of these programs. Furthermore, a new code option such as vnet would have a vnet_control program that included the functionality in the scfg program above and vnet-specific functionality for filters and handling LD and EX traffic. (Note: The programs ip_fpc and ip_fpd were called fltr and create_fp respectively in The GEC4 Demo.)

Command Interface Syntax

The scfg command uses GNU-style long options (e.g., --cmd get_endpoint, --ipaddr 10.1.2.3). And although they both have a few arguments that control 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 IP address (e.g., 192.168.2.32) K The number of Kilobits per second
D Date in YYYMMDDHHMMSS format
F Filter identifier N Number (non-negative)
FN Filename P Protocol number (e.g., 6 (TCP), 17 (UDP))
I An identifier or index Q Queue identifier
[x] Optional argument x S Statistics index
{ x xxx y } Alternative arguments x and y X Hexadecimal mask or 0

When a command description needs to use multiple instances of a metasymbol, distinction between instances is indicated by following the metasymbol insances by one or more distinguishing symbols (e.g., quote, integer, lowercase letters) (e.g., N and N' or N1, N2 and N3).

Command Interface

The following description of the command-line interface is meant as a quick reference. If you are looking for a tutorial format, consider The SPP Tutorial page which will contain links to The Hello GPE World Tutorial and Using the IPv4 Code Option.

The command-line interface is provided through three programs: scfg (slice configuration), ip_fpc (IPv4 fastpath filter configuration) and ip_fpd (IPv4 fastpath daemon). The scfg program applies to any fastpath while ip_fpc and ip_fpd are specific to the IPv4 code option. The primary function of the IPv4 daemon ip_fpd is to intialize the IPv4 code option and handle local delivery and error packets for that code option. The program ip_fpc manages filters for the IPv4 code option. All other functions that are generic to any fastpath (e.g., getting information about physical interfaces, allocating resources, making resource reservations, managing fastpath queues) are done by the scfg program.

Getting Interface Information

  • scfg --cmd get_ifaces
    Display all interfaces
  • scfg --cmd get_ifpeer --ifn N
    Display the peer of interface num N
  • scfg --cmd get_ifattrs --ifn N
    Display the attributes of interface num N
  • scfg --cmd get_ifn --ipaddr A
    Display the interface associated with IP address A

Reservation Management

  • scfg --cmd get_resrvs
    Display all slice reservations
  • scfg --cmd get_resrv [--date D]
    Display slice reservation for period covered by date D (default: current).
    Date format is YYYYMMDDHHMMSS.
  • scfg --cmd make_resrv --xfile FN
    Make a reservation described by XML file FN
  • scfg --cmd cancel_resrv [--date D]
    Cancel slice reservation for period covered by date D (default: current).
    Date format is YYYYMMDDHHMMSS.
  • scfg --cmd update_resrv --xfile FN
    Update slice reservation described by XML file FN

Setup/Free

  • scfg --cmd claim_resources
    Allocate slowpath (GPE) slice resources
  • scfg --cmd free_sp_resources
    Free slowpath (GPE) slice resources
  • scfg --cmd free_fp_resources --fp I
    Free fastpath slice resources for fastpath I
  • scfg --cmd setup_sp_endpoint --bw K --ipaddr A --port N --proto P
    Create the K Kbps capacity slowpath LC endpoint (A, N, P)
  • scfg --cmd free_sp_endpoint --ipaddr A --port N --proto P
    Remove the slowpath LC endpoint (A, N, P)
  • scfg --cmd setup_fp_tunnel --fp I --bw K --ipaddr A --port N
    Add (A, N) as a local end of a fastpath (UDP) tunnel with capacity K Kbps to fastpath I. Return the fastpath interface identifier in scfg's exit code which can be captured in the shell variable $?.
  • scfg --cmd free_fp_tunnel --fp I --fpif I'
    Free fastpath interface (I, I') where I is the fastpath identifier and I' is the fastpath interface identifier

Queue Management

  • scfg --cmd get_queue_params --fp I --qid Q
    Get the threshold and bandwidth for (fastpath I, queue Q)
  • scfg --cmd get_queue_len --fp I --qid Q
    Get the length (bytes) of (fastpath I, queue Q)
  • scfg --cmd bind_queue --fp I --fpif I' --qid Q1,Q2,...
    Bind queues Q1, Q2, ... to (fastpath I, fastpath interface I')
  • scfg --cmd bind_queue --fp I --fpif I' --qid Q1-Q2
    Bind queues in the range Q1 to Q2 inclusive to (fastpath I, fastpath interface I')
  • scfg --cmd set_queue_params --fp I --qid Q --threshold B --bw K
    Set the threshold and bandwidth of (fastpath I, queue Q) to B bytes and K Kbps

IPv4 Filter Management

Filter management for the IPv4 code option is done through the ip_fpc program. The stylized syntax of the ip_fpc command is:

 ip_fpc --cmd write_fltr --fpid I --fid I'                                      # ID
   [--res_ld]                                                                   # SPECIAL
   
   --key_type {0|1}   --key_rxmi M                                              # KEY
   --key_saddr Asrc   --key_sport Nsrc   --key_daddr Adst   --key_dport Ndst    # KEY
   --key_proto P                                                                # KEY
   
   --mask_saddr Asrc' --mask_sport Nsrc' --mask_daddr Adst' --mask_dport Ndst'  # MASK
   --mask_flags P'XXX                                                           # MASK
   
   --txdaddr Anxt     --txdport Nnxt                                            # RESULT
   --qid Q            --sindx S                                                 # RESULT

(CAVEAT: XXXXX)

  • ID
    • x
  • SPECIAL
    • x
  • KEY
    • x
  • MASK
    • x
  • RESULT
    • x

XXXXX

    Install a filter for fastpath I with filter identifier F.
    match (key-mask), peer, qid, stats
    key_type
    F is from the range 0 to n-3 where n is the number of filter resources requested for the fastpath.
 ip_fpc --cmd update_result --fpid I --fid I' RESULT
    Update the result part of filter (I, I') where I is the fastpath identifier and I' is the filter identifier.
 ip_fpc --cmd get_fltr_bykey --fpid I KEY
    Display the entire filter (key, mask, result) from fastpath I matching KEY.
 ip_fpc --cmd get_fltr_byfid --fpid I --fid I'
    Display the filter from fastpath I with filter identifier I'.
 ip_fpc --cmd lookup_fltr --fpid I KEY
    Display the result part of the filter from fastpath I matching KEY.
 ip_fpc --cmd rem_fltr_bykey --fpid I KEY
 ip_fpc --cmd rem_fltr_byfid --fpid I --fid I'
    Remove the filter (I, I') where I is the fastpath identifier and I' is the filter identifier.

IPv4 Fastpath Creation

 ip_fpd --fpName FN --myIP A --myPort N >> ip_fpd.log &


xxx


Examples

xxx