Internet Engineering Task Force                                  W. Wang
Internet-Draft                             Zhejiang Gongshang University
Intended status: Informational                             E. Haleplidis
Expires: December 31, 2009                          University of Patras
                                                                K. Ogawa
                                                         NTT Corporation
                                                                  F. Jia
                                              National Digital Switching
                                                            Center(NDSC)
                                                              J. Halpern
                                                                Ericsson
                                                           June 29, 2009
                           ForCES LFB Library
                      draft-ietf-forces-lfb-lib-00
Status of this Memo
   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of BCP 78 and BCP 79.
   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.
   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."
   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.
   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.
   This Internet-Draft will expire on December 31, 2009.
Copyright Notice
   Copyright (c) 2009 IETF Trust and the persons identified as the
   document authors.  All rights reserved.
   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents in effect on the date of
   publication of this document (http://trustee.ietf.org/license-info).
Wang, et al.            Expires December 31, 2009               [Page 1]
Internet-Draft             ForCES LFB Library                  June 2009
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.
Wang, et al.            Expires December 31, 2009               [Page 2]
Internet-Draft             ForCES LFB Library                  June 2009
Abstract
   The forwarding and Control Element Separation (ForCES) protocol
   defines a standard communication and control mechanism through which
   a Control Element (CE) can control the behavior of a Forwarding
   Element (FE).  That control is accomplished through manipulating
   components of Logical Function Blocks (LFBs), whose structure is
   defined in a model RFC produced by the working group.In order to
   build an actual solution using this protocol, there needs to be a set
   of Logical Function Block definitions that can be instantiated by FEs
   and controlled by CEs.  This document provides a sample space of such
   definitions.  It is anticipated that additional defining documents
   will be produced over time.
Table of Contents
   1.  Terminology and Conventions . . . . . . . . . . . . . . . . .   5
     1.1.  Requirements Language . . . . . . . . . . . . . . . . . .   5
   2.  Definitions . . . . . . . . . . . . . . . . . . . . . . . . .   6
   3.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   8
   4.  Base Definitions  . . . . . . . . . . . . . . . . . . . . . .  10
     4.1.  Framedefs . . . . . . . . . . . . . . . . . . . . . . . .  10
     4.2.  DataTypeDefs  . . . . . . . . . . . . . . . . . . . . . .  11
     4.3.  MetaDataDefs  . . . . . . . . . . . . . . . . . . . . . .  38
   5.  LFB Descriptions  . . . . . . . . . . . . . . . . . . . . . .  44
     5.1.  Core LFBs . . . . . . . . . . . . . . . . . . . . . . . .  44
       5.1.1.  FEObject LFB  . . . . . . . . . . . . . . . . . . . .  44
       5.1.2.  FEProtocol LFB  . . . . . . . . . . . . . . . . . . .  45
     5.2.  Port LFBs . . . . . . . . . . . . . . . . . . . . . . . .  45
       5.2.1.  GenericConnectivityLFB  . . . . . . . . . . . . . . .  45
       5.2.2.  EtherPort . . . . . . . . . . . . . . . . . . . . . .  45
       5.2.3.  EtherDecap  . . . . . . . . . . . . . . . . . . . . .  46
       5.2.4.  EtherEncap  . . . . . . . . . . . . . . . . . . . . .  46
     5.3.  Address LFBs  . . . . . . . . . . . . . . . . . . . . . .  46
       5.3.1.  IPv6AddrResolution  . . . . . . . . . . . . . . . . .  46
       5.3.2.  Arp . . . . . . . . . . . . . . . . . . . . . . . . .  46
       5.3.3.  ICMPGenerator . . . . . . . . . . . . . . . . . . . .  46
       5.3.4.  ICMPv6Generator . . . . . . . . . . . . . . . . . . .  46
       5.3.5.  IPv4Validator . . . . . . . . . . . . . . . . . . . .  47
       5.3.6.  IPv6Validator . . . . . . . . . . . . . . . . . . . .  47
     5.4.  Forwarding LFBs . . . . . . . . . . . . . . . . . . . . .  47
       5.4.1.  IPv4UcastLPM  . . . . . . . . . . . . . . . . . . . .  47
       5.4.2.  IPv4NextHopApplicator . . . . . . . . . . . . . . . .  47
       5.4.3.  IPv6UcastLPM  . . . . . . . . . . . . . . . . . . . .  47
       5.4.4.  IPv6UcastNexthopApplicator  . . . . . . . . . . . . .  47
     5.5.  Queue and scheduler LFBs  . . . . . . . . . . . . . . . .  48
       5.5.1.  Scheduler . . . . . . . . . . . . . . . . . . . . . .  48
Wang, et al.            Expires December 31, 2009               [Page 3]
Internet-Draft             ForCES LFB Library                  June 2009
       5.5.2.  Queue . . . . . . . . . . . . . . . . . . . . . . . .  49
       5.5.3.  WRRSched  . . . . . . . . . . . . . . . . . . . . . .  49
     5.6.  Miscellanious LFBs  . . . . . . . . . . . . . . . . . . .  49
       5.6.1.  ExtendHeaderProc  . . . . . . . . . . . . . . . . . .  49
       5.6.2.  MetadataClassifier  . . . . . . . . . . . . . . . . .  49
       5.6.3.  OptionProc  . . . . . . . . . . . . . . . . . . . . .  49
       5.6.4.  RedirectLFB . . . . . . . . . . . . . . . . . . . . .  50
       5.6.5.  PacketTrimmer . . . . . . . . . . . . . . . . . . . .  50
       5.6.6.  Duplicator  . . . . . . . . . . . . . . . . . . . . .  50
       5.6.7.  ArbitraryClassifierLFB  . . . . . . . . . . . . . . .  50
   6.  LFB Library Definition  . . . . . . . . . . . . . . . . . . .  51
   7.  LFB Use Case  . . . . . . . . . . . . . . . . . . . . . . . . 112
   8.  Contributors  . . . . . . . . . . . . . . . . . . . . . . . . 113
   9.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . 114
   10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 115
   11. Security Considerations . . . . . . . . . . . . . . . . . . . 116
   12. References  . . . . . . . . . . . . . . . . . . . . . . . . . 117
     12.1. Normative References  . . . . . . . . . . . . . . . . . . 117
     12.2. Informative References  . . . . . . . . . . . . . . . . . 117
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . . 118
Wang, et al.            Expires December 31, 2009               [Page 4]
Internet-Draft             ForCES LFB Library                  June 2009
1.  Terminology and Conventions
1.1.  Requirements Language
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].
Wang, et al.            Expires December 31, 2009               [Page 5]
Internet-Draft             ForCES LFB Library                  June 2009
2.  Definitions
   This document follows the terminology defined by the ForCES
   Requirements in [RFC3654]and by the ForCES framework in [RFC3746].
   The definitions below are repeated below for clarity.
      Control Element (CE) - A logical entity that implements the ForCES
      protocol and uses it to instruct one or more FEs on how to process
      packets.  CEs handle functionality such as the execution of
      control and signaling protocols.
      Forwarding Element (FE) - A logical entity that implements the
      ForCES protocol.  FEs use the underlying hardware to provide per-
      packet processing and handling as directed/controlled by one or
      more CEs via the ForCES protocol.
      ForCES Network Element (NE) - An entity composed of one or more
      CEs and one or more FEs.  To entities outside an NE, the NE
      represents a single point of management.  Similarly, an NE usually
      hides its internal organization from external entities.
      LFB (Logical Function Block) - The basic building block that is
      operated on by the ForCES protocol.  The LFB is a well defined,
      logically separable functional block that resides in an FE and is
      controlled by the CE via ForCES protocol.  The LFB may reside at
      the FE's datapath and process packets or may be purely an FE
      control or configuration entity that is operated on by the CE.
      Note that the LFB is a functionally accurate abstraction of the
      FE's processing capabilities, but not a hardware-accurate
      representation of the FE implementation.
      FE Topology - A representation of how the multiple FEs within a
      single NE are interconnected.  Sometimes this is called inter-FE
      topology, to be distinguished from intra-FE topology (i.e., LFB
      topology).
      LFB Class and LFB Instance - LFBs are categorized by LFB Classes.
      An LFB Instance represents an LFB Class (or Type) existence.
      There may be multiple instances of the same LFB Class (or Type) in
      an FE.  An LFB Class is represented by an LFB Class ID, and an LFB
      Instance is represented by an LFB Instance ID.  As a result, an
      LFB Class ID associated with an LFB Instance ID uniquely specifies
      an LFB existence.
      LFB Metadata - Metadata is used to communicate per-packet state
      from one LFB to another, but is not sent across the network.  The
      FE model defines how such metadata is identified, produced and
      consumed by the LFBs.  It defines the functionality but not how
Wang, et al.            Expires December 31, 2009               [Page 6]
Internet-Draft             ForCES LFB Library                  June 2009
      metadata is encoded within an implementation.
      LFB Component - Operational parameters of the LFBs that must be
      visible to the CEs are conceptualized in the FE model as the LFB
      components.  The LFB components include, for example, flags,
      single parameter arguments, complex arguments, and tables that the
      CE can read and/or write via the ForCES protocol (see below).
      LFB Topology - Representation of how the LFB instances are
      logically interconnected and placed along the datapath within one
      FE.  Sometimes it is also called intra-FE topology, to be
      distinguished from inter-FE topology.
      ForCES Protocol - While there may be multiple protocols used
      within the overall ForCES architecture, the term "ForCES protocol"
      and "protocol" refer to the Fp reference points in the ForCES
      Framework in [RFC3746].  This protocol does not apply to CE-to-CE
      communication, FE-to-FE communication, or to communication between
      FE and CE managers.  Basically, the ForCES protocol works in a
      master- slave mode in which FEs are slaves and CEs are masters.
      This document defines the specifications for this ForCES protocol.
Wang, et al.            Expires December 31, 2009               [Page 7]
Internet-Draft             ForCES LFB Library                  June 2009
3.  Introduction
   XXX: Editorial Note: This is an initial rough copy of the document
   which will undergo heavy review and modification.  It was published
   to beat the meeting deadline.
   Forwarding and Control Element Separation (ForCES) defines an
   architectural framework and associated protocols to standardize
   information exchange between the control plane and the forwarding
   plane in a ForCES Network Element (ForCES NE).  [RFC3654]has defined
   the ForCES requirements, and [RFC3746] has defined the ForCES
   framework.
   The ForCES protocol Protocol FE-protocol [I-D.ietf-forces-protocol]
   defines a protocol by which Control Elements (CEs) communicated with
   and control the behavior of Forwarding Elements (FEs).  That control
   is expressed in terms of manipulations of components of Logical
   Function Blocks (LFBs).  The structure and abstract semantics of LFBs
   is defined in Model FE-MODEL [I-D.ietf-forces-model].  That document
   also defines a single LFB Class for gaining access to FE properties
   including the set of LFBs and their interconnection.  The Protocol
   document defines an LFB class for manipulating the protocol
   properties of the FE.
   In order for the protocol to be useful to control any behavior, there
   must be a set of LFB class definitions for the LFBs which provide
   that behavior.  This document provides a set of such definitions.
   This document is intended to provide an initial LFB library.  It is
   expected that other definitions will be developed over time, and
   documented in other RFCs.
   An LFB performs a well-defined action or computation on the packets
   passing through it.  Upon completion of its prescribed function,
   either the packets are modified in certain ways (e.g., decapsulator,
   marker), or some results are generated and stored, often in the form
   of metadata (e.g., classifier).  Each LFB typically performs a single
   action.  Classifiers, shapers and meters are all examples of such
   LFBs.
   In general, multiple LFBs are contained in one FE.  An LFB, may have
   inputs, outputs and components that can be queried and manipulated by
   the CE via the ForCES Protocol.  An LFB can have one or more inputs.
   Each input takes a pair of a packet and its associated metadata.  The
   LFB processes the input, and produces one or more outputs, each of
   which is a pair of a packet and its associated metadata.
   For further information regarding the LFB model, the reader is
   referenced to FE-MODEL [I-D.ietf-forces-model].
Wang, et al.            Expires December 31, 2009               [Page 8]
Internet-Draft             ForCES LFB Library                  June 2009
   XXX: The above text is redundant.  The definition gives some intro to
   LFBs and the model and all the other docs before this tell us what an
   LFB is
   In this document we first define base structures used in building the
   LFBs in section 4 then use those base definitions to define various
   LFBs.
   To simplify the understanding of these LFBs - we have chosen to group
   them by functionality.  The following groups of LFBs will be
   described in section 5:
   1.  Core LFBs.
   2.  Port LFBs.
   3.  Address LFBs.
   4.  Forwarding LFBs.
   5.  Queue manager and scheduler LFBs.
   6.  Miscellanious LFBs.
Wang, et al.            Expires December 31, 2009               [Page 9]
Internet-Draft             ForCES LFB Library                  June 2009
4.  Base Definitions
   This section povides a base set of LFB frame, data type, and meta
   data definitions for use by all any LFB Class definitions (in this or
   other documents.  This section provides no actual LFB Class
   definitions.
   These are then used in each subsequent definition by the statement:
   
4.1.  Framedefs
   The following Frames are defined:
   1.  EthernetII - An Ethernet II frame type.
   2.  Ethernet802.3 - An Ethernet 802.3 frame type.
   3.  Ethernet802.2 - An Ethernet 802.2 frame type.
   4.  Ethernet802.2SNAP - An Ethernet 802.2 with SNAP frame.
   5.  IPv4Frame - An IPv4 packet.
   6.  IPv6Frame - An IPv6 packet.
   7.  TaggedFrame - A frame of any type with associated metadata.
   8.  MetadataFrame - Frame only contains meta data.
   9.  Arbitrary - Any kind of frame except Metadata Frame.
Wang, et al.            Expires December 31, 2009              [Page 10]
Internet-Draft             ForCES LFB Library                  June 2009
  
    
      EthernetII
      An Ethernet II frame type
    
    
      Ethernet802.3
      An Ethernet 802.3 frame type
    
    
      Ethernet802.2
      An Ethernet 802.2 frame type
    
    
      Ethernet802.2SNAP
      An Ethernet 802.2 with SNAP frame
    
    
      IPv4Frame
      An IPv4 packet
    
    
      IPv6Frame
      An IPv6 packet
    
    
      taggedFrame
      A frame of any type with associated metadata.
    
    
      MetadataFrame
      Frame only contains meta data
    
    
      Arbitrary
      Any kind of frame except Metadata Frame.
    
  
4.2.  DataTypeDefs
   The following Data Types are defined:
   1.   ifIndex - A Port Identifier.
   2.   IEEEMAC - IEEE MAC Address.
Wang, et al.            Expires December 31, 2009              [Page 11]
Internet-Draft             ForCES LFB Library                  June 2009
   3.   NetSpeedType - Network speed values.
   4.   IEEENegotiationType - IEEENegotiation types.
   5.   PortStatsType - Port statistics.
   6.   PortStatusValues - The possible values of status Used for both
        administrative and operation status.
   7.   LocalIpAddrType - Local IP address belonging to FE.
   8.   LocalIpv6AddrType - The device local IPv6 address infomation.
   9.   IPv4Addr - IPv4 address.
   10.  IPv6Addr - IPv6 address.
   11.  IPv4Prefix - IPv4 prefix defined by an address and a prefix
        length.
   12.  IPv4NextHopInfoType - IPv4 nexthop information,include nexthop
        ip address,output FE and interface etc.
   13.  IPv4FibEntryType - IPv4 forwarding table entry.
   14.  IPv4PrefixTableEntry - IPv4 prefix table entry.
   15.  IPv4UcastLPMStatisticsType - Statistics of IPv4UcastLPM LFB.
   16.  IPv4ValidatorStatisticsType - IPv4 validator LFB statistics
        type.
   17.  IPv6Prefix - IPv6 prefix defined by an address and a prefix
        length.
   18.  IPv6NextHopInfoType - IPv6 next hop information, include next
        hop ip address,output FE and interfac eetc.
   19.  IPv6PrefixTableEntry - IPv6 prefix table entry.
   20.  IPv6LPMClassiferStatisticsType - Statistics of IPv6 LPM
        ClassifierLFB.
   21.  IPv6ValidatorStatisticsType - IPv6 validator LFB statistics
        type.
   22.  NextHopFlagsType - Flags used to define different next hop
        behaviors.
Wang, et al.            Expires December 31, 2009              [Page 12]
Internet-Draft             ForCES LFB Library                  June 2009
   23.  WeightTableEntryType - Weight table for queues.
   24.  NbrState - IPv6 neighbour entry resolution state.
   25.  ArpTableEntryType - Arp Entry.
   26.  NbrTableEntryType - IPv6 neighbour table entry.
   27.  DCHostTableEntryTypev4 - Direct connected arp table entry for
        IPv4.
   28.  DCHostTableEntryTypev6 - Direct connected arp table entry for
        IPv6.
   29.  IPPacketType - The packet type code.
   30.  IPDispatchTableType - The dispatch table type.
   31.  MetaType - Metadata type definition.
   32.  MetadataClassTableType - The meta data classifying table.
   33.  LinkEncapType - Encapsulation type.
   34.  IPAddress - IP layer address.
   35.  ArpStateType - The arp entry state.
   36.  MatchTargetType - Indicator for the kind of field to be matched
        by this entry in a classifier.
   37.  MatchTargetIdentifier - Identify the specific target of a match
        condition.
   38.  MatchBitString - A bit string for use in a match condition.
   39.  MatchCondition - Structure for a single condition to be applied.
   40.  MatchConditiontType - Indicator for the kind of match condition
        to be applied.
   41.  MatchMetaDataAction - An action to set a metadata item to either
        a specific value or a field from the incoming meta data or
        packet.
   42.  NextHopIndex - An index used by the next hop table Typically
        stored in and generated as metadata by the longest-prefix-match
        LFB.
Wang, et al.            Expires December 31, 2009              [Page 13]
Internet-Draft             ForCES LFB Library                  June 2009
 
   
     ifIndex
     A Port Identifier
     uint32
   
   
     IEEEMAC
     IEEE MAC Address
     byte[6]
   
   
     NetSpeedType
     Network speed values
     
       uint32
       
         
           LAN_SPEED_10M
           10M Ethernet
         
         
           LAN_SPEED_100M
           100M Ethernet
         
         
           LAN_SPEED_1G
           1000M Ethernet
         
         
           LAN_SPEED_10G
           10G Ethernet
         
         
           LAN_SPEED_AUTO
           LAN speed auto
         
       
 
    
   
   
Wang, et al.            Expires December 31, 2009              [Page 14]
Internet-Draft             ForCES LFB Library                  June 2009
     IEEENegotiationType
     IEEENegotiation types
     
       uint32
       
         
           Auto
           Auto negotitation.
         
         
           Half-duplex
           port negotitation half duplex
         
         
           Full-duplex
           port negotitation full duplex
         
       
     
 
   
   
     PortStatsType
     Port statistics
     
       
         InUcastPkts
         Number of unicast packets received
         uint64
       
       
         InMulticastPkts
         Number of multicast packets received
         uint64
       
       
         InBroadcastPkts
         Number of broadcast packets received
         uint64
       
       
         InOctets
         number of octets received
         uint64
       
       
         OutUcastPkts
         Number of unicast packets transmitted
Wang, et al.            Expires December 31, 2009              [Page 15]
Internet-Draft             ForCES LFB Library                  June 2009
         uint64
       
       
         OutMulticastPkts
         Number of multicast packets transmitted
         uint64
       
       
         OutBroadcastPkts
         Number of broadcast packets transmitted
         uint64
       
       
         OutOcetes
         Number of octets transmitted
         uint64
       
       
         InErrorPkts
         Number of input error packets
         uint64
       
       
         OutErrorPkts
         Number of output error packets
         uint64
       
     
 
   
   
     PortStatusValues
     
             The possible values of status.  Used for both
             administrative and operation status
     
       uchar
       
         
           Disabled
           the port is operatively disabled.
         
         
           UP
           the port is up.
         
         
           Down
Wang, et al.            Expires December 31, 2009              [Page 16]
Internet-Draft             ForCES LFB Library                  June 2009
           The port is down.
         
       
 
     
   
   
     LocalIpAddrType
     Local IP address belonging to FE.
     
       
         FEID
         The FE on which the port ip resides
         uint32
 
       
       
         IfIndex
         port index on the specified FE
         uint32
 
       
       
         IPaddr
         IP address of the port
         IPAddr
       
       
         netmask
         netmask of this ip address
         IPAddr
       
       
        BcastAddr
         The associated Broadcast address of the
                                                   ip address
         IPAddr
       
     
   
   
     LocalIpv6AddrType
     The device local IPv6 address infomation
     
       
         FEID
         The FE on which the port ip resides
Wang, et al.            Expires December 31, 2009              [Page 17]
Internet-Draft             ForCES LFB Library                  June 2009
         uint32
 
       
       
         IfIndex
         port index on the specified FE
         uint32
 
       
       
         IPv6addr
         IP address of the port
         IPv6Addr
       
       
         prefixlen
         prefix length of this ip address
         uint32
       
     
   
   
     IPv4Addr
     IPv4 address
     byte[4]
   
   
     IPv6Addr
     IPv6 address
     byte[16]
   
   
     IPv4Prefix
     IPv4 prefix defined by an address and a prefix length
                                                             
     
       
         address
         Address part
         IPv4addr
       
       
         prefixlen
         Prefix length part
         
           uchar
           
Wang, et al.            Expires December 31, 2009              [Page 18]
Internet-Draft             ForCES LFB Library                  June 2009
             
           
         
       
     
   
   
     IPv4NextHopInfoType
 
     IPv4 nexthop information,include nexthop ip address,
                                 output FE and interface etc.
     
       
         NexthopID
         nexthop id
         uint32
       
       
         FEID
         output FE id
         uint32
       
       
         Egress
         output port index
         uint32
       
       
         MTU
         The maximum transmition unit of the nexthop link.
                                                             
         uint32
       
       
         Flags
         Associated flags of the nexthop,such as local
                                      delivery,multicast etc.
         NextHopFlagsType
       
       
         NexthopIPaddr
         IP address of the nexthop
         IPv4Addr
       
       
         L2Index
         index into the L2 link layer table,such as IPv4 ARP
                                     table or IPv6 NBR table.
Wang, et al.            Expires December 31, 2009              [Page 19]
Internet-Draft             ForCES LFB Library                  June 2009
         uint32
       
       
         EncapNeeded
         The type of encapsulation needed on the packet.
                                                             
         LinkEncapType
       
     
   
   
     IPv4FibEntryType
 
     IPv4 forwarding table entry.
     
       
         prefix
         IPv4 prefix.
         IPv4Prefix
       
       
         FEID
         output FE id
         uint32
       
       
         Egress
         output port index
         uint32
       
       
         MTU
         The maximum transmition unit of the nexthop link.
                                                             
         uint32
       
       
         Flags
         Associated flags of the nexthop,such as local
                                      delivery,multicast etc.
         NextHopFlagsType
       
       
         NexthopIPaddr
         IP address of the nexthop
         IPv4Addr
       
       
Wang, et al.            Expires December 31, 2009              [Page 20]
Internet-Draft             ForCES LFB Library                  June 2009
         L2Index
         index into the L2 link layer table,such as IPv4 ARP
                                     table or IPv6 NBR table.
         uint32
       
       
         EncapNeeded
         Type of encapsulation needed on the packet
         LinkEncapType
       
     
   
   
     IPv4PrefixTableEntry
 
     IPv4 prefix table entry
     
       
         Prefix
         IPv4 address prefix
         IPv4Prefix
       
       
         NexthopID
         Index into the nexthop table.
         uint32
       
     
   
   
     IPv4UcastLPMStatisticsType
 
     statistics of IPv4UcastLPM LFB
     
       
         InRcvdPkts
         The total number of input packets received from
                interfaces, including those received in error
         uint64
       
       
         FwdPkts
         IPv4 packet forwarded by this LFB
         uint64
       
       
         NoRoutePkts
         The number of IP datagrams discarded because no route
Wang, et al.            Expires December 31, 2009              [Page 21]
Internet-Draft             ForCES LFB Library                  June 2009
        could be found to transmit them to their destination.
         uint64
       
        
          InDeliverPkts
          The total number of input datagrams successfully
          delivered to IP user-protocols (including ICMP).
          uint64
       
     
   
   
     IPv4ValidatorStatisticsType
 
     IPv4 validator LFB statistics type
     
       
         badHeaderPkts
         The total number of input datagrams with bad ip
                                                       header
         uint64
       
       
         badTotalLengthPkts
         The total number of input datagrams with bad length
                                                             
         uint64
       
       
         badTTLPkts
         The total number of input datagrams with bad TTL
                                                             
         uint64
       
       
         badChecksum
         The total number of input datagrams with bad checksum
                                                             
         uint64
       
     
   
   
     IPv6Prefix
     IPv6 prefix
     
       
         IPv6addr
Wang, et al.            Expires December 31, 2009              [Page 22]
Internet-Draft             ForCES LFB Library                  June 2009
         address part of the prefix
         IPv6Addr
       
       
         prefixlen
         length of the prefix
         uint32
       
     
   
   
     IPv6NextHopInfoType
 
     IPv6 nexthop information,including nexthop ip address,
                                 output FE and interface etc.
     
       
         NexthopID
         nexthop id
         uint32
       
       
         FEID
         output FE id
         uint32
       
       
         Egress
         output port index
         uint32
       
       
         MTU
         The maximum transmition unit of the nexthop link.
                                                             
         uint32
       
       
         Flags
         Associated flags of the nexthop,such as local
                                      delivery,multicast etc.
         NextHopFlagsType
       
       
         NexthopIPv6addr
         IP address of the nexthop
         IPv6Addr
       
Wang, et al.            Expires December 31, 2009              [Page 23]
Internet-Draft             ForCES LFB Library                  June 2009
       
         L2Index
         index into the L2 table
         uint32
       
       
         EncapNeeded
         Type of encapsulation needed on the packet
         LinkEncapType
       
     
   
   
     IPv6PrefixTableEntry
 
     IPv6 prefix table entry
     
       
         Prefix
         IPv6 address prefix
         IPv6Prefix
       
       
         NexthopID
         index to the nexthop table.
         uint32
       
     
   
   
     IPv6LPMClassiferStatisticsType
 
     statistics of IPv6LPMClassifier LFB
     
       
         InRcvdPkts
         The total number of input packets received from
                interfaces, including those received in error
         uint64
       
       
         FwdPkts
         IPv4 packet forwarded by this LFB
         uint64
       
       
         NoRoutePkts
         The number of IP datagrams discarded because no route
Wang, et al.            Expires December 31, 2009              [Page 24]
Internet-Draft             ForCES LFB Library                  June 2009
        could be found to transmit them to their destination.
         uint64
       
       
         InDeliverPkts
         The total number of input datagrams successfully
          delivered to IP user-protocols (including ICMP).
         uint64
       
     
   
   
     IPv6ValidatorStatisticsType
 
     IPv6 validator LFB statistics type
     
       
         badHeaderPkts
         The total number of input datagrams with bad ip
                                                       header
         uint64
       
       
         badTotalLengthPkts
         The total number of input datagrams with bad length
                                                             
         uint64
       
       
         badTTLPkts
         The total number of input datagrams with bad TTL
                                                             
         uint64
       
       
         badChecksum
         The total number of input datagrams with bad checksum
                                                             
         uint64
       
     
   
   
     NextHopFlagsType
 
     Flags to define different nexthop behaviors
     
       uint32
Wang, et al.            Expires December 31, 2009              [Page 25]
Internet-Draft             ForCES LFB Library                  June 2009
       
         
           local
           Packets match the nexthop entry with this flag are
                    delivered to the higher level protocols.
         
         
           drop
           Packets match the nexthop entry with this flag are
                                              to be dropped.
         
         
           broadcast
           The route associated with this nexthop is a
                                                   broadcast.
         
         
           multicast
           The route associated with this nexthop is multicast
                                                             
         
       
     
   
   
     WeightTableEntryType
 
     Weight table for queues.
     
       
         QueueID
         queue id
         uint32
       
       
         weight
         weight of the queue.
         uint32
       
     
   
   
     NbrState
 
     IPv6 neighbour entry resolution state.
     
       uchar
       
Wang, et al.            Expires December 31, 2009              [Page 26]
Internet-Draft             ForCES LFB Library                  June 2009
         
           INCOMPLETE
           Address resolution is being performed on the entry.
                 Specifically, a Neighbor Solicitation has been sent to
                 the solicited-node multicast address of the target,
                 but the corresponding Neighbor Advertisement has not
                 yet been received.
         
         
           REACHABLE
           Positive confirmation was received within the last
             ReachableTime milliseconds that the forward path to the
             neighbor was functioning properly. While REACHABLE, no
             special action takes place as packets are sent.
         
         
           STALE
           More than ReachableTime milliseconds have elapsed
                 since the last positive confirmation was received that
                 the forward path was functioning properly.  While
                 stale, no action takes place until a packet is sent.
                 The STALE state is entered upon receiving an
                 unsolicited Neighbor Discovery message that updates
                 the cached link-layer address.  Receipt of such a
                 message does not confirm reachability, and entering
                 the STALE state insures reachability is verified
                 quickly if the entry is actually being used.  However,
                 reachability is not actually verified until the entry
                 is actually used.
         
         
           DELAY
           More than ReachableTime milliseconds have elapsed
                 since the last positive confirmation was received that
                 the forward path was functioning properly, and a
                 packet was sent within the last DELAY_FIRST_PROBE_TIME
                 seconds.  If no reachability confirmation is received
                 within DELAY_FIRST_PROBE_TIME seconds of entering the
                 DELAY state, send a Neighbor Solicitation and change
                 the state to PROBE.
         
         
           PROBE
           A reachability confirmation is actively sought by
                 retransmitting Neighbor Solicitations every
                 RetransTimer milliseconds until a reachability
                 confirmation is received.
         
Wang, et al.            Expires December 31, 2009              [Page 27]
Internet-Draft             ForCES LFB Library                  June 2009
       
     
   
   
     ArpTableEntryType
 
     Arp entry.
     
       
         Index
         Index of the arp table.
         uint32
       
       
         NeighborIP
         IP address of the neighbour.
         IPv4Addr
       
       
         SrcMac
         Source MAC.
         IEEEMAC
       
       
         NeighborMac
         Mac of the Neighbor.
         IEEEMAC
       
       
         State
         State of the address resolution progress.
         ArpStateType
       
     
   
   
     NbrTableEntryType
 
     IPv6 neighbour table entry.
     
       
         Index
         Index of the arp table.
         uint32
       
       
         NeighborIPv6
         IP address of the neighbour.
Wang, et al.            Expires December 31, 2009              [Page 28]
Internet-Draft             ForCES LFB Library                  June 2009
         IPv6Addr
       
       
         SrcMac
         Source MAC.
         IEEEMAC
       
       
         NeighborMac
         Mac of the Neighbor.
         IEEEMAC
       
       
         State
         State of the entry's resolution progress.
         NbrState
       
     
   
   
     DCHostTableEntryTypev4
 
     Direct connected arp table entry for IPv4.
     
       
         NeighbourIP
         IP address of the neighbour.
         IPv4Addr
       
       
         SrcMac
         Source MAC.
         IEEEMAC
       
       
         NeighborMac
         Mac of the Neighbor.
         IEEEMAC
       
     
   
   
     DCHostTableEntryTypev6
 
     Direct connected arp table entry for IPv6.
     
       
         NeighbourIPv6
Wang, et al.            Expires December 31, 2009              [Page 29]
Internet-Draft             ForCES LFB Library                  June 2009
         IP address of the neighbour.
         IPv6Addr
       
       
         SrcMac
         Source MAC.
         IEEEMAC
       
       
         NeighborMac
         Mac of the Neighbor.
         IEEEMAC
       
     
   
   
     IPPacketType
 
     The packet type code.
     
       uchar
       
         
           IPv4Ucast
           IPv4 unicast packet.
         
         
           IPv4Mcast
           IPv4 multicast packet.
         
         
           IPv6Ucast
           IPv6 unicast packet.
         
         
           IPv6Mcast
           IPv6 multicast packet.
         
       
     
   
   
     IPDispatchTableType
 
     The dispatch table type.
     
       
         IPPacketType
Wang, et al.            Expires December 31, 2009              [Page 30]
Internet-Draft             ForCES LFB Library                  June 2009
         The type of the packet.IPv4Uncast,IPv6Ucast,
                                 IPv4Mulcast,IPv6Mulcast etc.
         IPPacketType
       
       
         index
         The index of the output group to output the packets
                                                             
         uint32
       
     
   
   
     MetaType
     Metadata type definition.
     
       
         MetadataID
         The ID of the metadata,the value is standardalized in
                       the corresponding LFB definition RFCs.
         uint32
       
       
         MetadataName
         The name of the metadata.
         String
       
     
   
   
     MetadataClassTableType
 
     The meta data classifying table.
     
       
         value
         Value of the meta data.
         uint32
       
       
         index
         The index of the port in the output group to use for
                                       outputing the packets.
         uint32
       
     
   
   
Wang, et al.            Expires December 31, 2009              [Page 31]
Internet-Draft             ForCES LFB Library                  June 2009
     LinkEncapType
 
     Encapsulation type.
     
       uchar
       
         
           Link
           Link layer encapsulation such as Ethernet and PPP.
                                                             
         
         
           InterFE
           Inter FE communication encapsulation.
         
         
           Tunnel
           Tunnel encapsulation such as IP-in-IP.
         
       
     
   
   
     IPAddress
 
     IP layer address.
     
       
         Ipv4
         IPv4 address.
         IPv4Addr
       
       
         Ipv6
         IPv6 address.
         IPv6Addr
       
     
   
   
     ArpStateType
 
     The arp entry state.
     
       uchar
       
         
           Manual
Wang, et al.            Expires December 31, 2009              [Page 32]
Internet-Draft             ForCES LFB Library                  June 2009
           The entry is manually set.
         
         
           InSolicit
           The peer's level 2 address is still in requesting.
                                                             
         
         
           Valid
           The address resolution have been completed
          successfully.Now it can be used in the data packets forwarding
                                                             
         
       
     
   
   
    MatchTargetType
 
     
        Indicator for the kind of field to be matched by this
        entry in a classifier.
     
       uchar
       
         
           MatchNone
           A matcher against no field
         
         
           MatchMetaData
           A matcher against a metadata item
         
         
           MatchPacketField
           A matcher that works against an identified packet
                                                       field.
         
         
           MatchOffsetLength
           
              The match target is a specified portion of the packet.
           
         
       
     
   
   
Wang, et al.            Expires December 31, 2009              [Page 33]
Internet-Draft             ForCES LFB Library                  June 2009
     MatchTargetIdentifier
 
     
        Identify the specific target of a match condition.
     
     
       
         MetaDataID
         The ID of a metadata item
         uint32
       
       
         packetFieldID
         
            The identifier for a packet Field, such as SA, DA,
            Protocol, SPort, DPort, etc.  These identifiers allow
            references to fields with varialbe amounts before them.
         
         uint32
       
       
         OffSetLengthPacketField
         
            A field in the packet identified by its offset and
            length in bits.  This does not allow for matching fields
            whose position depends upon earlier field sizes.
         
         
           
             fieldOffset
             The offset in bits from the start of the packet
                                   to the start of the field.
             uint32
           
           
            fieldLength
             The length of the field, in bits
             uint32
           
         
       
     
   
   
     MatchBitString
 
     A bit string for use in a match condition.
     
Wang, et al.            Expires December 31, 2009              [Page 34]
Internet-Draft             ForCES LFB Library                  June 2009
       
         MatchBits
         The bits to match
         octetstring[16]
       
       
         MatchLength
         The number of bits to match
         uchar
       
     
   
   
 
     MatchCondition
     Structure for a single condition to be applied
     
       
         TargetType
         The category of target to match
         MatchTargetType
       
       
         TargetID
         The specific target to compare
         MatchTargetIdentifier
       
       
         MatchType
         The kind of match to apply.
         MatchConditionType
       
       
         MatchParamOne
         The first parameter for the match
         
         MatchBitString
       
       
         MatchParamTwo
         The second parameter for the match
         
         MatchBitString
       
     
   
   
     MatchConditiontType
Wang, et al.            Expires December 31, 2009              [Page 35]
Internet-Draft             ForCES LFB Library                  June 2009
 
     
        Indicator for the kind of match condition to be applied.
     
     
       uchar
       
         
           MatchNone
           A matcher which always fails
         
         
           MatchExact
           
              The target and the match value must be the same, with no
              padding. Only the first value of the match condition is
              used.  The first match value must be occur.
           
         
         
           MatchLeft
           
              The target must begin with the first match value.
              If there is a second match value, the remainder of the
              target must match repeated occurrances of the second
              value.  Thus, this can be used to allow any terminal
              content, or specific ending pad. The first match value
              must occur.
         
         
           MatchRight
           
              The target must end with the first match value.
              If there is a second match value, the preceding part
              of the target must match repeated occurrances of the
              second value.  Thus, this can be used to allow any
              leading content, or specific leading fill.  The first
              match value must occur.
         
         
           MatchRange
           
              The match values will be considered as numbers, and
              the target must be greater than or equal to the
              first match value, and less than or equal to the
              second match value.  An omitted match value means
              that end of the range is unlimitted.
         
Wang, et al.            Expires December 31, 2009              [Page 36]
Internet-Draft             ForCES LFB Library                  June 2009
         
           MatchMaskedValue
           
              The target the the first value are each anded with the
              second value.  The match succeeds if the results of these
              and operations are identical.  Both values are required.
           
         
         
           MatchSucceed
           A Match which always succeeds
         
       
     
   
   
 
     MatchMetaDataAction
     
        An action to set a metadata item to either a specific value
        or a field from the incoming meta data or packet.
     
       
         MetaDataToSet
         The Meta Data Item to set
         uint32
       
       
         ExplicitValueToSet
         A value to set the metadata to
         
         octetstring[16]
       
       
         ValueFromCondition
         
            This is an index into the corresponding match conditions,
            and the meta data will be set to the value that was tested
            by that condition.
         
         uint32
       
     
   
   
     NextHopIndex
     
        An index used by the next hop table.
Wang, et al.            Expires December 31, 2009              [Page 37]
Internet-Draft             ForCES LFB Library                  June 2009
        Typically stored in and generated as metadata by
        the longest-prefix-match LFB.
      int32
   
 
4.3.  MetaDataDefs
   The following MetaData Types are defined:
   1.   NextHopID - An index into a Next Hop entry in Nexthop table.
   2.   ExceptionID - Exception Types.
   3.   IngressPort - At which interface the packet arrive.
   4.   EgressPort - The interface out which the packet will emmit.
   5.   NextHopIP - Nexthop IPv4 address.
   6.   NexthopIPv6 - Nexthop IPv6 address.
   7.   PacketLength - The length of the packet in octets.
   8.   IPPacketType - Type of the packet.
   9.   QueueID - The queue ID.
   10.  QueueOperationCmd - The type of operation on the queue,there are
        two types defined here: enqueue and dequeue.
   11.  SrcFEID - Source FE ID.
   12.  DstFEID - Destination FE ID.
   13.  NexthopIndex - Next hop index into the link layer address
        resolution table.
   14.  NHEncapMethod - How should the following LFBs do to encapsulate
        the packets.
   15.  ErrorId - Error Type.
  
    NextHopID
    An index into a Next Hop entry in Nexthop table
Wang, et al.            Expires December 31, 2009              [Page 38]
Internet-Draft             ForCES LFB Library                  June 2009
    1
    NextHopIndex
 
 
   ExceptionID
    Exception Types
    2
    
      uint32
      
        
          Options
          Packets with options,for IPv6 Packet with
                    next-header set to hop-by-hop header(0).
        
        
          LengthMismatch
          The packet length reported by link layer is less
                                than the total length field.
        
        
          BadTTL
          The packet can't be forwarded as the TTL has
                                                    expired.
        
        
          Multicast
          Packet received is a multicast packet.
        
        
          FragRequired
          The MTU for outgoing interface is less than the
                                                packet size.
        
        
          Redirect
          The outgoing port is same as the one on which the
                                         packet is received.
        
        
          LocalDelivery
          The packet is for a local interface.
        
        
          LimitedBroadcast
          The packet received as limited broadcast
        
Wang, et al.            Expires December 31, 2009              [Page 39]
Internet-Draft             ForCES LFB Library                  June 2009
      
    
  
  
    IngressPort
    At which interface the packet arrive.
    3
    ifIndex
  
  
    EgressPort
    The interface out which the packet will emmit.
    4
    ifIndex
  
  
    NextHopIP
    Nexthop IPv4 address
    5
    IP4Addr
  
  
    NexthopIPv6
    Nexthop IPv6 address
    6
    IPv6Addr
  
  
    PacketLength
    The length of the packet in octets.
    7
    uint32
  
  
    IPPacketType
    Type of the packet
    8
    
      uint32
      
        
          IPv4
          IPv4 packet
        
        
Wang, et al.            Expires December 31, 2009              [Page 40]
Internet-Draft             ForCES LFB Library                  June 2009
          IPv6
          IPv6 packet
        
        
          TaggedFrame
          packet with metadata
        
        
          MetaDataFrame
          meta data only
        
      
    
  
  
    QueueID
    The queue ID
    9
    uint32
  
  
    QueueOperationCmd
    The type of operation on the queue,there are two types
                          defined here: enqueue and dequeue.
    10
    
      uchar
      
        
          Enqueue
          Enqueue command.
        
        
          Dequeue
          Dequeue command.
        
      
    
  
  
    SrcFEID
    Source FE ID.
    11
    uint32
  
  
Wang, et al.            Expires December 31, 2009              [Page 41]
Internet-Draft             ForCES LFB Library                  June 2009
     DstFEID
    Destination FE ID.
    12
    uint32
  
  
    NexthopIndex
    Nexthop index into the link layer address resolution
                                                      table.
    13
    uint
  
  
    NHEncapMethod
    how should the following LFBs do to encapsulate the
    packets,such as link encapsulation which means the packets need to
    encapsulate link layer header before sending to media;inter FE
    communication encapsulation which means the packets need to first
    encapsulate inter FE communication header before transimiting to
    other FEs;tunnel encapsulation which means the packet need do extra
    tunnel encapsulation before sending out to media.
    14
    LinkEncapType
  
  
    ErrorId
    Error Type.
    15
    
      int32
      
        
          WrongIpVersion
          the IP version wrong
        
        
          WrongLength
          
               the packet length is not as long as
               the header indicates
        
        
          otherError
          The errors we not defined now
        
Wang, et al.            Expires December 31, 2009              [Page 42]
Internet-Draft             ForCES LFB Library                  June 2009
      
    
  
Wang, et al.            Expires December 31, 2009              [Page 43]
Internet-Draft             ForCES LFB Library                  June 2009
5.  LFB Descriptions
   As specified in section 3.1.2 the LFBs have been grouped together for
   better understanding.  The following groups have been created
   1.  Core LFBs, including FE Object LFB and FE Protocol LFB.
   2.  Port LFBs.  These LFBs are intended to provide media and
       encapsulation oriented capabilities associated with an interface.
       The interfaces may be between FEs inside NE or to the outside
       world.  Allowing for the complicated features of different
       interface technology.
   3.  Address LFBs.  LFBs to model Addresses like IPv4, IPv6 addresses.
   4.  Forwarding LFBs.  LFBs to model the IPv4 and IPv6 forwarding
       function, e.g., IPv4Validor LFB, IPv4UcastLPM LFB,
       IPv4NextHopApplicator LFB, ARP LFB, ICMPProc LFB, OptionProc LFB,
       IPv6Validator LFB, IPv6UcastLPM LFB, ExtendHeaderProc LFB,
       IPv6NexthopApplicator LFB,IPv6AddrResolutionLFB LFB, ICMPv6Proc
       LFB.
   5.  Queue manager and scheduler LFBs.  LFB that model queues and
       schedulers.  A basic queue LFB and scheduler LFB are defined.
       Queues and scheduler can be cascaded together to build more
       complicated schedulers.
   6.  Miscellanious LFBs.  LFBs that capture the functionality broadly
       used in FEs but are not part of any category, e.g., RedirectSink
       LFB, RedirectSource LFB, MetaClassifier LFB, GeneralClassifier
       LFB.
5.1.  Core LFBs
   Currently there are only two core LFBs defined.  These two LFBs are
   core LFBs for ForCES.  It's required that each FE must implement
   these two LFBs for CE to control it.
   1.  FEObjectLFB
   2.  FEProtocolLFB
5.1.1.  FEObject LFB
   The FEObject LFB is described in detail in the FE-MODEL
   [I-D.ietf-forces-model].  The reader is refered there for further
   detail.
Wang, et al.            Expires December 31, 2009              [Page 44]
Internet-Draft             ForCES LFB Library                  June 2009
5.1.2.  FEProtocol LFB
   The FEProtocol LFB is described in detail in the FE-protocol
   [I-D.ietf-forces-protocol].  The reader is refered there for further
   detail.
5.2.  Port LFBs
   The Port LFBs that are defined in this library are:
   1.  GenericConnectivityLFB
   2.  EtherPort
   3.  EtherDecap
   4.  EtherEncap
5.2.1.  GenericConnectivityLFB
   This LFB Class provides a generic basis for representing connectivity
   between the FE and the outside world.  The LFB has one or more ports
   for packets that the FE processing logic is forwrding for
   transmission by this Connectivity LFB.  It has one or more ports for
   packets that the Connectivity LFB has received and is handing to the
   FE processing logic.  Multiple ports for handline packets are
   supported so that protocol specific encapsulation and demultiplexing
   can be provided by this LFB.  This LFB also has ports for sending
   packets to lower layer Connectivity LFBs and receiving packets from
   such lower layer Connectivity LFBs.  This enables support for the
   processing components of interface stacks, such as PPP over Ethernet
   or Ethernet over MPLS.  For packets arriving from Media or lower
   layer connectivity, this LFB will perform appropriate media
   validation, then remove media specific headers, and place the
   relevant information in meta-data.  For ethernet, the Source MAC
   would be in meta-data.  For Frame Relay or ATM, a circuit identifier
   would be in meta-data.  For Ethernet with VLANs, this meta-data would
   indicate which VLAN the packet came from.  For packets to be
   transmitted, meta-data indicating the destination (destination MAC or
   outgoing circuit, etc.) is required.  This LFB will also include
   statistical components such as the number of octets and packets sent
   and received, the number of various input and output errors, etc.
5.2.2.  EtherPort
   LFB for Ethernet ports
Wang, et al.            Expires December 31, 2009              [Page 45]
Internet-Draft             ForCES LFB Library                  June 2009
5.2.3.  EtherDecap
   An LFB class for definition of Ethernet decapsulation and Ethernet
   filtering functions.
5.2.4.  EtherEncap
   An LFB classifier definition for completes ethernet encapsulation
   fuctions.
5.3.  Address LFBs
   The Address LFBs that are defined in this library are:
   1.  IPv6AddrResolution
   2.  Arp
   3.  ICMPGenerator
   4.  ICMPv6Generator
   5.  IPv4Validator
   6.  IPv6Validator
5.3.1.  IPv6AddrResolution
   This LFB class provides the function of IPv6 address resolution part
   of neighbor discovery protocol.It provides an offload of ND protocol
   processing to FE.It process the following ND messages:neighbour
   solicitation and neighbour advertisement.
5.3.2.  Arp
   This LFB class provides the function of address resolution for IPv4
   nodes.
5.3.3.  ICMPGenerator
   This LFB class provide some basic ICMP function,it only generate the
   following ICMP messages:ICMP destination unreachable and time
   excceeded.
5.3.4.  ICMPv6Generator
   This LFB class provide some basic ICMPv6 function,it only generate
   the following ICMP messages for the packets that need some basic icmp
Wang, et al.            Expires December 31, 2009              [Page 46]
Internet-Draft             ForCES LFB Library                  June 2009
   processing:destination not reachable and time excceeded.
5.3.5.  IPv4Validator
   An LFB Class definition for validates the IPv4 packet.
   This LFB validates the IP version and header length fields, including
   verifying that the packet length is at least as long as the header
   indicates.
5.3.6.  IPv6Validator
   An LFB Class definition for validates the IPv6 packet.
   This LFB validates the IP version and header length fields, including
   verifying that the packet length is at least as long as the header
   indicates.
5.4.  Forwarding LFBs
   The Forwarding LFBs that are defined in this library are:
   1.  IPv4UcastLPM
   2.  IPv4NextHopApplicator
   3.  IPv6UcastLPM
   4.  IPv6UcastNexthopApplicator
5.4.1.  IPv4UcastLPM
   IPv4 Longest Prefix Match Lookup LFB
5.4.2.  IPv4NextHopApplicator
   An LFB definition for applicating next hop action to IPv4 packets,the
   actions include:TTL operation,checksum recalculation.
5.4.3.  IPv6UcastLPM
   An LFB class definition for IPv6 longest prefix lookup function.
5.4.4.  IPv6UcastNexthopApplicator
   An LFB for applicating next hop action to IPv6 packets,actions mainly
   inlcude TTL incrementation and checksum recalculation.
Wang, et al.            Expires December 31, 2009              [Page 47]
Internet-Draft             ForCES LFB Library                  June 2009
5.5.  Queue and scheduler LFBs
   To build an actual forwarder, one must include some limited for of
   queueing and scheduling.  Queues are entities which store packets.
   Schedulers are entities which react to the state of queues and cause
   packets to be emitted from queues.
   The actual interaction between queues and schedulers (and their real
   world degree of separation) is quite complex.  A very complex LFB
   model would be required to represent all the complexity.
   Additionally, there is the issue of representing the relationship
   between the queue and the scheduler.  A simple approach has been
   taken in these class definitions.
   A queue element consists of an input port (called InData) on which it
   receives data packets, and output port (called OutData) on which it
   will send packets when permitted by its definition or the scheduler.
   Its relationship to scheduluers is represented by a set of output
   ports (the group OutCountrol) and an input port (called InControl).
   These ports are defined to carry packets consisting only of meta-
   data.  In fact, these ports are an abstraction, and what one might
   call a legal fiction.  An element of the OutControl group represents
   the fact that a scheduler is aware of the state of that queue
   element.  The InControl port represents the fact that one or more
   schedulers connected to that port are controlling that queue.  There
   is no meta-data defined for actual exchange on these ports, as their
   real world realization is highly implementation dependent.  To
   complete this picture, a schedule has a group of input ports
   (Watchers) representing the connectivity to queues it is aware of,
   and a group of output ports (Controllers) representing control over
   queues.  This allows for the simple case of a controller who monitors
   and controls a single set of queues, and more interesting cases where
   the control of certain queues may depend upon the state of queues
   whihc are not under the control of the scheduler.
   The Queues and schedulers LFBs that are defined in this library are:
   1.  Scheduler
   2.  Queue
   3.  WRRSched
5.5.1.  Scheduler
   This defines a base LFB class for schedulers.  Schedulers have an
   Input Port group called Watchers for representing the queues they
   watch, and an Output Port group called Controllers fro representing
Wang, et al.            Expires December 31, 2009              [Page 48]
Internet-Draft             ForCES LFB Library                  June 2009
   the queues they control.
5.5.2.  Queue
   Queues have a packet input, a packet output, a control input, and a
   group of control outputs.  The control ports represent the control
   relationships with scheduluers.
5.5.3.  WRRSched
   Weighted round robin scheduler.
5.6.  Miscellanious LFBs
   The Miscellanious LFBs that are defined in this library are:
   1.  ExtendHeaderProc
   2.  MetadataClassifier
   3.  OptionProc
   4.  RedirectLFB
   5.  PacketTrimmer
   6.  Duplicator
   7.  ArbitraryClassifierLfb
5.6.1.  ExtendHeaderProc
   This LFB class process the IPv6 packet with extended header,For the
   moment,the packets to this LFB are redirect to RedirectSink LFB by
   default.
5.6.2.  MetadataClassifier
   This LFB class provides the function of classify packets according to
   the meta data.Now it only works on one meta data.
5.6.3.  OptionProc
   This LFB class process the IPv4 packet with options,it can process on
   the following options:Router-alert option.
Wang, et al.            Expires December 31, 2009              [Page 49]
Internet-Draft             ForCES LFB Library                  June 2009
5.6.4.  RedirectLFB
   An LFB Class definition for exchanging data packets between the FE
   and the CE.
   This LFB represents a point of exchagne of data packets between the
   CE and the FE.  Packets with meta-data are exchanged.  It is expected
   that the output port of a RedirectLFB, if it is connected at all,
   will be connected to a meta-data redirector.
5.6.5.  PacketTrimmer
   LFB removes data from the front of a packet.
5.6.6.  Duplicator
   An LFB Class definition for packet duplicator LFB.  Any packet
   received on an input port is logically copied and sent to all output
   ports.
5.6.7.  ArbitraryClassifierLFB
   This is a class definition for an Arbitrary Classifier LFB.  The
   input is a port group, and the match conditions can include the port
   in their test.  This allows the topology to carry some information if
   desired.  The match conditions can select an output from the
   SuccessOuput output port group.  If no condition matches, the packet
   will be sesnt to the FailOutput port.
Wang, et al.            Expires December 31, 2009              [Page 50]
Internet-Draft             ForCES LFB Library                  June 2009
6.  LFB Library Definition
  
    
      EthernetII
      an Ethernet II frame type
    
    
      Ethernet802.3
      An Ethernet 802.3 frame type
    
    
      Ethernet802.2
      An Ethernet 802.2 frame type
    
    
      Ethernet802.2SNAP
      An Ethernet 802.2 with SNAP frame
    
    
      IPv4Frame
      An IPv4 packet
    
    
      IPv6Frame
      An IPv6 packet
    
    
      taggedFrame
      A frame of any type with associated metadata
    
    
      MetadataFrame
      Frame only contains meta data
    
    
      Arbitrary
      Any kind of frame except Metadata Frame.
    
  
  
    
Wang, et al.            Expires December 31, 2009              [Page 51]
Internet-Draft             ForCES LFB Library                  June 2009
      ifIndex
      A Port Identifier
      uint32
    
    
      IEEEMAC
      IEEE MAC Address
      byte[6]
    
    
      NetSpeedType
      Network speed values
      
        uint32
        
          
            LAN_SPEED_10M
            10M Ethernet
          
          
            LAN_SPEED_100M
            100M Ethernet
          
          
            LAN_SPEED_1G
            1000M Ethernet
          
          
            LAN_SPEED_10G
            10G Ethernet
          
          
            LAN_SPEED_AUTO
            LAN speed auto
          
        
        
      
    
    
      IEEENegotiationType
      IEEENegotiation types
Wang, et al.            Expires December 31, 2009              [Page 52]
Internet-Draft             ForCES LFB Library                  June 2009
      
        uint32
        
          
            Auto
            Auto negotitation.
          
          
            Half-duplex
            port negotitation half duplex
          
          
            Full-duplex
            port negotitation full duplex
          
        
      
      
    
    
      PortStatsType
      Port statistics
      
        
          InUcastPkts
          Number of unicast packets received
          uint64
        
        
          InMulticastPkts
          Number of multicast packets received
          uint64
        
        
          InBroadcastPkts
          Number of broadcast packets received
          uint64
        
        
          InOctets
          number of octets received
          uint64
        
        
          OutUcastPkts
          Number of unicast packets transmitted
          uint64
        
Wang, et al.            Expires December 31, 2009              [Page 53]
Internet-Draft             ForCES LFB Library                  June 2009
        
          OutMulticastPkts
          Number of multicast packets transmitted
          uint64
        
        
          OutBroadcastPkts
          Number of broadcast packets transmitted
          uint64
        
        
          OutOcetes
          Number of octets transmitted
          uint64
        
        
          InErrorPkts
          Number of input error packets
          uint64
        
        
          OutErrorPkts
          Number of output error packets
          uint64
        
      
      
    
    
      PortStatusValues
      
              The possible values of status.  Used for both
              administrative and operation status
           
      
        uchar
        
          
            Disabled 
            the port is operatively disabled.
          
          
            UP
            the port is up.
          
          
            Down
            The port is down.
Wang, et al.            Expires December 31, 2009              [Page 54]
Internet-Draft             ForCES LFB Library                  June 2009
          
        
      
    
    
      LocalIpAddrType
      Local IP address belonging to FE.
      
        
          FEID
          The FE on which the port ip resides
          uint32
        
        
          IfIndex
          port index on the specified FE
          uint32
        
        
          IPaddr
          IP address of the port
          IPAddr
        
        
          netmask
          netmask of this ip address
          IPAddr
        
        
          BcastAddr
          The associated Broadcast address of the ip address
          
          IPAddr
        
      
    
    
      LocalIpv6AddrType
      The device local IPv6 address infomation
      
        
          FEID
          The FE on which the port ip resides
          uint32
Wang, et al.            Expires December 31, 2009              [Page 55]
Internet-Draft             ForCES LFB Library                  June 2009
        
        
          IfIndex
          port index on the specified FE
          uint32
        
        
          IPv6addr
          IP address of the port
          IPv6Addr
        
        
          prefixlen
          prefix length of this ip address
          uint32
        
      
    
    
      IPv4Addr
      IPv4 address
      byte[4]
    
    
      IPv6Addr
      IPv6 address
      byte[16]
    
    
      IPv4Prefix
      IPv4 prefix defined by an address and a prefix length
      
      
        
          address
          Address part
          IPv4addr
        
        
          prefixlen
          Prefix length part
          
            uchar
            
              
Wang, et al.            Expires December 31, 2009              [Page 56]
Internet-Draft             ForCES LFB Library                  June 2009
            
          
        
      
    
    
      IPv4NextHopInfoType 
      
      IPv4 nexthop information,include nexthop ip address,
      output FE and interface etc.
      
        
          NexthopID
          nexthop id
          uint32
        
        
          FEID
          output FE id
          uint32
        
        
          Egress
          output port index
          uint32
        
        
          MTU
          The maximum transmition unit of the nexthop link.
          
          uint32
        
        
           Flags 
          Associated flags of the nexthop,such as local
          delivery,multicast etc.
          NextHopFlagsType
        
        
           NexthopIPaddr 
          IP address of the nexthop
          IPv4Addr
        
        
           L2Index 
          index into the L2 link layer table,such as IPv4 ARP
          table or IPv6 NBR table.
          uint32
Wang, et al.            Expires December 31, 2009              [Page 57]
Internet-Draft             ForCES LFB Library                  June 2009
        
        
           EncapNeeded 
          The type of encapsulation needed on the packet.
          
          LinkEncapType
        
      
    
    
      IPv4FibEntryType
      
      IPv4 forwarding table entry.
      
        
          prefix
          IPv4 prefix.
          IPv4Prefix
        
        
          FEID
          output FE id
          uint32
        
        
          Egress
          output port index
          uint32
        
        
          MTU
          The maximum transmition unit of the nexthop link.
          
          uint32
        
        
           Flags 
          Associated flags of the nexthop,such as local
          delivery,multicast etc.
          NextHopFlagsType
        
        
           NexthopIPaddr 
          IP address of the nexthop
          IPv4Addr
        
        
           L2Index 
Wang, et al.            Expires December 31, 2009              [Page 58]
Internet-Draft             ForCES LFB Library                  June 2009
          index into the L2 link layer table,such as IPv4 ARP
          table or IPv6 NBR table.
          uint32
        
        
           EncapNeeded 
          The type of encapsulation needed on the packet.
          
          LinkEncapType
        
      
    
    
      IPv4PrefixTableEntry
      
      IPv4 prefix table entry
      
        
          Prefix
          IPv4 address prefix
           IPv4Prefix 
        
        
          NexthopID
          Index into the nexthop table.
          uint32
        
      
    
    
      IPv4UcastLPMStatisticsType 
      
      statistics of IPv4UcastLPM LFB
      
        
          InRcvdPkts
          The total number of input packets received from
          interfaces, including those received in error
          uint64
        
        
          FwdPkts
          IPv4 packet forwarded by this LFB
          uint64
        
        
           NoRoutePkts 
          The number of IP datagrams discarded because no
Wang, et al.            Expires December 31, 2009              [Page 59]
Internet-Draft             ForCES LFB Library                  June 2009
          route could be found to transmit them to their destination.
          
          uint64
        
        
          InDeliverPkts
          The total number of input datagrams successfully
          delivered to IP user-protocols (including ICMP).
          uint64
        
      
    
    
      IPv4ValidatorStatisticsType
      
      IPv4 validator LFB statistics type
      
        
          badHeaderPkts
          The total number of input datagrams with bad ip
          header
          uint64
        
        
          badTotalLengthPkts
          The total number of input datagrams with bad length
          
          uint64
        
        
          badTTLPkts
          The total number of input datagrams with bad TTL
          
          uint64
        
        
          badChecksum
          The total number of input datagrams with bad
          checksum
          uint64
        
      
    
    
      IPv6Prefix
      IPv6 prefix
      
        
Wang, et al.            Expires December 31, 2009              [Page 60]
Internet-Draft             ForCES LFB Library                  June 2009
          IPv6addr
          address part of the prefix
          IPv6Addr
        
        
          prefixlen
          length of the prefix
          uint32
        
      
    
    
      IPv6NextHopInfoType
      
      IPv6 nexthop information,include nexthop ip address,
      output FE and interface etc.
      
        
          NexthopID
          nexthop id
          uint32
        
        
          FEID
          output FE id
          uint32
        
        
          Egress
          output port index
          uint32
        
        
          MTU
          The maximum transmition unit of the nexthop link.
          
          uint32
        
        
           Flags 
          Associated flags of the nexthop,such as local
          delivery,multicast etc.
          NextHopFlagsType
        
        
           NexthopIPv6addr 
          IP address of the nexthop
          IPv6Addr
Wang, et al.            Expires December 31, 2009              [Page 61]
Internet-Draft             ForCES LFB Library                  June 2009
        
        
           L2Index 
          index into the L2 table
          uint32
        
        
           EncapNeeded 
          The type of encapsulation needed on the packet.
          
          LinkEncapType
        
      
    
    
      IPv6PrefixTableEntry
      
      IPv6 prefix table entry
      
        
           Prefix 
          IPv6 address prefix
           IPv6Prefix 
        
        
           NexthopID 
          index to the nexthop table.
          uint32
        
      
    
    
       IPv6LPMClassiferStatisticsType 
      
      statistics of IPv6LPMClassifier LFB
      
        
           InRcvdPkts 
          The total number of input packets received from
          interfaces, including those received in error
          uint64
        
        
           FwdPkts 
          IPv4 packet forwarded by this LFB
          uint64
        
        
Wang, et al.            Expires December 31, 2009              [Page 62]
Internet-Draft             ForCES LFB Library                  June 2009
           NoRoutePkts 
          The number of IP datagrams discarded because no
          route could be found to transmit them to their destination.
          
          uint64
        
        
          InDeliverPkts
          The total number of input datagrams successfully
          delivered to IP user-protocols (including ICMP).
          uint64
        
      
    
    
       IPv6ValidatorStatisticsType 
      
      IPv6 validator LFB statistics type
      
        
           badHeaderPkts 
          The total number of input datagrams with bad ip
          header
          uint64
        
        
           badTotalLengthPkts 
          The total number of input datagrams with bad length
          
          uint64
        
        
           badTTLPkts 
          The total number of input datagrams with bad TTL
          
          uint64
        
        
           badChecksum
          The total number of input datagrams with bad
          checksum
          uint64
        
      
    
    
       NextHopFlagsType 
      
Wang, et al.            Expires December 31, 2009              [Page 63]
Internet-Draft             ForCES LFB Library                  June 2009
      Flags used to define different nexthop behaviors
      
      
        uint32
        
          
            local
            Packets match the nexthop entry with this flag
            are delivered to the higher level protocols.
          
          
            drop
            Packets match the nexthop entry with this flag
            are to be dropped.
          
          
            broadcast
            The route associated with this nexthop is a
            broadcast.
          
          
            multicast
            The route associated with this nexthop is
            multicast.
          
        
      
    
    
      WeightTableEntryType
      
      Weight table for queues.
      
        
          QueueID
          queue id
          uint32
        
        
          weight
          weight of the queue.
          uint32
        
      
    
    
      NbrState
      
Wang, et al.            Expires December 31, 2009              [Page 64]
Internet-Draft             ForCES LFB Library                  June 2009
      IPv6 neighbour entry resolution state.
      
        uchar
        
          
            INCOMPLETE 
            Address resolution is being performed on entry.
            Specifically,a Neighbor Solicitation has been sent to the
            solicited-node multicast address of the target, but the
            corresponding Neighbor Advertisement has not yet been
            received.
          
          
            REACHABLE
            Positive confirmation was received within the
            last reachableTime milliseconds that the forward path to
            the neighbor was functioning properly. While reachable, no
            special action takes place as packets are sent.
          
          
            STALE
            More than ReachableTime milliseconds have elapsed
            since the last positive confirmation was received that the
            forward path was functioning properly. While STALE, no
            action takes place until a packet is sent. The STALE state
            is entered upon receiving an unsolicited Neighbor Discovery
            message that updates the cached link-layer address. Receipt
            of such a message does not confirm reachability, and
            entering the STALE state insures reachability is verified
            quickly if the entry is actually being used. However,
            reachability is not actually verified until the entry is
            actually used.
          
          
            DELAY
            More than ReachableTime milliseconds have elapsed
            since the last positive confirmation was received that the
            forward path was functioning properly, and a packet was
            sent within the last DELAY_FIRST_PROBE_TIME seconds. If no
            reachability confirmation is received within
            DELAY_FIRST_PROBE_TIME seconds of entering the DELAY state,
            send a Neighbor Solicitation and change the state to PROBE.
            
          
          
            PROBE
            A reachability confirmation is actively sought by
            retransmitting Neighbor Solicitations every RetransTimer
Wang, et al.            Expires December 31, 2009              [Page 65]
Internet-Draft             ForCES LFB Library                  June 2009
            milliseconds until a reachability confirmation is received.
            
          
        
      
    
    
      ArpTableEntryType
      
      Arp entry.
      
        
          Index
          Index of the arp table.
          uint32
        
        
          NeighborIP
          IP address of the neighbour.
          IPv4Addr
        
        
          SrcMac
          Source MAC.
          IEEEMAC
        
        
          NeighborMac
          Mac of the Neighbor.
          IEEEMAC
        
        
          State
          State of the address resolution progress
          ArpStateType
        
      
    
    
      NbrTableEntryType
      
      IPv6 neighbour table entry.
      
        
          Index
          Index of the arp table.
          uint32
        
Wang, et al.            Expires December 31, 2009              [Page 66]
Internet-Draft             ForCES LFB Library                  June 2009
        
          NeighborIPv6
          IP address of the neighbour.
          IPv6Addr
        
        
          SrcMac
          Source MAC.
          IEEEMAC
        
        
          NeighborMac
          Mac of the Neighbor.
          IEEEMAC
        
        
          State
          State of the entry's resolution progress
          NbrState
        
      
    
    
      DCHostTableEntryTypev4
      
      Direct connected arp table entry for IPv4. 
      
        
          NeighbourIP
          IP address of the neighbour.
          IPv4Addr
        
        
          SrcMac
          Source MAC.
          IEEEMAC
        
        
          NeighborMac
          Mac of the Neighbor.
          IEEEMAC
        
      
    
    
      DCHostTableEntryTypev6
      
      Direct connected arp table entry for IPv6. 
Wang, et al.            Expires December 31, 2009              [Page 67]
Internet-Draft             ForCES LFB Library                  June 2009
      
        
          NeighbourIPv6
          IP address of the neighbour.
          IPv6Addr
        
        
          SrcMac
          Source MAC.
          IEEEMAC
        
        
          NeighborMac
          Mac of the Neighbor.
          IEEEMAC
        
      
    
    
      IPPacketType
      
      The packet type code.
      
        uchar
        
          
            IPv4Ucast
            IPv4 unicast packet.
          
          
            IPv4Mcast
            IPv4 multicast packet.
          
          
            IPv6Ucast
            IPv6 unicast packet.
          
          
            IPv6Mcast
            IPv6 multicast packet.
          
        
      
    
    
      IPDispatchTableType
      
      The dispatch table type.
Wang, et al.            Expires December 31, 2009              [Page 68]
Internet-Draft             ForCES LFB Library                  June 2009
      
        
          IPPacketType
          The type of the packet.IPv4Uncast,IPv6Ucast,
          IPv4Mulcast,IPv6Mulcast etc.
          IPPacketType
        
        
          index
          The index of the output group to output the packets
          
          uint32
        
      
    
    
      MetaType
      Metadata type definition.
      
        
          MetadataID
          The ID of the metadata,the value is standardalized
          in the corresponding LFB definition RFCs.
          uint32
        
        
          MetadataName
          The name of the metadata.
          String
        
      
    
    
      MetadataClassTableType
      
      The meta data classifying table.
      
        
          value
          Value of the meta data.
          uint32
        
        
          index
          The index of the port in the output group to use
          for outputing the packets.
          uint32
        
Wang, et al.            Expires December 31, 2009              [Page 69]
Internet-Draft             ForCES LFB Library                  June 2009
      
    
    
      LinkEncapType
      
      Encapsulation type.
      
        uchar
        
          
            Link
            Link layer encapsulation such as Ethernet and
            PPP.
          
          
            InterFE
            Inter FE communication encapsulation.
          
          
            Tunnel
            Tunnel encapsulation such as IP-in-IP.
          
        
      
    
    
      IPAddress
      
      IP layer address.
      
        
          Ipv4
          IPv4 address.
          IPv4Addr
        
        
          Ipv6
          IPv6 address.
          IPv6Addr
        
      
    
    
      ArpStateType
      
      The arp entry state.
      
        uchar
Wang, et al.            Expires December 31, 2009              [Page 70]
Internet-Draft             ForCES LFB Library                  June 2009
        
          
            Manual
            The entry is manually set.
          
          
            InSolicit
            The peer's level 2 address is still in requesting
            
          
          
            Valid
            The address resolution have been completed
            successfully,it now can be used in the data packets
            forwarding.
          
        
      
    
    
      MatchTargetType
      
      
         Indicator for the kind of field to be matched by this
         entry in a classifier.
       
      
        uchar
        
          
            MatchNone
            A matcher against no field
          
          
            MatchMetaData
            A matcher against a metadata item
          
          
            MatchPacketField
             A matcher that works against an identified
            packet field.
          
          
            MatchOffsetLength
            The match target is a specified portion of the
            packet.
          
        
Wang, et al.            Expires December 31, 2009              [Page 71]
Internet-Draft             ForCES LFB Library                  June 2009
      
    
    
      MatchTargetIdentifier
      
      
         Identify the specific target of a match condition.
       
      
        
          MetaDataID
          The ID of a metadata item
          uint32
        
        
          packetFieldID
          The identifier for a packet Field, such as SA, DA,
          Protocol, SPort, DPort, etc.  These identifiers allow
          references to fields with varialbe amounts before them.
          
          uint32
        
        
          OffSetLengthPacketField
          A field in the packet identified by its offset and
          length in bits.  This does not allow for matching fields
          whose position depends upon earlier field sizes.
          
            
              fieldOffset
              The offset in bits from the start of the packet
               to the start of the field.
              uint32
            
            
              fieldLength
              The length of the field, in bits
              uint32
            
          
        
      
    
    
      MatchBitString
      
      A bit string for use in a match condition.
      
Wang, et al.            Expires December 31, 2009              [Page 72]
Internet-Draft             ForCES LFB Library                  June 2009
        
          MatchBits
          The bits to match
          octetstring[16]
        
        
          MatchLength
          The number of bits to match
          uchar
        
      
    
    
      MatchCondition
      
      
         structure for a single condition to be applied.
       
      
        
          TargetType
          The category of target to match
          MatchTargetType
        
        
          TargetID
          The specific target to compare
          MatchTargetIdentifier
        
        
          MatchType
          The kind of match to apply.
          MatchConditionType
        
        
          MatchParamOne
          The first parameter for the match
          
          MatchBitString
        
        
          MatchParamTwo
          The second parameter for the match
          
          MatchBitString
        
      
    
Wang, et al.            Expires December 31, 2009              [Page 73]
Internet-Draft             ForCES LFB Library                  June 2009
    
      MatchConditiontType
      
      
         Indicator for the kind of match condition to be applied.
       
      
        uchar
        
          
            MatchNone
            A matcher which always fails
          
          
            MatchExact
             The target and the match value must be the same,
             with no padding.Only the first value of the match condition
             is used. The first match value must be occur.
          
          
            MatchLeft
            The target must begin with the first match value.
            If there is a second match value, the remainder of the
            target must match repeated occurrances of the second value.
            Thus, this can be used to allow any terminal content, or
            specific ending pad. The first match value must occur.
            
          
          
            MatchRight
             The target must end with the first match value.
            If there is a second match value, the preceding part of the
            target must match repeated occurrances of the second value.
            Thus, this can be used to allow any leading content, or
            specific leading fill. The first match value must occur.
            
          
          
            MatchRange
             The match values will be considered as numbers,
            and the target must be greater than or equal to the first
            match value, and less than or equal to the second match
            value. An omitted match value means that end of the range
            is unlimitted.
          
          
            MatchMaskedValue
             The target the the first value are each anded
Wang, et al.            Expires December 31, 2009              [Page 74]
Internet-Draft             ForCES LFB Library                  June 2009
            with the second value. The match succeeds if the results of
            these and operations are identical. Both values are
            required.
          
          
            MatchSucceed
            A Match which always succeeds
          
        
      
    
    
      MatchMetaDataAction
      
      An action to set a metadata item to either a specific
      value or a field from the incoming meta data or packet
      
        
          MetaDataToSet
          The Meta Data Item to set
          uint32
        
        
          ExplicitValueToSet
          A value to set the metadata to
          
          octetstring[16]
        
        
          ValueFromCondition
           This is an index into the corresponding match
          conditions, and the meta data will be set to the value that
          was tested by that condition. 
          
          uint32
        
      
    
    
      NextHopIndex
      An index used by the next hop table.Typically stored in
      and generated as metadata by the longest-prefix-match LFB
      
      int32
    
  
  
    
Wang, et al.            Expires December 31, 2009              [Page 75]
Internet-Draft             ForCES LFB Library                  June 2009
      NextHopID
      Index into a Next Hop entry in Nexthop table
      1
      NextHopIndex
    
    
      ExceptionID
      Exception Types
      2
      
        uint32
        
          
            Options
            Packets with options,for IPv6 Packet with
            next-header set to hop-by-hop header(0).
          
          
            LengthMismatch
            The packet length reported by link layer is less
            than the total length field.
          
          
             BadTTL 
            The packet can't be forwarded as the TTL has
            expired.
          
          
             Multicast 
            The packet received is a multicast packet.
            
          
          
            FragRequired
            The MTU for outgoing interface is less than the
            packet size.
          
          
            Redirect
            The outgoing port is same as the one on which the
            packet is received.
          
          
            LocalDelivery
            The packet is for a local interface.
          
          
Wang, et al.            Expires December 31, 2009              [Page 76]
Internet-Draft             ForCES LFB Library                  June 2009
            LimitedBroadcast
            Packet received as limited broadcast.
          
        
      
    
    
      IngressPort
      At which interface the packet arrive.
      3
      ifIndex
    
    
      EgressPort
      Interface out which the packet will emmit.
      4
      ifIndex
    
    
      NextHopIP
      
      Nexthop IPv4 address
      5
      IP4Addr 
    
    
      NexthopIPv6
      
      Nexthop IPv6 address
      6
      IPv6Addr
    
    
      PacketLength
      The length of the packet in octets.
      7
      uint32
    
    
      IPPacketType 
      
      Type of the packet
      8
      
        uint32
        
          
             IPv4 
Wang, et al.            Expires December 31, 2009              [Page 77]
Internet-Draft             ForCES LFB Library                  June 2009
            IPv4 packet
          
          
             IPv6 
            IPv6 packet
          
          
             TaggedFrame 
            packet with metadata
          
          
             MetaDataFrame 
            meta data only
          
        
      
    
    
      QueueID 
      
      The queue ID
      9
       uint32
    
    
      QueueOperationCmd
      
      The type of operation on the queue,there are two types
      defined here: enqueue and dequeue.
      10
      
        uchar
        
          
            Enqueue
            Enqueue command.
          
          
            Dequeue
            Dequeue command.
          
        
      
    
    
      SrcFEID
      Source FE ID.
      11
Wang, et al.            Expires December 31, 2009              [Page 78]
Internet-Draft             ForCES LFB Library                  June 2009
      uint32
    
    
      DstFEID
      Destination FE ID.
      12
      uint32
    
    
      NexthopIndex
      
      Nexthop index into the link layer address resolution
      table.
      13
      uint
    
    
      NHEncapMethod
      
      how should the following LFBs do to encapsulate the
      packets,such as link encapsulation which means the packets need
      to encapsulate link layer header before sending to media;inter FE
      communication encapsulation which means the packets need to first
      encapsulate inter FE communication header before transimiting to
      other FEs;tunnel encapsulation which means the packet need do
      extra tunnel encapsulation before sending out to media
      14
      LinkEncapType
    
    
      ErrorId
      
      Error Type.
      15
      
        int32
        
          
            WrongIpVersion
            the IP version wrong
          
          
            WrongLength
            
                 the packet length is not as long as
                 the header indicates
               
          
Wang, et al.            Expires December 31, 2009              [Page 79]
Internet-Draft             ForCES LFB Library                  June 2009
          
            otherError
            The errors we not defined now
          
        
      
    
  
  
    
      EtherPort
      
      LFB for Ethernet ports
      1.0
      GenericConnectivityLFB
      
        
          PacketsFromProcessingUnit
          Ports for receiving packets from processing unit
          such as NP,that will be sent to media.
          
            
              [EthernetII]
            
            
              [OutputPort]
            
          
        
        
          PacketsFromMedia
          Ports for receiving packets from ethernet media.
          
          
            
              [EthernetII]
            
          
        
      
      
        
          PacketsToProcessingUnit
          Ports for sending packets to processing unit such
          as NP for further processing.
          
            
              [EthernetII]
Wang, et al.            Expires December 31, 2009              [Page 80]
Internet-Draft             ForCES LFB Library                  June 2009
            
            
              [InputPort]
            
          
        
        
          PacketsToMedia
          Ports for sending packets to media.
          
            
              [EthernetII]
            
          
        
      
      
        
          IfIndex
          A unique value for each interface. Its value ranges
          between 1 and the value of total number of interfaces in the
          system. The value for each interface must remain constant at
          least from one re-initialization of the entity's network
          management system to the next re-initialization.
          uint32
        
        
          IfName
          Name of this port
          string[16]
        
        
          LinkSpeed
          Speed of this port
          NetSpeedType
        
        
          MTU
          Maximum transmition unit
          uint32
        
        
          OperaStatus
          Operate state of this port.
          PortStatusValues
          "down"
        
        
Wang, et al.            Expires December 31, 2009              [Page 81]
Internet-Draft             ForCES LFB Library                  June 2009
          AdminStatus
          Administrator's state of this port
          PortStatusValues
          "down"
        
        
          PromiscuousMode
          Whether the interface is in promiscuous mode
          
          booleanType
          "no"
        
        
          CarrierStatus
          whether the port is linked with an connector.
          
          booleanType
          "no"
        
        
          OperMode
          The port operation mode,must be one of the
          following values:Auto,Half-duplex,Full-duplex
          IEEENegotiationType
          "auto"
        
        
          SrcNegotiationTypeMACAddr
          source MAC
          IEEEMAC
        
        
          MacAliasTable
          A series of MACs that the port can receive frame
          on.
          
            IEEEMAC
          
        
        
          StatsEnable
          whether enable the statistics in this LFB.
          
          
          booleanType
          "no"
        
        
Wang, et al.            Expires December 31, 2009              [Page 82]
Internet-Draft             ForCES LFB Library                  June 2009
          PortStats
          port statistics.
          
          PortStatsType
        
        
          Ipaddr
          IP layer Address.
          IPAddress
        
      
      
        
          PortStatusChanged
          Port status has changed since last time reporting.
          
          
            OperaStatus
          
          
          
            
              OperaStatus
            
          
        
      
    
    
      EtherDecap
      
      An LFB class for definition of Ethernet decapsulation
      and Ethernet filtering functions
      1.0
      GenericConnectivityLFB
      
        
          PacketsIn
          Packets from other LFB.
          
            
              [EthernetII]
            
          
        
      
      
        
Wang, et al.            Expires December 31, 2009              [Page 83]
Internet-Draft             ForCES LFB Library                  June 2009
          DecapOut
          Ethernet decapsulation output.
          
            
              [Arbitrary]
            
          
        
      
      
        
          DispatchTable
          This table is used for selecting output in the
          ouput group for the incoming packet stream.
          IPDispatchTableType
        
      
    
    
      IPv4UcastLPM
      IPv4 Longest Prefix Match Lookup LFB
      1.0
      
        
          PktIn
          The port to receive IPv4 packets from other LFBs
          
          
            
              [IPv4]
            
          
        
      
      
        
          SuccessOut
          Successful output when all is fine.
          
            
              [IPv4]
            
            
              [NextHopID]
              [FEID]
              [Egress]
              [MTU]
              [Flags]
Wang, et al.            Expires December 31, 2009              [Page 84]
Internet-Draft             ForCES LFB Library                  June 2009
              [NexthopIPAddr]
              [NHEncapMethod]
            
          
        
        
          ExceptionOut
          Exception output
          
            
              [IPv4]
            
            
              [Ingress ]
              [ExceptionID]
            
          
        
        
          FailOutput
          Dropper
          
            
              [ IPv4 ]
            
          
        
      
      
        
           PrefixTable 
          IPv4 prefix table
          
             IPv4PrefixTableEntry 
            
              IPv4PrefixTableEntry.prefix
              
            
          
        
        
          Fib
          IPv4 unicast forwarding table.
          
          
            IPv4FibEntryType
            
              IPv4FibEntryType.prefix
Wang, et al.            Expires December 31, 2009              [Page 85]
Internet-Draft             ForCES LFB Library                  June 2009
              
            
          
        
        
          LocalIpAddrTable
          The table of interfaces's ip address infomation on
          the local device
          LocalIpAddrType
        
        
          IPv4Stats
          The IPv4 associated statistics
          
           IPv4UcastLPMStatisticsType 
        
      
      
        
          PrefixTableLimit
          maxium number of prefix supported by this LFB
          
          uint32
        
        
          LocalIpAddrTableLimit
          maxium number of IP address entrys supported by
          this LFB
          uint32
        
      
      This LFB represents the IPv4 longest prefix match
      lookup operation.
    
    
       IPv4NextHopApplicator 
      An LFB definition for applicating next hop action to
      IPv4 packets,the actions include:TTL operation,checksum
      recalculation.
      1.0
      
        
          PktIn
          Port used to receive IPv4 packets from other LFBs
          
          
            
              [ IPv4 ]
Wang, et al.            Expires December 31, 2009              [Page 86]
Internet-Draft             ForCES LFB Library                  June 2009
            
            
              [NextHopID
              ]
              [FEID]
              [Egress
              ]
              [MTU]
              [Flags
              ]
              [
              NexthopIPAddr]
              [
              NHEncapMethod]
            
          
        
      
      
        
          SuccessOut
          Output port for packet successfully fulfill the
          nexthop application.
          
            
              [ IPv4 ]
            
            
              [DstFEID]
              [Egress]
              [L2Index]
              [NextHopIP]
              [NHEncapMethod]
            
          
        
        
          ExceptionOut
          Output for packets need deep dealt by higher level
          protocol stacks.
          
            
              [ IPv4 ]
            
            
              [Ingress]
              [ExceptionID]
            
Wang, et al.            Expires December 31, 2009              [Page 87]
Internet-Draft             ForCES LFB Library                  June 2009
          
        
        
          FailOutput
          Output for packets failed the nexthop application
          operation.
          
            
              [ IPv4 ]
            
          
        
      
      
        
           NextHopTable 
          Nexthop table
          
          
             IPv4NextHopInfoType 
          
        
      
      
        
          NextHopTableLimit
          Maxium number of nexthops this LFB supports
          
          uint32
        
      
    
    
      IPv6UcastLPM
      An LFB class definition for IPv6 longest prefix lookup
      function.
      1.0
      
        
          PktIn
          The port to receive IPv6 packets needed to do IPv4
          LPM.
          
            
              [IPv6]
            
          
        
Wang, et al.            Expires December 31, 2009              [Page 88]
Internet-Draft             ForCES LFB Library                  June 2009
      
      
        
          SuccessOut
          Output for packets that have find the correct
          route.
          
            
              [IPv6]
            
            
              [NextHopID]
            
          
        
        
          FailOutput
          LPM failed.
          
            
              [ IPv6 ]
            
          
        
      
      
        
           PrefixTable 
          IPv6 prefix table
          
             IPv6PrefixTableEntry 
            
              IPv6PrefixTableEntry.prefix
              
            
          
        
        
          LocalIpv6AddrTable
          The table of interfaces's ip address infomation on
          the local device
          LocalIpv6AddrType
        
        
          IPv6Stats
          The IPv6 associated statistics
          
           IPv6LPMClassiferStatisticsType 
Wang, et al.            Expires December 31, 2009              [Page 89]
Internet-Draft             ForCES LFB Library                  June 2009
        
      
      
        
          PrefixTableLimit
          maxium number of prefix supported by this LFB
          
          uint32
        
        
          LocalIpv6AddrTableLimit
          maxium number of IPv6 address entrys supported by
          this LFB
          uint32
        
      
    
    
      IPv6UcastNexthopApplicator
      An LFB for applicating next hop action to IPv6 packets,
      actions mainly inlcude TTL incrementation and checksum
      recalculation.
      1.0
      
        
          PktIn
          Input port for packets to be applicate nexthop.
          
          
            
              [ IPv6 ]
            
            
              [NextHopID]
            
          
        
      
      
        
          SuccessOut
          Output port for packet successfully fulfill the
          nexthop application.
          
            
              [ IPv6 ]
            
            
Wang, et al.            Expires December 31, 2009              [Page 90]
Internet-Draft             ForCES LFB Library                  June 2009
              [FEID]
              [Egress]
              [L2Index]
              [NextHopIPv6]
              [NHEncapMethod]
            
          
        
        
          ExceptionOut
          Output port for exception packet.The following
          packets are identified as Exception packet:1 Packet with Hop
          Limit zero.2 The MTU for outgoing interface is less than the
          packet size.3 The outgoing port is same as the one on which
          the packet is received.4 The packet is for a local interface.
          
          
            
              [ IPv6 ]
            
            
              [Ingress]
              [ExceptionID]
            
          
        
        
          FailOutput
          Output for packets failed the nexthop application
          operation.
          
            
              [ IPv6 ]
            
          
        
      
      
        
           NextHopTable 
          Nexthop table
          
             IPv6NextHopInfoType 
          
        
      
      
        
Wang, et al.            Expires December 31, 2009              [Page 91]
Internet-Draft             ForCES LFB Library                  June 2009
          NextHopTableLimit
          Maxium number of nexthops this LFB supports
          
          uint32
        
      
    
    
      EtherEncap
      
      An LFB classifier definition for completes ethernet
      encapsulation fuctions
      1.0
      GenericConnectivityLFB
      
        
          EncapIn
          Port for receiving packets needed to build Ethernet
          encapsulation.
          
            
              [IPv4]
              [IPv6]
            
            
              [L2Index]
              
                [NextHopIP]
                [NextHopIPv6]
              
              [IPPacketType]
            
          
        
      
      
        
          SuccessOut
          
          
            
              [EthernetII]
            
          
        
        
          ExceptionOut
          packet can't find the associated L2 information
Wang, et al.            Expires December 31, 2009              [Page 92]
Internet-Draft             ForCES LFB Library                  June 2009
          
          
            
              [IPv4]
              [IPv6]
            
          
        
      
      
        
          ArpTable
          Ethernet arp table.
          
            ArpTableEntryType
          
        
        
          NbrTable
          IPv6 neighbour table.
          
          
            NbrTableEntryType
          
        
        
          DCHostTablev4
          Direct connected host arp table for IPv4
          
            DCHostTableEntryTypev4
          
        
        
          DCHostTablev6
          Direct connected host arp table for IPv6
          
          
            DCHostTableEntryTypev6
          
        
      
      
        
          ArpTableLimit
          Max number of arp entries in arp table.
          uint32
        
        
Wang, et al.            Expires December 31, 2009              [Page 93]
Internet-Draft             ForCES LFB Library                  June 2009
          NbrTableLimit
          Max number of neighbours in neighbour table.
          
          
          uint32
        
        
          DCHostTablev4Limit
          The limit on Direct connected host table for IPv4.
          
          uint32
        
        
          DCHostTablev6Limit
          The limit on Direct connected host table for IPv6.
          
          
          uint32
        
      
    
    
      Scheduler
      Base scheduler LFB.
      1.0
      
        
          Watcher
          Input for watching the queues to be scheduled.
          Queues to be scheduled can transmit packet enqueue and
          dequeue infomation to scheduler through these port
          
            
              [MetadataFrame]
            
            
              [QueueID]
              [PacketLength]
              [QueueOperationCmd]
            
          
        
      
      
        
          OutControl
          Control output,this output is used by scheduler to
          communicate commands to it's controlled queues such as
Wang, et al.            Expires December 31, 2009              [Page 94]
Internet-Draft             ForCES LFB Library                  June 2009
          dequeue a packet.
          
            
              [MetadataFrame]
            
            
              [QueueOperationCmd]
            
          
        
      
      
        
          QueueScheduledLimit
          Max number of queues that can be scheduled by this
          scheduler.
          uint32
        
      
      This defines a base LFB class for schedulers.
      Schedulers have an Input Port group called Watchers for
      representing the queues they watch, and an Output Port group
      called Controllers fro representing the queues they control.
                                                      
    
    
      Queue 
      Queue LFB.
      1.0
      
        
          InControl
          Input from scheduler
          
            
              [QueueOperationCmd]
            
          
        
        
          InData
          Input port for data packet.
          
            
              [Arbitrary]
            
            
              [PacketLength]
Wang, et al.            Expires December 31, 2009              [Page 95]
Internet-Draft             ForCES LFB Library                  June 2009
            
          
        
      
      
        
          OutToController
          Output to queue controller
          
            
              [MetadataFrame]
            
            
              [QueueID]
              [PacketLength]
              [QueueOperationCmd]
            
          
        
        
          OutData
          Data packet output
          
            
              [Arbitrary]
            
          
        
      
      
        
          CurLen
          Current length of the queue in number of packets.
          
          uint32
        
      
      
        
          QueueLenLimit
          Maximum length of the queue in number of packets.
          
          uint32
        
      
      Queues have a packet input, a packet output, a
      control input, and a group of control outputs. The control ports
      represent the control relationships with scheduluers.
Wang, et al.            Expires December 31, 2009              [Page 96]
Internet-Draft             ForCES LFB Library                  June 2009
                                                         
    
    
      WRRSched
      Weighted round robin scheduler.
      1.0
      Scheduler
      
        
          WeightTable
          Weight table for queues to be scheduled.
          
          
            WeightTableEntryType
          
        
      
    
    
      IPv6AddrResolution
      This LFB class provides the function of IPv6 address
      resolution part of neighbor discovery protocol.It provides an
      offload of ND protocol processing to FE.It process the following
      ND messages:neighbour solicitation and neighbour advertisement.
      
      1.0
      
        
          AddrResDataPktIn
          The IPv6 data packet that need to do the address
          resolution.
          
            
              [IPv6]
            
          
        
        
          AddrResProtoPktIn
          The neighbour discovery packet related to address
          resolution.
          
            
              [IPv6]
            
          
        
      
Wang, et al.            Expires December 31, 2009              [Page 97]
Internet-Draft             ForCES LFB Library                  June 2009
      
        
          AddrResDataPktOut
          The IPv6 packet that have encapsulated with the
          correct ethernet L2 info and need to be sent out to link.
          
          
            
              [EthernetII]
            
          
        
        
          AddrResProtoPktOut
          The IPv6 neighbour discovey packet wich has been
          encapsulation with the correct ethernet L2 info.
          
            
              [EthernetII]
            
          
        
      
      
        
          Nbrtable
          This table is an alias to the IPv6 neighbour table
          in the EtherEncap LFB.
          NbrTable
        
      
    
    
      ICMPv6Generator
      This LFB class provide some basic ICMPv6 function,it
      only generate the following ICMP messages for the packets that
      need some basic icmp processing:destination not reachable and
      time excceeded.
      1.0
      
        
          PktIn
          The IPv6 packet that need icmp processing.
          
          
            
              [IPv6]
            
Wang, et al.            Expires December 31, 2009              [Page 98]
Internet-Draft             ForCES LFB Library                  June 2009
            
              [ExceptionID]
            
          
        
      
      
        
          ICMPv6PktOut
          The output for the ICMPv6 packets generated
          according to the input IPv6 packet and the ExceptionID.
          
          
            
              [IPv6]
            
          
        
      
    
    
      ExtendHeaderProc
      This LFB class process the IPv6 packet with extended
      header,For the moment,the packets to this LFB are redirect to
      RedirectSink LFB by default.
      1.0
      
        
          PktIn
          The IPv6 packet with extended header in.
          
            
              [IPv6]
            
          
        
      
      
        
          PktOut
          According to the Extended header type the packet
          may have different next proccesing LFB.Now by default we send
          all the packet with extended header to CE.
          
            
              [IPv6]
            
          
Wang, et al.            Expires December 31, 2009              [Page 99]
Internet-Draft             ForCES LFB Library                  June 2009
        
      
    
    
      arp
      This LFB class provides the function of address
      resolution for IPv4 nodes.
      1.0
      
        
          AddrResDataPktIn
          The IPv4 data packet that need to do the address
          resolution.
          
            
              [IPv4]
            
          
        
        
          ArpPktIn
          The neighbour discovery packet related to address
          resolution.
          
            
              [IPv4]
            
          
        
      
      
        
          AddrResDataPktOut
          The IPv4 packet that have been encapsulated with
          the correct ethernet L2 info and need to be sent out to link.
          
          
            
              [EthernetII]
            
          
        
        
          ArpOut
          The arp packet out.
          
            
              [EthernetII]
Wang, et al.            Expires December 31, 2009             [Page 100]
Internet-Draft             ForCES LFB Library                  June 2009
            
          
        
      
      
        
          Arptable
          This table is an alias of the arp table in the
          EtherEncap LFB.
          ArpTable
        
      
    
    
      ICMPGenerator
      This LFB class provide some basic ICMP function,it only
      generate the following ICMP messages:ICMP destination
      unreachable and time excceeded.
      1.0
      
        
          PktIn
          IPv4 packet that need icmp processing.
          
            
              [IPv4]
            
            
              [ExceptionID]
            
          
        
      
      
        
          ICMPPktOut
          The output for the ICMP packets generated according
          to the input packet and the ExceptionID.
          
            
              [IPv4]
            
          
        
      
    
    
      MetadataClassifier
Wang, et al.            Expires December 31, 2009             [Page 101]
Internet-Draft             ForCES LFB Library                  June 2009
      This LFB class provides the function of classify
      packets according to the meta data.Now it only works on one meta
      data.
      1.0
      
        
          PktIn
          Packets need to do the classification.
          
            
              [Arbitrary]
            
            
              [Arbitrary]
            
          
        
      
      
        
          ClassifiedOut
          Output group for the classified packets.
          
            
              [Arbitrary]
            
          
        
      
      
        
          MetaDataID
          The metadata id that this classifier works on.
          
          uint32
        
        
          MetaDataName
          The name of the meta data that this classifier
          works on.
          string
        
        
          MetadataClassifyTable
          The meta data classifying table.
Wang, et al.            Expires December 31, 2009             [Page 102]
Internet-Draft             ForCES LFB Library                  June 2009
          MetadataClassTableType
        
        
          OutNumOfPorts
          The number of ports in the output group.
          uint32
        
      
      
        
          MaxOutNumOfPorts
          Maxium number of ports in the output group.
          
          uint32
        
      
    
    
      OptionProc
      This LFB class process the IPv4 packet with options,it
      can process on the following options:Router-alert option.
      
      1.0
      
        
          PktIn
          The IPv4 packet with options in.
          
            
              [IPv4]
            
          
        
      
      
        
          PktOut
          According to the Option type the packet may have
          different next proccesing LFB.Now by default we send all the
          packet with extended header to CE.
          
            
              [IPv4]
            
          
        
      
    
Wang, et al.            Expires December 31, 2009             [Page 103]
Internet-Draft             ForCES LFB Library                  June 2009
    
      GenericConnectivityLFB
      
           An LFB Class for providing connectivity between an FE and
           communications media.
         
      1.0
      This LFB Class provides a generic basis for
      representing connectivity between the FE and the outside world.
      The LFB has one or more ports for packets that the FE processing
      logic is forwrding for transmission by this Connectivity LFB. It
      has one or more ports for packets that the Connectivity LFB has
      received and is handing to the FE processing logic. Multiple
      ports for handline packets are supported so that protocol
      specific encapsulation and demultiplexing can be provided by this
      LFB. This LFB also has ports for sending packets to lower layer
      Connectivity LFBs and receiving packets from such lower layer
      Connectivity LFBs. This enables support for the processing
      components of interface stacks, such as PPP over Ethernet or
      Ethernet over MPLS.For packets arriving from Media or lower layer
      connectivity, this LFB will perform appropriate media validation,
      then remove media specific headers, and place the relevant
      information in meta-data.  For ethernet, the Source MAC would be
      in meta-data.  For Frame Relay or ATM, a circuit identifier would
      be in meta-data. For Ethernet with VLANs, this meta-data would
      indicate which VLAN the packet came from. For packets to be
      transmitted, meta-data indicating the destination (destination
      MAC or outgoing circuit, etc.) is required. This LFB will also
      include statistical components such as the number of octets and
      packets sent and received, the number of various input and output
      errors, etc.
    
    
      RedirectLFB
      An LFB Class definition for exchanging data packets
      between the FE and the CE.
      1.0
      
        
          RedirectToCE
          
               Port for frames to send to the CE.
             
          
            
              [taggedFrame]
            
          
Wang, et al.            Expires December 31, 2009             [Page 104]
Internet-Draft             ForCES LFB Library                  June 2009
        
      
      
        
          RedirectFromCE
          
               Port for frames to send to the CE
             
          
            
              [taggedFrame]
            
          
        
      
      This LFB represents a point of exchagne of data
      packets between the CE and the FE. Packets with meta-data are
      exchanged.  It is expected that the output port of a RedirectLFB,
      if it is connected at all, will be connected to a meta-data
      redirector
    
    
      IPv4Validator
      An LFB Class definition for validates the IPv4 packet.
      
      1.0
      
        
          ValidatorIn
          
               Normal packet input.
             
          
            
              [IPv4]
            
          
        
      
      
        
          ValidatorOut
          
               Normal packet Output.
             
          
            
              [IPv4packet]
Wang, et al.            Expires December 31, 2009             [Page 105]
Internet-Draft             ForCES LFB Library                  June 2009
            
          
        
        
          FailOutput
          The port to send packets that do not match any
          entries.
          
            
              [taggedFrame]
            
            
              [errorid]
            
          
        
      
      This LFB validates the IP version and header length
      fields, including verifying that the packet length is at least as
      long as the header indicates.
    
    
      IPv6Validator
      An LFB Class definition for validates the IPv6 packet.
      
      1.0
      
        
          ValidatorIn
          
               Normal packet input.
             
          
            
              [IPv6]
            
          
        
      
      
        
          ValidatorOut
          
               Normal packet Output.
             
          
            
              [IPv6packet]
Wang, et al.            Expires December 31, 2009             [Page 106]
Internet-Draft             ForCES LFB Library                  June 2009
            
          
        
        
          FailOutput
          The port to send packets that do not match any
          entries.
          
            
              [taggedFrame]
            
            
              [errorid]
            
          
        
      
      This LFB validates the IP version and header length
      fields, including verifying that the packet length is at least as
       long as the header indicates.
    
    
      PacketTrimmer
      
      LFB removes data from the front of a packet.
      1.0
      
        
          PacketIn
          
               Normal packet input.
             
          
            
              [Packet]
            
          
        
      
      
        
          PacketOut
          
               Normal packet Output.
             
          
            
              [Packet]
Wang, et al.            Expires December 31, 2009             [Page 107]
Internet-Draft             ForCES LFB Library                  June 2009
            
          
        
        
          FailOut
          
               For packets without enough bytes to remove
             
          
            
              [Packet]
            
          
        
      
      
        
          TrimLength
          amount to trim from each packet
          uint32
        
      
    
    
      Duplicator
      
      An LFB Class definition for packet duplicator LFB. Any
      packet received on an input port is logically copied and sent to
      all output ports.
      1.0
      
        
          PacketIn
          
                  Normal packet input.
                
          
            
              [IPv4]
              [IPv6]
            
          
        
      
      
        
          PacketOut
          Normal packet output port group
Wang, et al.            Expires December 31, 2009             [Page 108]
Internet-Draft             ForCES LFB Library                  June 2009
          
            
              [IPv4]
              [IPv6]
            
          
        
      
    
    
      ArbitraryClassifierLFB
      
      A classifier which can test packet or metadata, and on
      that basis set meta-data a pick an output port.
      1.0
      
        
          PacketsToClassify
          
               The group of ports to received packets over
             
          
            
              [taggedFrame]
            
          
        
      
      
        
          SuccessOutput
          
               The group of ports used by the classifer for output
               when a successful match is found.
             
          
            
              [taggedFrame]
            
            
          
        
        
          FailOutput
          
               The port to send packets that do not match any entries.
             
Wang, et al.            Expires December 31, 2009             [Page 109]
Internet-Draft             ForCES LFB Library                  June 2009
          
            
              [taggedFrame]
            
            
          
        
      
      
        
          ClassifierTable
          The table of classifier entries. Each entry is
          tested until one succeeds. Each entry contains an optional
          port test, an array of packet and meta data tests, an array
          of metadata actions, and an exit selection.
          
            
              
                InputPortTest
                If present,this match will only match packets
                arriving over the specified port.
                
                uint32
              
              
                TestConditions
                The array of conditions to test
                
                  MatchCondition
                
              
              
                MetaDataActions
                The array of meta data modifications to make
                when the match succeeds.
                
                  MatchMetaDataAction
                
              
              
                MatchOutputPort
                The port within the success group to send
                packets which match these tests.
                uint32
              
            
          
        
Wang, et al.            Expires December 31, 2009             [Page 110]
Internet-Draft             ForCES LFB Library                  June 2009
      
    
  
Wang, et al.            Expires December 31, 2009             [Page 111]
Internet-Draft             ForCES LFB Library                  June 2009
7.  LFB Use Case
   Editorial:This section is supposed to discuss how we can build some
   basic applications define by WG charter such as IPV4 forwarding etc.
   Putting together LFBs to form a specific packet processing
   application
Wang, et al.            Expires December 31, 2009             [Page 112]
Internet-Draft             ForCES LFB Library                  June 2009
8.  Contributors
   The authors would like to thank Jamal Hadi Salim and Ligang Dong who
   made a major contribution to the development of this document.
      Jamal Hadi Salim
      Mojatatu Networks
      Ottawa, Ontario
      Canada
      Email: hadi@mojatatu.com
      Ligang Dong
      Zhejiang Gongshang University
      149 Jiaogong Road
      Hangzhou 310035
      P.R.China
      Phone: +86-571-28877751
      EMail: donglg@mail.zjgsu.edu.cn
Wang, et al.            Expires December 31, 2009             [Page 113]
Internet-Draft             ForCES LFB Library                  June 2009
9.  Acknowledgements
   This document is based on earlier documents from Joel Halpern, Ligang
   Dong, Fenggen Jia and Weiming Wang.
Wang, et al.            Expires December 31, 2009             [Page 114]
Internet-Draft             ForCES LFB Library                  June 2009
10.  IANA Considerations
   This memo includes no request to IANA.
Wang, et al.            Expires December 31, 2009             [Page 115]
Internet-Draft             ForCES LFB Library                  June 2009
11.  Security Considerations
   These definitions if used by an FE to support ForCES create
   manipulable entities on the FE.  Manipulation of such objects can
   produce almost unlimited effects on the FE.  FEs should ensure that
   only properly authenticated ForCES protocol participants are
   performing such manipulations.  Thus the security issues with this
   protocol are defined in the FE-protocol [I-D.ietf-forces-protocol].
Wang, et al.            Expires December 31, 2009             [Page 116]
Internet-Draft             ForCES LFB Library                  June 2009
12.  References
12.1.  Normative References
   [I-D.ietf-forces-model]
              Halpern, J. and J. Salim, "ForCES Forwarding Element
              Model", draft-ietf-forces-model-16 (work in progress),
              October 2008.
   [I-D.ietf-forces-protocol]
              Dong, L., Doria, A., Gopal, R., HAAS, R., Salim, J.,
              Khosravi, H., and W. Wang, "ForCES Protocol
              Specification", draft-ietf-forces-protocol-22 (work in
              progress), March 2009.
12.2.  Informative References
   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.
   [RFC2629]  Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629,
              June 1999.
   [RFC3552]  Rescorla, E. and B. Korver, "Guidelines for Writing RFC
              Text on Security Considerations", BCP 72, RFC 3552,
              July 2003.
   [RFC3654]  Khosravi, H. and T. Anderson, "Requirements for Separation
              of IP Control and Forwarding", RFC 3654, November 2003.
   [RFC3746]  Yang, L., Dantu, R., Anderson, T., and R. Gopal,
              "Forwarding and Control Element Separation (ForCES)
              Framework", RFC 3746, April 2004.
   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 5226,
              May 2008.
Wang, et al.            Expires December 31, 2009             [Page 117]
Internet-Draft             ForCES LFB Library                  June 2009
Authors' Addresses
   Weiming Wang
   Zhejiang Gongshang University
   18, Xuezheng Str., Xiasha University Town
   Hangzhou,   310018
   P.R.China
   Phone: +86-571-28877721
   Email: wmwang@mail.zjgsu.edu.cn
   Evangelos Haleplidis
   University of Patras
   Patras,
   Greece
   Email: ehalep@ece.upatras.gr
   Kentaro Ogawa
   NTT Corporation
   Tokyo,
   Japan
   Email: ogawa.kentaro@lab.ntt.co.jp
   Fenggen Jia
   National Digital Switching Center(NDSC)
   Jianxue Road
   Zhengzhou,   452000
   P.R.China
   Phone: +86-571-28877751
   Email: jfg@mail.ndsc.com.cn,fgjia@mail.zjgsu.edu.cn
   Halpern Joel
   Ericsson
   P.O. Box 6049
   Leesburg,   20178
   VA
   Phone: +1 703 371 3043
   Email: jhalpern@redback.com
Wang, et al.            Expires December 31, 2009             [Page 118]