[Docs] [txt|pdf] [Tracker] [Email] [Diff1] [Diff2] [Nits]

Versions: 00 01

     ForCES Working Group                                     Ligang Dong
     Internet-Draft                               Zhejiang Gongshang Univ.
     Expires: April 1, 2008                                     Fengen Jia
                                                                       NDSC
                                                               Weiming Wang
                                                 Zhejiang Gongshang Univ.
                                                              Oct.1, 2007
  
                         A Basic LFB Library for ForCES
  
                          draft-dong-forces-lfblib-01.txt
  
  
  
  Status of this Memo
  
     By submitting this Internet-Draft, each author represents that any
     applicable patent or other IPR claims of which he or she is aware
     have been or will be disclosed, and any of which he or she becomes
     aware will be disclosed, in accordance with Section 6 of 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.
  
  
  Conventions used in this document
  
     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].
  
  Abstract
  
     This document defines a set of basic ForCES FE LFBs by use of the
     XML schema defined in ForCES FE model.
  
  
  
  L.Dong et al.             Expires April 1, 2008               [Page 1]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
  Table of Contents
  
     1. Introduction................................................................2
        1.1. LFBs Taxonomy.........................................................3
     2. Definitions of Types......................................................4
        2.1. Frame Type............................................................4
        2.2. Data Type..............................................................5
        2.3. Metadata Type........................................................27
     3. LFB Definitions...........................................................31
        3.1. Port LFBs.............................................................31
           3.1.1. EtherPort LFB..................................................32
           3.1.2. EtherEncap LFB.................................................35
           3.1.3. EtherDecap LFB.................................................38
        3.2. IPv4 unicast forwarding LFBs.....................................39
           3.2.1. IPv4Validator LFB.............................................40
           3.2.2. IPv4UcastLPM LFB..............................................42
           3.2.3. IPv4NextHopApplicator LFB...................................44
           3.2.4. ARP LFB.........................................................46
           3.2.5. ICMPProc LFB...................................................47
           3.2.6. OptionProc LFB.................................................48
        3.3. IPv6 unicast forwarding LFBs.....................................49
           3.3.1. IPv6Validator LFB.............................................49
           3.3.2. IPv6UcastLPM LFB..............................................51
           3.3.3. IPv6UcastNexthopApplicator LFB.............................53
           3.3.4. IPv6AddrResolution LFB.......................................55
           3.3.5. ICMPv6Proc LFB.................................................56
           3.3.6. ExtendHeaderProc LFB.........................................57
        3.4. Queue manager & scheduler LFBs...................................58
           3.4.1. Scheduler LFB..................................................58
           3.4.2. Queue LFB.......................................................59
        3.5. LFBs for Multi-FE...................................................60
           3.5.1. InterFECommEncap LFB.........................................60
           3.5.2. InterFECommDecap LFB.........................................62
        3.6. Common Function LFBs...............................................63
           3.6.1. RedirectSink LFB..............................................63
           3.6.2. RedirectSource LFB............................................63
           3.6.3. MetaClassifier LFB............................................64
     4. Use Case....................................................................66
     5. IANA Considerations......................................................66
     6. References.................................................................66
     7. Author's Address..........................................................66
     Copyright Statement..........................................................67
  
   1. Introduction
  
     ForCES provides an architectural framework, in which a Network
     Element (NE) consists of Forwarding Elements (FEs) and Control
     Elements (CEs). FEs are further abstracted by a set of basic building
  
   L.Dong et al.             Expires April 1, 2007              [Page 2]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
     blocks, called Logical Function Blocks (LFBs). RFC 3654 has defined
     the ForCES requirements, and RFC 3746 has defined the ForCES
     framework. ForCES protocol [ForCES-PL] is defining the information
     exchange protocol between CEs and FEs. LFBs in FEs are controlled by
     a CE via ForCES protocol. ForCES FE model [FE-Model] specifies a
     formal way to model LFBs, in which an XML schema is provided for
     definition of LFB attributes, capabilities, and events.
  
     This document provides a set of basic LFBs by use of the XML schema
     defined in [FE-Model]. Section 2 defines the data types used in the
     following LFB description. Section 3 presents the definitions of a
     set of LFBs according the LFB XML schema.
  
      1.1.LFBs Taxonomy
  
     Only after enough LFBs are defined and implemented, ForCES
     architecture can be applied into network products. LFB Taxonomy is
     important, as it can help clarify what LFBs should be defined.
  
     How to design LFB taxonomy? First, a good taxonomy is understandable,
     so readers can easily judge what class a LFB should be classified
     into. Second, a good taxonomy is open, as no one can give a complete
     taxonomy of LFBs. We expect more classes can be added into the
     taxonomy.
  
     Following the above idea, we roughly classify LFBs mainly according
     to the usages of LFBs, not only functionality of LFBs. For example,
     we put IPv4 unicast forwarding LFBs together. In this document, we
     only introduce very basic LFBs and LFB taxonomy. By following this
     taxonomy, users can provide more LFBs and classes of LFBs.
  
     Till now, LFBs are classified into the following classes:
  
     1. Core LFBs, including FE Object LFB and FE Protocol LFB. These two
     LFBs are core LFBs for ForCES. It's required that each FE must
     implement these two LFBs for CE to control it.
  
     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, here we only give the definition of a specified media -
     Ethernet.
  
     3. IPv4 unicast forwarding LFBs, this kind of LFBs mainly model the
     IPv4 forwarding function, e.g., IPv4Validor LFB, IPv4UcastLPM LFB,
     IPv4NextHopApplicator LFB, ARP LFB, ICMPProc LFB, OptionProc LFB.
  
  
  
   L.Dong et al.             Expires April 1, 2007              [Page 3]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
     4. IPv6 unicast forwarding LFBs. This kind of LFB mainly models the
     IPv4 forwarding function, e.g., IPv6Validator LFB, IPv6UcastLPM LFB,
     ExtendHeaderProc LFB, IPv6NexthopApplicator LFB,IPv6AddrResolutionLFB
     LFB, ICMPv6Proc LFB.
  
     5. Queue manager & scheduler LFBs. This kind of LFB models the queue
     and scheduler. A basic queue LFB and scheduler LFB are defined.
     Queues and scheduler can be cascaded together to build more
     complicated schedulers. The following LFBs need to be defined: Queue
     LFB, GeneralScheduler LFB, PQScheduler LFB, WRRScheduler LFB.
  
     6. Multicast LFBs, e.g., PIM-SM LFB, General Multicast Forwarder LFB.
     The LFBs modeling protocol-specific multicast in a forwarder come
     into this class.
  
     7. Firewall/Gateway/VPN LFBs, e.g., NAT LFB. [TBD]
  
     8. QoS LFBs, The LFBs modeling the different aspect of QoS functions
     such as InterServ and DiffServ come into this class, e.g.,
     DSCPClassifier LFB, Policer/Dropper LFB, Meter LFB, Marker LFB,
     Shaper LFB. This kind may be classified into more sub-classes.
  
     9. LFBs for Multi-FE. This kind of LFB models the communications
     between FEs in the NE. It mainly defines how the metadata are
     transferred between two communicating FEs. For the moment, two LFB
     are defined in this class, i.e., InterFECommEncap LFB,
     InterFECommDecap LFB.
  
     10. Common function LFBs. This kind of LFB captures the common
     functionality broadly used in FEs. For the moment, the following LFBs
     are classified into this class, e.g., RedirectSink LFB,
     RedirectSource LFB, MetaClassifier LFB, GeneralClassifier LFB.
  
     [Editor: Here we only capture some very limit kinds of LFBs,
     furthermore, the LFBs in each class are awlfully not completed. Far
     more work is still need to make them perfect, and we are open-minded
     to all aspect of advices. Meanwhile the LFB definitions in this
     document will be improved toward vendor-neutral, logical direction.]
  
   2. Definitions of Types
  
     This section provides a set of LFB frame, data type, and metadata
     definitions for use by all LFB Class definitions in this document.
  
      2.1. Frame Type
  
     <frameDefs>
          <frameDef>
                  <name>EthernetII</name>
  
   L.Dong et al.             Expires April 1, 2007              [Page 4]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                  <synopsis>an Ethernet II frame type</synopsis>
          </frameDef>
          <frameDef>
                  <name>Ethernet802.3</name>
                  <synopsis>An Ethernet 802.3 frame type</synopsis>
          </frameDef>
          <frameDef>
                  <name>Ethernet802.2</name>
                  <synopsis>An Ethernet 802.2 frame type</synopsis>
          </frameDef>
          <frameDef>
                  <name>Ethernet802.2SNAP</name>
                  <synopsis>An Ethernet 802.2 with SNAP frame</synopsis>
          </frameDef>
          <frameDef>
                  <name>IPv4</name>
                  <synopsis>An IPv4 packet</synopsis>
          </frameDef>
          <frameDef>
                  <name>IPv6</name>
                  <synopsis>An IPv6 packet</synopsis>
          </frameDef>
          <frameDef>
                  <name>MetadataFrame</name>
                  <synopsis>Frame only contains metadata</synopsis>
          </frameDef>
          <frameDef>
                  <name>Arbitrary</name>
                  <synopsis>
                  Any kind of frame except Metadata Frame
                  </synopsis>
          </frameDef>
     </frameDefs>
  
      2.2. Data Type
  
     <dataTypeDefs>
          <dataTypeDef>
                  <name>IEEEMAC</name>
                  <synopsis>IEEE mac</synopsis>
                  <typeRef>byte[6]</typeRef>
          </dataTypeDef>
          <dataTypeDef>
                  <name>LANSpeedType</name>
                  <synopsis>LAN speed values</synopsis>
                  <atomic>
                          <baseType>uint32</baseType>
                          <specialValues>
                                  <specialValue value="0x00000001">
  
   L.Dong et al.             Expires April 1, 2007              [Page 5]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                          <name>LAN_speed_10M</name>
                                          <synopsis>
                                                  10M Ethernet
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000002">
                                          <name>LAN_speed_100M</name>
                                          <synopsis>
                                                  100M Ethernet
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000003">
                                          <name>LAN_speed_1G</name>
                                          <synopsis>
                                                  1000M Ethernet
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000004">
                                          <name>LAN_speed_10G</name>
                                          <synopsis>
                                                  10G Ethernet
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000005">
                                          <name>LAN_speed_Auto</name>
                                          <synopsis>
                                                  LAN speed Auto
                                          </synopsis>
                                  </specialValue>
                          </specialValues>
                  </atomic>
          </dataTypeDef>
          <dataTypeDef>
                  <name>NegotiationType</name>
                  <synopsis>Negotiation types</synopsis>
                  <atomic>
                          <baseType>uint32</baseType>
                          <specialValues>
                                  <specialValue value="0x00000001">
                                          <name>Auto</name>
                                          <synopsis>
                                                  Auto negotiation
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000002">
                                          <name>Half-duplex</name>
                                          <synopsis>
                                          Port negotiation half duplex
                                          </synopsis>
  
   L.Dong et al.             Expires April 1, 2007              [Page 6]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                  </specialValue>
                                  <specialValue value="0x00000003">
                                          <name>Full-duplex</name>
                                          <synopsis>
                                          Port negotiation full duplex
                                          </synopsis>
                                  </specialValue>
                          </specialValues>
                  </atomic>
          </dataTypeDef>
          <dataTypeDef>
                  <name>PortStatsType</name>
                  <synopsis>port statistics</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>InUcastPkts</name>
                                  <synopsis>
                                  Number of unicast packets received
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>InMulticastPkts</name>
                                  <synopsis>
                                  Number of multicast packets received
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="3">
                                  <name>InBroadcastPkts</name>
                                  <synopsis>
                                  Number of broadcast packets received
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="4">
                                  <name>InOctets</name>
                                  <synopsis>
                                  number of octets received
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="5">
                                  <name>OutUcastPkts</name>
                                  <synopsis>
                                  Number of unicast packets transmitted
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
  
   L.Dong et al.             Expires April 1, 2007              [Page 7]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          <element elementID="6">
                                  <name>OutMulticastPkts</name>
                                  <synopsis>
                                  Number of multicast packets transmitted
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="7">
                                  <name>OutBroadcastPkts</name>
                                  <synopsis>
                                  Number of broadcast packets transmitted
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="8">
                                  <name>OutOcetes</name>
                                  <synopsis>
                                  Number of octets transmitted
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="9">
                                  <name>InErrorPkts</name>
                                  <synopsis>
                                  Number of input error packets
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="10">
                                  <name>OutErrorPkts</name>
                                  <synopsis>
                                  Number of output error packets
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name>PortStatusValues</name>
                  <synopsis>
               The possible values of status.  Used for both
               administrative and operation status
                  </synopsis>
                  <atomic>
                          <baseType>uchar</baseType>
                          <specialValues>
                                  <specialValue value="0">
                                          <name>Disabled </name>
                                          <synopsis>
  
   L.Dong et al.             Expires April 1, 2007              [Page 8]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                  The port is operatively disabled.
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="1">
                                          <name>UP</name>
                                          <synopsis>
                                          The port is up.
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="2">
                                          <name>Down</name>
                                          <synopsis>
                                          The port is down.
                                          </synopsis>
                                  </specialValue>
                          </specialValues>
                  </atomic>
          </dataTypeDef>
          <dataTypeDef>
                  <name>IPAddr</name>
                  <synopsis>IPv4 address</synopsis>
                  <typeRef>uint32</typeRef>
          </dataTypeDef>
          <dataTypeDef>
                  <name>MacFilterTableEntryType</name>
                  <synopsis>MAC filter table entry</synopsis>
                  <typeRef>IEEEMAC</typeRef>
          </dataTypeDef>
          <dataTypeDef>
                  <name>LocalIpAddrType</name>
                  <synopsis>
                  The device local IP address information
                  </synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>FEID</name>
                                  <synopsis>
                                  The FE on which the port ip resides
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>IfIndex</name>
                                  <synopsis>
                                  port index on the specified FE
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="3">
  
   L.Dong et al.             Expires April 1, 2007              [Page 9]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                  <name>IPaddr</name>
                                  <synopsis>
                                  IP address of the port
                                  </synopsis>
                                  <typeRef>IPAddr</typeRef>
                          </element>
                          <element elementID="4">
                                  <name>netmask</name>
                                  <synopsis>
                                  Netmask of this ip address
                                  </synopsis>
                                  <typeRef>IPAddr</typeRef>
                          </element>
                          <element elementID="5">
                                  <name>BcastAddr</name>
                                  <synopsis>
     The associated Broadcast address of the ip address
                                  </synopsis>
                                  <typeRef>IPAddr</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name>LocalIpv6AddrType</name>
                  <synopsis>The device local IPv6 address
     infomation</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>FEID</name>
                                  <synopsis>
                                  The FE on which the port ip resides
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>IfIndex</name>
                                  <synopsis>
                                  Port index on the specified FE
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="3">
                                  <name>IPv6addr</name>
                                  <synopsis>
                                  IP address of the port
                                  </synopsis>
                                  <typeRef>IPv6Addr</typeRef>
                          </element>
                          <element elementID="4">
  
  L.Dong et al.             Expires April 1, 2007              [Page 10]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                  <name>prefixlen</name>
                                  <synopsis>
                                  Prefix length of this ip address
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name>IPv4Addr</name>
                  <synopsis>IPv4 address</synopsis>
                  <typeRef> uint32</typeRef>
          </dataTypeDef>
          <dataTypeDef>
                  <name>IPv6Addr</name>
                  <synopsis>IPv6 address</synopsis>
                  <typeRef>byte[16]</typeRef>
          </dataTypeDef>
          <dataTypeDef>
                  <name>IPv4Prefix</name>
                  <synopsis>
                  IPv4 prefix defined by an address and a prefix length
                  </synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>address</name>
                                  <synopsis>Address part</synopsis>
                                  <typeRef>IPv4addr</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>prefixlen</name>
                                  <synopsis>Prefix length part</synopsis>
                                  <atomic>
                                          <baseType>uchar</baseType>
                                          <rangeRestriction>
                                                  <allowedRange min="0"
     max="32"/>
                                          </rangeRestriction>
                                  </atomic>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name>LFBStatusValues</name>
                  <synopsis>The possible values of LFB status</synopsis>
                  <atomic>
                          <baseType>uchar</baseType>
                          <specialValues>
                                  <specialValue value="1">
  
  L.Dong et al.             Expires April 1, 2007              [Page 11]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                          <name>OperDisable</name>
                                          <synopsis>The LFB is removed
     from the FE data processing path, not process packets</synopsis>
                                  </specialValue>
                                  <specialValue value="2">
                                          <name> OperEnable </name>
                                          <synopsis>The LFB is operable
     and on the FE data processing path</synopsis>
                                  </specialValue>
                          </specialValues>
                  </atomic>
          </dataTypeDef>
          <dataTypeDef>
                  <name> IPv4NextHopInfoType </name>
                  <synopsis>
     IPv4 nexthop information, include nexthop ip address, output FE and
     interface etc.
                  </synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>FEID</name>
                                  <synopsis>Output FE ID</synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>OutputPortID</name>
                                  <synopsis>output port index</synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="3">
                                  <name>MTU</name>
                                  <synopsis>
     The maximum transmission unit of the nexthop link.
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="4">
                                  <name> Flags </name>
                                  <synopsis>
     Associated flags of the nexthop, such as local delivery, multicast
     etc.
                                  </synopsis>
                                  <typeRef>NextHopFlagsType</typeRef>
                          </element>
                          <element elementID="5">
                                  <name> NexthopIPaddr </name>
                                  <synopsis>
                                  IP address of the nexthop
                                  </synopsis>
  
  L.Dong et al.             Expires April 1, 2007              [Page 12]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                  <typeRef>IPv4Addr</typeRef>
                          </element>
                          <element elementID="6">
                                  <name> L2Index </name>
                                  <synopsis>Index into the L2 link layer
     table, such as IPv4 ARP table or IPv6 NBR table.</synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="7">
                                  <name> EncapNeeded </name>
                                  <synopsis>
     The type of encapsulation needed on the packet.
                                  </synopsis>
                                  <typeRef>EncapType</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name>IPv4PrefixTableEntry</name>
                  <synopsis>IPv4 prefix table entry</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name> Prefix </name>
                                  <synopsis>IPv4 address prefix</synopsis>
                                  <typeRef> IPv4Prefix </typeRef>
                          </element>
                          <element elementID="2">
                                  <name> NexthopID </name>
                                  <synopsis>
                                  Index into the nexthop table
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name> IPv4UcastLPMStatisticsType </name>
                  <synopsis>Statistics of IPv4UcastLPM LFB</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name> InRcvdPkts </name>
                                  <synopsis>
     The total number of input packets received from interfaces,
     including those received in error
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="2">
                                  <name> FwdPkts </name>
  
  L.Dong et al.             Expires April 1, 2007              [Page 13]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                  <synopsis>
                                  IPv4 packet forwarded by this LFB
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="3">
                                  <name> NoRoutePkts </name>
                                  <synopsis>
                          The number of IP datagrams discarded because no
                          route could be found to transmit them to their
                          destination.
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="4">
                                  <name>InDeliverPkts</name>
                                  <synopsis>
                          The total number of input datagrams successfully
                          delivered to IP user-protocols (including ICMP).
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name> IPv4ValidatorStatisticsType </name>
                  <synopsis>IPv4 validator LFB statistics type</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name> badHeaderPkts </name>
                                  <synopsis>
                  The total number of input datagrams with bad ip header
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="2">
                                  <name> badTotalLengthPkts </name>
                                  <synopsis>
     The total number of input datagrams with bad length
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="3">
                                  <name> badTTLPkts </name>
                                  <synopsis>
     The total number of input datagrams with bad TTL
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
  
  L.Dong et al.             Expires April 1, 2007              [Page 14]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          <element elementID="4">
                                  <name> badChecksum</name>
                                  <synopsis>
     The total number of input datagrams with bad checksum
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name>IPv6Prefix</name>
                  <synopsis>IPv6 prefix</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>IPv6addr</name>
                                  <synopsis>
                                  Address part of the prefix
                                  </synopsis>
                                  <typeRef>IPv6Addr</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>prefixlen</name>
                                  <synopsis>
                                  Length of the prefix
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name> IPv6NextHopInfoType </name>
                  <synopsis>IPv4 nexthop information, include nexthop ip
     address, output FE and interface etc.</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>FEID</name>
                                  <synopsis>Output FE ID</synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>OutputPortID</name>
                                  <synopsis>output port index</synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="3">
                                  <name>MTU</name>
                                  <synopsis>
                  The maximum transmission unit of the nexthop link
                                  </synopsis>
  
  L.Dong et al.             Expires April 1, 2007              [Page 15]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="4">
                                  <name> Flags </name>
                                  <synopsis>
     Associated flags of the nexthop, such as local delivery, multicast
     etc
                                  </synopsis>
                                  <typeRef>NextHopFlagsType</typeRef>
                          </element>
                          <element elementID="5">
                                  <name> NexthopIPv6addr </name>
                                  <synopsis>
                                  IP address of the nexthop
                                  </synopsis>
                                  <typeRef>IPv6Addr</typeRef>
                          </element>
                          <element elementID="6">
                                  <name> L2Index </name>
                                  <synopsis>
                                  Index into the L2 table
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="7">
                                  <name> EncapNeeded </name>
                                  <synopsis>
                          The type of encapsulation needed on the packet.
                                  </synopsis>
                                  <typeRef>EncapType</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name>IPv6PrefixTableEntry</name>
                  <synopsis>IPv6 prefix table entry</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name> Prefix </name>
                                  <synopsis>IPv6 address prefix</synopsis>
                                  <typeRef> IPv6Prefix </typeRef>
                          </element>
                          <element elementID="2">
                                  <name> NexthopID </name>
                                  <synopsis>
                                  Index to the nexthop table
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
  
  L.Dong et al.             Expires April 1, 2007              [Page 16]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name> IPv6LPMClassiferStatisticsType </name>
                  <synopsis>statistics of IPv6LPMClassifier LFB</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name> InRcvdPkts </name>
                                  <synopsis>
     The total number of input packets received from interfaces,
     including those received in error.
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="2">
                                  <name> FwdPkts </name>
                                  <synopsis>
                                  IPv4 packet forwarded by this LFB
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="3">
                                  <name> NoRoutePkts </name>
                                  <synopsis>
     The number of IP datagrams discarded because no route could be found
     to transmit them to their destination.
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="4">
                                  <name>InDeliverPkts</name>
                                  <synopsis>
                  The total number of input datagrams successfully
                  delivered to IP user-protocols (including ICMP).
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name> IPv6ValidatorStatisticsType </name>
                  <synopsis>IPv6 validator LFB statistics type</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name> badHeaderPkts </name>
                                  <synopsis>
     The total number of input datagrams with bad ip header
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
  
  L.Dong et al.             Expires April 1, 2007              [Page 17]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          </element>
                          <element elementID="2">
                                  <name> badTotalLengthPkts </name>
                                  <synopsis>
     The total number of input datagrams with bad length
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="3">
                                  <name> badTTLPkts </name>
                                  <synopsis>
     The total number of input datagrams with bad TTL
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                          <element elementID="4">
                                  <name> badChecksum</name>
                                  <synopsis>
     The total number of input datagrams with bad checksum
                                  </synopsis>
                                  <typeRef>uint64</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name> NextHopFlagsType </name>
                  <synopsis>Flags used to define different nexthop
     behaviors</synopsis>
                  <atomic>
                          <baseType>uint32</baseType>
                          <specialValues>
                                  <specialValue value="0x00000001">
                                          <name>local</name>
                                          <synopsis>
     Packets matching the nexthop entry with this flag are delivered to
     the higher level protocols.
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000002">
                                          <name>drop</name>
                                          <synopsis>
     Packets that match the nexthop entry with this flag are to be
     dropped.
                                  </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000004">
                                          <name>broadcast</name>
                                          <synopsis>
     The route associated with this nexthop is a broadcast.
  
  L.Dong et al.             Expires April 1, 2007              [Page 18]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000008">
                                          <name>multicast</name>
                                          <synopsis>
     The route associated with this nexthop is multicast.
                                          </synopsis>
                                  </specialValue>
                          </specialValues>
                  </atomic>
          </dataTypeDef>
          <dataTypeDef>
                  <name>WeightTableEntryType</name>
                  <synopsis>Weight table for queues</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>QueueID</name>
                                  <synopsis>Queue ID</synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>weight</name>
                                  <synopsis>
                                  Weight of the queue
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name>NbrState</name>
                  <synopsis>IPv6 neighbor entry resolution
     state</synopsis>
                  <atomic>
                          <baseType>uchar</baseType>
                          <specialValues>
                                  <specialValue value="0x01">
                                          <name>INCOMPLETE </name>
                                          <synopsis>
     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.
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x02">
                                          <name>REACHABLE</name>
                                          <synopsis>
  
  
  L.Dong et al.             Expires April 1, 2007              [Page 19]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
     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.
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x03">
                                          <name>STALE</name>
                                          <synopsis>
     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 solicited 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.
                                  </synopsis>
                                  </specialValue>
                                  <specialValue value="0x04">
                                          <name>DELAY</name>
                                          <synopsis>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.
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x05">
                                          <name>PROBE</name>
                                          <synopsis>
     A reachability confirmation is actively sought by retransmitting
     Neighbor Solicitations every RetransTimer milliseconds until a
     reachability confirmation is received.
                                          </synopsis>
                                  </specialValue>
                          </specialValues>
                  </atomic>
          </dataTypeDef>
          <dataTypeDef>
                  <name>ArpTableEntryType</name>
                  <synopsis>Arp entry</synopsis>
                  <struct>
                          <element elementID="1">
  
  L.Dong et al.             Expires April 1, 2007              [Page 20]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                  <name>Index</name>
                                  <synopsis>
                                  Index of the arp table
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>NeighborIP</name>
                                  <synopsis>
                          IP address of the neighbour
                                  </synopsis>
                                  <typeRef>IPv4Addr</typeRef>
                          </element>
                          <element elementID="3">
                                  <name>SrcMac</name>
                                  <synopsis>Source MAC</synopsis>
                                  <typeRef>IEEEMAC</typeRef>
                          </element>
                          <element elementID="4">
                                  <name>NeighborMac</name>
                                  <synopsis>Mac of the Neighbor</synopsis>
                                  <typeRef>IEEEMAC</typeRef>
                          </element>
                          <element elementID="5">
                                  <name>State</name>
                                  <synopsis>
                          The state of the address resolution progress
                                  </synopsis>
                                  <typeRef>ArpStateType</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name>NbrTableEntryType</name>
                  <synopsis>IPv6 neighbor table entry</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>Index</name>
                                  <synopsis>
                                  Index of the arp table
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>NeighborIPv6</name>
                                  <synopsis>
                                  IP address of the neighbor
                                  </synopsis>
                                  <typeRef>IPv6Addr</typeRef>
  
  L.Dong et al.             Expires April 1, 2007              [Page 21]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          </element>
                          <element elementID="3">
                                  <name>SrcMac</name>
                                  <synopsis>Source MAC</synopsis>
                                  <typeRef>IEEEMAC</typeRef>
                          </element>
                          <element elementID="4">
                                  <name>NeighborMac</name>
                                  <synopsis>
                                  Mac of the Neighbor
                                  </synopsis>
                                  <typeRef>IEEEMAC</typeRef>
                          </element>
                          <element elementID="5">
                                  <name>State</name>
                                  <synopsis>
                          The state of the entry's resolution progress
                                  </synopsis>
                                  <typeRef>NbrState</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name>DCHostTableEntryTypev4</name>
                  <synopsis>
                  Directly connected arp table entry for IPv4
                  </synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>NeighbourIP</name>
                                  <synopsis>
                                  IP address of the neighbor
                                  </synopsis>
                                  <typeRef>IPv4Addr</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>SrcMac</name>
                                  <synopsis>Source MAC</synopsis>
                                  <typeRef>IEEEMAC</typeRef>
                          </element>
                          <element elementID="3">
                                  <name>NeighborMac</name>
                                  <synopsis>
                                  Mac of the Neighbor
                                  </synopsis>
                                  <typeRef>IEEEMAC</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
  
  L.Dong et al.             Expires April 1, 2007              [Page 22]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
          <dataTypeDef>
                  <name>DCHostTableEntryTypev6</name>
                  <synopsis>Direct connected arp table entry for IPv4.
     </synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>NeighbourIPv6</name>
                                  <synopsis>
                                  IP address of the neighbor
                                  </synopsis>
                                  <typeRef>IPv4Addr</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>SrcMac</name>
                                  <synopsis>Source MAC</synopsis>
                                  <typeRef>IEEEMAC</typeRef>
                          </element>
                          <element elementID="3">
                                  <name>NeighborMac</name>
                                  <synopsis>
                                  Mac of the Neighbor
                                  </synopsis>
                                  <typeRef>IEEEMAC</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
  
          <dataTypeDef>
                  <name>PacketType</name>
                  <synopsis>The packet type code</synopsis>
                  <atomic>
                          <baseType>uchar</baseType>
                          <specialValues>
                                  <specialValue value="1">
                                          <name>IPv4Ucast</name>
                                          <synopsis>
                                          IPv4 unicast packet
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="2">
                                          <name>IPv4Mcast</name>
                                          <synopsis>
                                          IPv4 multicast packet
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="3">
                                          <name>IPv6Ucast</name>
                                          <synopsis>
                                          IPv6 unicast packet
  
  L.Dong et al.             Expires April 1, 2007              [Page 23]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="4">
                                          <name>IPv6Mcast</name>
                                          <synopsis>
                                          IPv6 multicast packet
                                          </synopsis>
                                  </specialValue>
                          </specialValues>
                  </atomic>
  
          </dataTypeDef>
          <dataTypeDef>
                  <name>DispatchTableType</name>
                  <synopsis>The dispatch table type</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>PacketType</name>
                                  <synopsis>
     The type of the packe, e.g., IPv4Uncast, IPv6Ucast, IPv4Mulcast,
     IPv6Mulcast, etc.
                                  </synopsis>
                                  <typeRef>PacketType</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>index</name>
                                  <synopsis>
     The index of the output group to output the packets.
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name>MetaType</name>
                  <synopsis>Metadata type definition</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>MetadataID</name>
                                  <synopsis>
     The ID of the metadata. The value is standarized in the
     corresponding LFB definition RFCs.
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>MetadataName</name>
                                  <synopsis>
                                  The name of the metadata
  
  L.Dong et al.             Expires April 1, 2007              [Page 24]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                  </synopsis>
                                  <typeRef>String</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name>MetadataClassyTableType</name>
                  <synopsis>The metadata classifying table</synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>value</name>
                                  <synopsis>
                                  Value of the metadata
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>index</name>
                                  <synopsis>
     The index of the port in the output group to use for outputing the
     packets
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                  </struct>
          </dataTypeDef>
          <dataTypeDef>
                  <name>InterFECommMsgsType</name>
                  <synopsis>
                  Inter FE communication messageds type
                  </synopsis>
                  <struct>
                          <element elementID="1">
                                  <name>FEID</name>
                                  <synopsis>
                                  The FEID this message format relates
                                  </synopsis>
                                  <typeRef>uint32</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>MessageFormat</name>
                                  <synopsis>
                                  The inter FE message format
                                  </synopsis>
                                  <array>
                                          <typeRef>MetadatasType</typeRef>
                                  </array>
                          </element>
                  </struct>
  
  L.Dong et al.             Expires April 1, 2007              [Page 25]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
          </dataTypeDef>
          <dataTypeDef>
                  <name>EncapType</name>
                  <synopsis>Encapsulation type</synopsis>
                  <atomic>
                          <baseType>uchar</baseType>
                          <specialValues>
                                  <specialValue value="1">
                                          <name>Link</name>
                                          <synopsis>
     Link layer encapsulation such as Ethernet and PPP
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="2">
                                          <name>InterFE</name>
                                          <synopsis>
                                          Inter FE communication
                                  encapsulation
                                          </synopsis>
                                  </specialValue>
                                  <specialValue>
                                          <name>Tunnel</name>
                                          <synopsis>
                          Tunnel encapsulation such as IP-in-IP
                                          </synopsis>
                                  </specialValue>
                          </specialValues>
                  </atomic>
          </dataTypeDef>
          <dataTypeDef>
                  <name>IPAddress</name>
                  <synopsis>IP layer address</synopsis>
                  <union>
                          <element elementID="1">
                                  <name>Ipv4</name>
                                  <synopsis>IPv4 address</synopsis>
                                  <typeRef>IPv4Addr</typeRef>
                          </element>
                          <element elementID="2">
                                  <name>Ipv6</name>
                                  <synopsis>IPv6 address</synopsis>
                                  <typeRef>IPv6Addr</typeRef>
                          </element>
                  </union>
          </dataTypeDef>
          <dataTypeDef>
                  <name>ArpStateType</name>
                  <synopsis>The arp entry state</synopsis>
                  <atomic>
  
  L.Dong et al.             Expires April 1, 2007              [Page 26]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          <baseType>uchar</baseType>
                          <specialValues>
                                  <specialValue value="1">
                                          <name>Manual</name>
                                          <synopsis>
                                          The entry is manually set.
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="2">
                                          <name>InSolicit</name>
                                          <synopsis>
                     The peer's level 2 address is still in requesting.
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="4">
                                          <name>Vaild</name>
                                          <synopsis>
     The address resolution has been completed successfully, it now can
     be used in the data packets forwarding.
                                          </synopsis>
                                  </specialValue>
                          </specialValues>
                  </atomic>
          </dataTypeDef>
     </dataTypeDefs>
  
      2.3. Metadata Type
  
     <metadataDefs>
          <metadataDef>
                  <name>NextHopID</name>
                  <synopsis>
     An index into a Next Hop entry in Nexthop table
                  </synopsis>
                  <metadataID>1</metadataID>
                  <typeRef>int32</typeRef>
          </metadataDef>
          <metadataDef>
                  <name>ExceptionID</name>
                  <synopsis>Exception Types</synopsis>
                  <metadataID>2</metadataID>
                  <atomic>
                          <baseType>uint32</baseType>
                          <specialValues>
                                  <specialValue value="0x00000001">
                                          <name>Options</name>
                                          <synopsis>
     Packets with options, for IPv6 Packet with next-header set to hop-
     by-hop header(0)
  
  L.Dong et al.             Expires April 1, 2007              [Page 27]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000002">
                                          <name>LengthMismatch</name>
                                          <synopsis>
     The packet length reported by link layer is less than the total
     length field.
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000003">
                                          <name> BadTTL </name>
                                          <synopsis>
     The packet can't be forwarded as the TTL has expired.
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000004">
                                          <name> Multicast </name>
                                          <synopsis>
     The packet received is a multicast packet.
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000005">
                                          <name>FragRequired</name>
                                          <synopsis>
     The MTU for outgoing interface is less than the packet size.
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000006">
                                          <name>Redirect</name>
                                          <synopsis>
     The outgoing port is same as the one on which the packet is received.
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000007">
                                          <name>LocalDelivery</name>
                                          <synopsis>
     The packet is for a local interface
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="0x00000008">
                                          <name>LimitedBroadcast</name>
                                          <synopsis>
     The packet received as limited broadcast
                                          </synopsis>
                                  </specialValue>
                          </specialValues>
                  </atomic>
          </metadataDef>
          <metadataDef>
  
  L.Dong et al.             Expires April 1, 2007              [Page 28]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                  <name>InputPortID</name>
                  <synopsis>
                  At which interface the packet arrive
                  </synopsis>
                  <metadataID>3</metadataID>
                  <typeRef> uint32</typeRef>
          </metadataDef>
          <metadataDef>
                  <name>OutputPortID</name>
                  <synopsis>
     The interface out which the packet will be emitted
                  </synopsis>
                  <metadataID>4</metadataID>
                  <typeRef> uint32</typeRef>
          </metadataDef>
          <metadataDef>
                  <name> NextHopIP </name>
                  <synopsis>Nexthop IPv4 address</synopsis>
                  <metadataID>5</metadataID>
                  <typeRef> IP4Addr </typeRef>
          </metadataDef>
          <metadataDef>
                  <name> L2Type </name>
                  <synopsis>
     Level 2 table type, which can be a true link layer table or others
                  </synopsis>
                  <metadataID>5</metadataID>
                  <typeRef> uint32 </typeRef>
          </metadataDef>
          <metadataDef>
                  <name>NexthopIPv6</name>
                  <synopsis>Nexthop IPv6 address</synopsis>
                  <metadataID>6</metadataID>
                  <typeRef>IPv6Addr</typeRef>
          </metadataDef>
          <metadataDef>
                  <name>PacketLength</name>
                  <synopsis>The length of the packet in octets</synopsis>
                  <metadataID>7</metadataID>
                  <typeRef>uint32</typeRef>
          </metadataDef>
          <metadataDef>
                  <name> PacketType </name>
                  <synopsis>Type of the packet</synopsis>
                  <metadataID>8</metadataID>
                  <atomic>
                          <baseType>uint32</baseType>
                          <specialValues>
                                  <specialValue value="0x8000">
  
  L.Dong et al.             Expires April 1, 2007              [Page 29]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                          <name> IPv4 </name>
                                          <synopsis>IPv4 packet</synopsis>
                                  </specialValue>
                                  <specialValue value="0x86DD">
                                          <name> IPv6 </name>
                                          <synopsis>IPv6 packet</synopsis>
                                  </specialValue>
                                  <specialValue value="3">
                                          <name> TaggedFrame </name>
                                          <synopsis>
                                          Packet with metadata
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="4">
                                          <name> MetaDataFrame </name>
                                          <synopsis>metadata
     only</synopsis>
                                  </specialValue>
                          </specialValues>
                  </atomic>
          </metadataDef>
          <metadataDef>
                  <name> QueueID </name>
                  <synopsis>The queue ID</synopsis>
                  <metadataID>9</metadataID>
                  <typeRef> uint32</typeRef>
          </metadataDef>
          <metadataDef>
                  <name>QueueOperationCmd</name>
                  <synopsis>
     The type of operation on the queue, there are two types defined here:
     enqueue and dequeue.
                  </synopsis>
                  <metadataID>10</metadataID>
                  <atomic>
                          <baseType>uchar</baseType>
                          <specialValues>
                                  <specialValue value="1">
                                          <name>Enqueue</name>
                                          <synopsis>
                                          Enqueue command
                                          </synopsis>
                                  </specialValue>
                                  <specialValue value="2">
                                          <name>Dequeue</name>
                                          <synopsis>
                                          Dequeue command
                                          </synopsis>
                                  </specialValue>
  
  L.Dong et al.             Expires April 1, 2007              [Page 30]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          </specialValues>
                  </atomic>
          </metadataDef>
          <metadataDef>
                  <name>SrcBladeID</name>
                  <synopsis>Source blade ID</synopsis>
                  <metadataID>11</metadataID>
                  <typeRef>uchar</typeRef>
          </metadataDef>
          <metadataDef>
                  <name>DstBladeID</name>
                  <synopsis>Destination blade ID</synopsis>
                  <metadataID>12</metadataID>
                  <typeRef>uchar</typeRef>
          </metadataDef>
          <metadataDef>
                  <name>NexthopIndex</name>
                  <synopsis>
     Nexthop index into the link layer address resolution table
                  </synopsis>
                  <metadataID>13</metadataID>
                  <typeRef>uint</typeRef>
          </metadataDef>
          <metadataDef>
                  <name>EncapMethod</name>
                  <synopsis>
     What 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 transmitting to other FEs; tunnel
     encapsulation which means the packet need do extra tunnel
     encapsulation before sending out to media.
                  </synopsis>
                  <metadataID>14</metadataID>
                  <typeRef>EncapType</typeRef>
          </metadataDef>
     </metadataDefs>
  
   3. LFB Definitions
  
     The LFB is only logical representation of a specified FE function,
     it has nothing to do with how the LFB is implemented. Therefore, we
     should define the LFBs in vendor-neutral way.
  
      3.1. Port LFBs
  
     This document only define LFB for Ethernet ports, other types of
     port LFBs will be added.
  
  L.Dong et al.             Expires April 1, 2007              [Page 31]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
  
       3.1.1. EtherPort LFB
  
     <LFBClassDef LFBClassID="0x00011001">
          <name>EtherPort</name>
          <synopsis>LFB for Ethernet ports</synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>PacketsFromProcessingUnit</name>
                          <synopsis>
                 Ports for receiving packets from processing unit such as
     NP, which will be sent to media.
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>EthernetII</ref>
                                  </frameExpected>
                                  <metadataExpected>
                                          <ref>OutputPort</ref>
                                  </metadataExpected>
                          </expectation>
                  </inputPort>
                  <inputPort>
                          <name>PacketsFromMedia</name>
                          <synopsis>
                 Ports for receiving packets from Ethernet media.
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>EthernetII</ref>
                                  </frameExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort>
                          <name>PacketsToProcessingUnit</name>
                          <synopsis>
     Ports for sending packets to processing unit such as NP for further
     processing
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>EthernetII</ref>
                                  </frameProduced>
                                  <metadataProduced>
                                          <ref>InputPort</ref>
                                  </metadataProduced>
  
  L.Dong et al.             Expires April 1, 2007              [Page 32]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>PacketsToMedia</name>
                          <synopsis>Ports for sending packets to media
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>EthernetII</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name>IfIndex</name>
                          <synopsis>
     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.
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </attribute>
                  <attribute elementID="2">
                          <name>IfName</name>
                          <synopsis>Name of this port</synopsis>
                          <typeRef>string[16]</typeRef>
                  </attribute>
                  <attribute elementID="3">
                          <name>LinkSpeed</name>
                          <synopsis>Speed of this port</synopsis>
                          <typeRef>LANSpeedType</typeRef>
                  </attribute>
                  <attribute elementID="4">
                          <name>MTU</name>
                          <synopsis>Maximum transmission unit</synopsis>
                          <typeRef>uint32</typeRef>
                  </attribute>
                  <attribute elementID="5">
                          <name>OperaStatus</name>
                          <synopsis>Operate state of this port</synopsis>
                          <typeRef>PortStatusValues</typeRef>
                          <defaultValue>"down"</defaultValue>
                  </attribute>
                  <attribute elementID="6">
                          <name>AdminStatus</name>
                          <synopsis>
  
  L.Dong et al.             Expires April 1, 2007              [Page 33]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          Administrator's state of this port
                          </synopsis>
                          <typeRef>PortStatusValues</typeRef>
                          <defaultValue>"down"</defaultValue>
                  </attribute>
                  <attribute elementID="7">
                          <name>PromiscuousMode</name>
                          <synopsis>
                          Whether the interface is in promiscuous mode
                          </synopsis>
                          <typeRef>BooleanType</typeRef>
                          <defaultValue>"no"</defaultValue>
                  </attribute>
                  <attribute elementID="8">
                          <name>CarrierStatus</name>
                          <synopsis>
                          Whether the port is linked with a connector
                          </synopsis>
                          <typeRef>BooleanType</typeRef>
                          <defaultValue>"no"</defaultValue>
                  </attribute>
                  <attribute elementID="9">
                          <name>NegotiationState</name>
                          <synopsis>
     The port negotiation state, which must be one of the following
     values: auto, half-duplex, full-duplex
                          </synopsis>
                          <typeRef>NegotiationType</typeRef>
                          <defaultValue>"auto"</defaultValue>
                  </attribute>
                  <attribute elementID="10">
                          <name>SrcMACAddr</name>
                          <synopsis>Source MAC</synopsis>
                          <typeRef>IEEEMAC</typeRef>
                  </attribute>
                  <attribute elementID="11">
                          <name>MacAliasTable</name>
                          <synopsis>
     A series of MACs that the port can receive frame
                          </synopsis>
                          <array>
                                  <typeRef>IEEEMAC</typeRef>
                          </array>
                  </attribute>
                  <attribute elementID="12">
                          <name>StatsEnable</name>
                          <synopsis>
                          Whether enable the statistics in this LFB
                          </synopsis>
  
  L.Dong et al.             Expires April 1, 2007              [Page 34]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          <typeRef>BooleanType</typeRef>
                          <defaultValue>"no"</defaultValue>
                  </attribute>
                  <attribute elementID="13">
                          <name>PortStats</name>
                          <synopsis>port statistics</synopsis>
                          <typeRef>PortStatsType</typeRef>
                  </attribute>
                  <attribute elementID="14">
                          <name>IpAddr</name>
                          <synopsis>IP layer Address</synopsis>
                          <typeRef>IPAddress</typeRef>
                  </attribute>
          </attributes>
          <events baseID="100">
                  <event eventID="1">
                          <name>PortStatusChanged</name>
                          <synopsis>
                       Port status has changed since last time reporting
                          </synopsis>
                          <eventTarget>
                                  <eventField>OperaStatus</eventField>
                          </eventTarget>
                          <eventChanged/>
                          <eventReports>
                                  <eventReport>
                                          <eventField>
                                                  OperaStatus
                                          </eventField>
                                  </eventReport>
                          </eventReports>
                  </event>
          </events>
     </LFBClassDef>
  
       3.1.2. EtherEncap LFB
  
     <LFBClassDef LFBClassID="0x00011009">
          <name>EtherEncap</name>
          <synopsis>
     An LFB classifier definition for completes Ethernet encapsulation
     functions
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>EncapIn</name>
                          <synopsis>
     Port for receiving packets needed to build Ethernet encapsulation
  
  L.Dong et al.             Expires April 1, 2007              [Page 35]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv4</ref>
                                          <ref>IPv6</ref>
                                  </frameExpected>
                                  <metadataExpected>
                                          <ref>L2Index</ref>
                                          <ref>L2Type</ref>
                                  </metadataExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort>
                          <name>SuccessOut</name>
                          <synopsis/>
                          <product>
                                  <frameProduced>
                                          <ref>EthernetII</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
                  <outputPort group="yes">
                          <name>ExceptionOut</name>
                          <synopsis>
     Packet can't find the associated L2 information
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>IPv4</ref>
                                          <ref>IPv6</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name>ArpTable</name>
                          <synopsis>Ethernet arp table</synopsis>
                          <array>
                                  <typeRef>ArpTableEntryType</typeRef>
                          </array>
                  </attribute>
                  <attribute elementID="2">
                          <name>NbrTable</name>
                          <synopsis>IPv6 neighbor table</synopsis>
                          <array>
                                  <typeRef>NbrTableEntryType</typeRef>
  
  L.Dong et al.             Expires April 1, 2007              [Page 36]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          </array>
                  </attribute>
                  <attribute elementID="3">
                          <name>DCHostTablev4</name>
                          <synopsis>
     Direct connected host arp table for IPv4
                          </synopsis>
                          <array>
  
          <typeRef>DCHostTableEntryTypev4</typeRef>
                          </array>
                  </attribute>
                  <attribute elementID="4">
                          <name>DCHostTablev6</name>
                          <synopsis>
     Direct connected host arp table for IPv6
                          </synopsis>
                          <array>
  
          <typeRef>DCHostTableEntryTypev6</typeRef>
                          </array>
                  </attribute>
          </attributes>
          <capabilities>
                  <capability elementID="1">
                          <name>ArpTableLimit</name>
                          <synopsis>
     Max number of arp entries in arp table
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </capability>
                  <capability elementID="2">
                          <name>NbrTableLimit</name>
                          <synopsis>
     Max number of neighbors in neighbor table
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </capability>
                  <capability elementID="3">
                          <name>DCHostTablev4Limit</name>
                          <synopsis>
     The limit on Direct connected host table for IPv4
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </capability>
                  <capability elementID="4">
                          <name>DCHostTablev6Limit</name>
                          <synopsis>The limit on Direct connected host
     table for IPv6
  
  L.Dong et al.             Expires April 1, 2007              [Page 37]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </capability>
          </capabilities>
     </LFBClassDef>
  
  
       3.1.3. EtherDecap LFB
  
     <LFBClassDef LFBClassID="0x00011002">
          <name>EtherDecap</name>
          <synopsis>
     An LFB class for definition of Ethernet decapsulation and Ethernet
     filtering functions
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>PacketsIn</name>
                          <synopsis>Packets from other LFB</synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>EthernetII</ref>
                                  </frameExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort group="yes">
                          <name>DecapOut</name>
                          <synopsis>
     Ethernet decapsulation output
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>Arbitrary</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name>DispatchTable</name>
                          <synopsis>
     This table is used for selecting output in the ouput group for the
     incoming packet stream.
                          </synopsis>
                          <typeRef>DispatchTableType</typeRef>
                  </attribute>
  
  L.Dong et al.             Expires April 1, 2007              [Page 38]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
  
          </attributes>
     </LFBClassDef>
  
      3.2. IPv4 unicast forwarding LFBs
  
     The forwarding of IPv4 packets is logically composed of the
     following three stages:
  
     (1)  Validating stage: In this stage, the IP header is checked to
          make sure the packet is well-formed, that is to say without any
          header errors, no option is included, then the packet is ready
          to send to the next stage for processing, error packets are
          sent to CE or processed by some offloading LFBs in the FE.
  
     (2)  Forwarding stage: In this stage, destination IP address is
          extracted from the packet and used to consult the forwarding
          table, when it success, a block of routing information is
          produced such as nexthop IP address, output interface etc which
          will be used to send the packet to its next station to the
          destination. When the lookup operation fails, the packet is
          dropped or sent to CE for further processing. The important
          data in this stage is forwarding table, different
          implementations may have different organizations on forwarding
          table. In summary, there are two schemes: unified table model
          and discrete table model. Implementations that utilize the
          unified table model to represent IPv4 unicast forwarding
          information use a single data entity, which shall be
          subsequently referred to as a "FIB Table". This table is
          comprised of entries, each one consisting of a prefix and an
          array of next hop information. Implementations that utilize the
          discrete table model to represent IPv4 unicast forwarding
          information use two separate data entities, which shall be
          subsequently referred to as the "Prefix Table" and the "NextHop
          Table". The prefix table is comprised of entries, each one
          consisting of a prefix and a next hop identifier that uniquely
          indicates an entry in a next hop table. The next hop table is
          comprised of entries, each one consisting of a next hop
          identifier and an array of next hop information. As with the
          unified mode FIB table, the next hop array can contain one or
          more elements of next hop information. In order to forward a
          packet, each IP destination address specified in the prefix
          must have one or more next hops associated with it. In the
          discrete model, this association is provided by the next hop
          identifier,  which correlates a prefix table entry to an entry
          in the next hop table.
  
     (3)  Sending stage: the packet arrive this stage have got the
          correct routing information and after appending the correct
  
  L.Dong et al.             Expires April 1, 2007              [Page 39]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
          level 2 headers such as Ethernet header, the packet will be
          sent to media. The important data in this stage is IP-Level2
          address mapping table which is consulted by the packet to find
          the correct Level 2 address of the nexthop station.
  
     According to the above discussion on the forwarding stages of a
     unicast IPv4 packet, we can see that the forwarding table modeling is
     an important issue in the modeling of IPv4 unicast forwarding LFBs.
     The diverse table model provides several benefits in some system
     designs. For example, some classes of high-performance networking
     nodes (e.g. – BGP routers) require optimal FIB updates when a set of
     routes change. With a discrete model implementation, it may be
     possible to efficiently update forwarding information by altering a
     subset of next hop table entries. Whereas, in a unified model, it may
     be required that a larger set of FIB table entries be modified to
     accomplish the same forwarding information update. This document
     adopt the diverse forwarding table model in the modeling of IPv4
     unicast forwarding LFBs, the following LFBs are defined:
     IPv4Validator LFB, IPv4UcastLPM LFB, and IPv4NexthopApplicator LFB.
     The prefix table is maintained in IPv4UcastLPM LFB and the nexthop
     table is maintained in the IPv4NexthopApplicator LFB.
  
     Besides, the auxiliary LFBs such as ICMPGenerator, OptionProc and ARP
     are defined to complete the whole picture.
  
       3.2.1. IPv4Validator LFB
  
     <LFBClassDef LFBClassID="0x00011003">
          <name>IPv4Validator</name>
          <synopsis>
     An LFB Class definition for validates the IPv4 packets
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>ValidatePktsIn</name>
                          <synopsis>
     Port used to receive IPv4 packet for validation
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv4</ref>
                                  </frameExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort>
                          <name>SuccessOut</name>
  
  L.Dong et al.             Expires April 1, 2007              [Page 40]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          <synopsis>
     Out port for the packets passing the validation
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>IPv4</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>ExceptionOut</name>
                          <synopsis>
     Output port for the packets needed to be dealt by higher level
     protocol stacks. The following packets are identified as exception
     packets:
     1. Packet with header length>5;
     2. Packet with destination address equal to 255.255.255.255;
     3. Packet with expired TTL (checked after a forwarding decision is
     made);
     4 Packet length error.
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>ExceptionID</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>FailOutput</name>
                          <synopsis>
     Output for packets failed to pass the validation
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref> IPv4 </ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name>StatsEnable</name>
                          <synopsis>
     Whether to gather statistics in this LFB
                          </synopsis>
                          <typeRef>BooleanType</typeRef>
                          <defaultValue>"no"</defaultValue>
                  </attribute>
                  <attribute elementID="2">
  
  L.Dong et al.             Expires April 1, 2007              [Page 41]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          <name>IPv4ValidatorStats</name>
                          <synopsis>
     Ipv4 validator LFB statistics
                          </synopsis>
                          <typeRef>IPv4ValidatorStatisticsType</typeRef>
                  </attribute>
          </attributes>
          <description>
     Please refer to RFC1812 and RFC2644 for detailed validation process.
          </description>
     </LFBClassDef>
  
       3.2.2. IPv4UcastLPM LFB
  
     <LFBClassDef LFBClassID="0x00011004">
          <name>IPv4UcastLPM</name>
          <synopsis>IPv4 Longest Prefix Match Lookup LFB</synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>PktIn</name>
                          <synopsis>
     The port to receive IPv4 packets from other LFBs
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv4</ref>
                                  </frameExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort>
                          <name>SuccessOut</name>
                          <synopsis>
                          Successful output when all is fine
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>IPv4</ref>
                                  </frameProduced>
                                  <metadataProduced>
                                          <ref>NextHopID</ref>
                                  </metadataProduced>
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>ExceptionOut</name>
                          <synopsis>Exception output</synopsis>
  
  L.Dong et al.             Expires April 1, 2007              [Page 42]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          <product>
                                  <frameProduced>
                                          <ref>IPv4</ref>
                                  </frameProduced>
                                  <metadataProduced>
                                          <ref>InputPortID </ref>
                                          <ref>ExceptionID</ref>
                                  </metadataProduced>
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>FailOutput</name>
                          <synopsis>Drop output</synopsis>
                          <product>
                                  <frameProduced>
                                          <ref> IPv4 </ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name> PrefixTable </name>
                          <synopsis>IPv4 prefix table</synopsis>
                          <array type="variable-size">
                                  <typeRef>IPv4PrefixTableEntry</typeRef>
                                  <contentKey contentKeyID="1">
                                          <contentKeyField>
                                          IPv4PrefixTableEntry.prefix
                                          </contentKeyField>
                                  </contentKey>
                          </array>
                  </attribute>
                  <attribute elementID="2">
                          <name>LocalIpAddrTable</name>
                          <synopsis>
     The table of interfaces' ip address information on the local device
                          </synopsis>
                          <typeRef>LocalIpAddrType</typeRef>
                  </attribute>
                  <attribute elementID="3">
                          <name>StatsEnable</name>
                          <synopsis>
     Whether enable the statistics in this LFB
                          </synopsis>
                          <typeRef>BooleanType</typeRef>
                  </attribute>
                  <attribute elementID="4">
                          <name>IPv4Stats</name>
  
  L.Dong et al.             Expires April 1, 2007              [Page 43]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          <synopsis>
     The IPv4 associated statistics
                          </synopsis>
                          <typeRef> IPv4UcastLPMStatisticsType </typeRef>
                  </attribute>
          </attributes>
          <capabilities>
                  <capability elementID="1">
                          <name>PrefixTableLimit</name>
                          <synopsis>
                       Maximum number of prefix supported by this LFB
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </capability>
                  <capability elementID="2">
                          <name>LocalIpAddrTableLimit</name>
                          <synopsis>
          Maximum number of IP address entries supported by this LFB
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </capability>
          </capabilities>
          <description>
     This LFB represents the IPv4 longest prefix match lookup operation.
          </description>
     </LFBClassDef>
  
       3.2.3. IPv4NextHopApplicator LFB
  
     <LFBClassDef LFBClassID="0x00011005">
          <name> IPv4NextHopApplicator </name>
          <synopsis>An LFB definition for applying next hop action to IPv4
     packets</synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>PktIn</name>
                          <synopsis>Port used to receive IPv4 packets from
     other LFBs</synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref> IPv4 </ref>
                                  </frameExpected>
                                  <metadataExpected>
                                          <ref>NextHopID</ref>
                                  </metadataExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
  
  L.Dong et al.             Expires April 1, 2007              [Page 44]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
          <outputPorts>
                  <outputPort>
                          <name>SuccessOut</name>
                          <synopsis>
     Output port for packet successfully fulfill the nexthop application
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref> IPv4 </ref>
                                  </frameProduced>
                                  <metadataProduced>
                                          <ref>FEID</ref>
                                          <ref>OutputPortID</ref>
                                          <ref>L2Index</ref>
                                          <ref>NextHopIP</ref>
                                          <ref>EncapMethod</ref>
                                  </metadataProduced>
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>ExceptionOut</name>
                          <synopsis>
     Output for packets need deep dealt by higher level protocol stacks
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref> IPv4 </ref>
                                  </frameProduced>
                                  <metadataProduced>
                                          <ref>InputPortID</ref>
                                          <ref>ExceptionID</ref>
                                  </metadataProduced>
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>FailOutput</name>
                          <synopsis>
     Output for packets failed the nexthop application operation
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref> IPv4 </ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name> NextHopTable </name>
  
  L.Dong et al.             Expires April 1, 2007              [Page 45]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          <synopsis>Nexthop table</synopsis>
                          <array type="variable-size">
                                  <typeRef> IPv4NextHopInfoType </typeRef>
                          </array>
                  </attribute>
          </attributes>
          <capabilities>
                  <capability elementID="2">
                          <name>NextHopTableLimit</name>
                          <synopsis>
     Maximum number of nexthops this LFB supports
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </capability>
          </capabilities>
     </LFBClassDef>
  
       3.2.4. ARP LFB
  
     <LFBClassDef LFBClassID="0x00011013">
          <name>ARP</name>
          <synopsis>
     This LFB class provides the function of address resolution.
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>AddrResDataPktIn</name>
                          <synopsis>
     The IPv4 data packet that need to do the address resolution
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv4</ref>
                                  </frameExpected>
                          </expectation>
                  </inputPort>
                  <inputPort>
                          <name>ArpPktIn</name>
                          <synopsis>
     The neighbor discovery packet related to address resolution
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv4</ref>
                                  </frameExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
  
  L.Dong et al.             Expires April 1, 2007              [Page 46]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
          <outputPorts>
                  <outputPort>
                          <name>AddrResDataPktOut</name>
                          <synopsis>
     The IPv4 packet that have been encapsulated with the correct
     ethernet L2 info and need to be sent out to link
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>EthernetII</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>ArpOut</name>
                          <synopsis>The arp packet out</synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>EthernetII</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
     </LFBClassDef>
  
       3.2.5. ICMPProc LFB
  
     <LFBClassDef LFBClassID="0x00011014">
          <name>ICMPGenerator</name>
          <synopsis>
     This LFB class provide some basic ICMP function,it only generate the
     following ICMP messages:ICMP destination unreachable and time
     excceeded.
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>PktIn</name>
                          <synopsis>The IPv4 packet that need icmp
     processing</synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv4</ref>
                                  </frameExpected>
                                  <metadataExpected>
                                          <ref>ExceptionID</ref>
                                  </metadataExpected>
                          </expectation>
                  </inputPort>
  
  L.Dong et al.             Expires April 1, 2007              [Page 47]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
          </inputPorts>
          <outputPorts>
                  <outputPort>
                          <name>ICMPPktOut</name>
                          <synopsis>
     The output for the ICMP packets generated according to the input
     packet and the ExceptionID.
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>IPv6</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
     </LFBClassDef>
  
       3.2.6. OptionProc LFB
  
     <LFBClassDef LFBClassID="0x00011017">
          <name>OptionProc</name>
          <synopsis>This LFB class process the IPv4 packet with options,it
     can process on the following options:Router-alert option.</synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>PktIn</name>
                          <synopsis>
     The IPv4 packet with options in
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv4</ref>
                                  </frameExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort group="yes">
                          <name>PktOut</name>
                          <synopsis>
     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.
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>IPv6</ref>
                                  </frameProduced>
  
  L.Dong et al.             Expires April 1, 2007              [Page 48]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          </product>
                  </outputPort>
          </outputPorts>
     </LFBClassDef>
  
      3.3. IPv6 unicast forwarding LFBs
  
     The ideas behind modeling of IPv6 unicast forwarding LFBs is totally
     the same as IPv4 unicast forwarding LFBs.
  
       3.3.1. IPv6Validator LFB
  
     <LFBClassDef LFBClassID="0x00011006">
          <name>IPv6Validator</name>
          <synopsis>
     A LFB class definition for validating correctness of IPv6 packets
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>ValidateIn</name>
                          <synopsis>Input port for packets to be
     validated</synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv6</ref>
                                  </frameExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort>
                          <name>SuccessOut</name>
                          <synopsis>
     Output port for packets passing the validation
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>IPv6</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>ExceptionOut</name>
                          <synopsis>
     Output port for exception packet.The following packets are
     identified as Exception packet:
     1 Packet with next header set to Hop-by-Hop.
  
  
  L.Dong et al.             Expires April 1, 2007              [Page 49]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
     2 The packet length reported by link layer is less than the total
     length field.
     3 Packet with a link local destination address.
     4 The packet received as limited broadcast.
     5 Packet with multicast destination address (the MSB of the
     destination address is 0xFF).
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>IPv6</ref>
                                  </frameProduced>
                                  <metadataProduced>
                                          <ref>ExceptionID</ref>
                                  </metadataProduced>
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>FailOut</name>
                          <synopsis>
     Output port for packet failing the validation
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>IPv6</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name>StatsEnable</name>
                          <synopsis>
     Whether to gather statistics in this LFB
                          </synopsis>
                          <typeRef>BooleanType</typeRef>
                          <defaultValue>"no"</defaultValue>
                  </attribute>
                  <attribute elementID="2">
                          <name>IPv6ValidatorStats</name>
                          <synopsis>
     IPv6 validator LFB statistics
                          </synopsis>
                          <typeRef>IPv6ValidatorStatisticsType</typeRef>
                  </attribute>
          </attributes>
          <description>Detailed validation process could refer to RFC2460
     and RFC2373.</description>
     </LFBClassDef>
  
  
  L.Dong et al.             Expires April 1, 2007              [Page 50]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
       3.3.2. IPv6UcastLPM LFB
  
     <LFBClassDef LFBClassID="0x00011007">
          <name>IPv6UcastLPM</name>
          <synopsis>
     An LFB class definition for IPv6 longest prefix lookup function
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>PktIn</name>
                          <synopsis>
     The port to receive IPv6 packets needed to do IPv4 LPM
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv6</ref>
                                  </frameExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort>
                          <name>SuccessOut</name>
                          <synopsis>
     Output for packets that have find the correct route
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>IPv6</ref>
                                  </frameProduced>
                                  <metadataProduced>
                                          <ref>NextHopID</ref>
                                  </metadataProduced>
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>FailOutput</name>
                          <synopsis>LPM failed</synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>IPv6</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name> PrefixTable </name>
  
  L.Dong et al.             Expires April 1, 2007              [Page 51]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          <synopsis>IPv6 prefix table</synopsis>
                          <array type="variable-size">
                                  <typeRef>IPv6PrefixTableEntry</typeRef>
                                  <contentKey contentKeyID="1">
                                          <contentKeyField>
                                          IPv6PrefixTableEntry.prefix
                                          </contentKeyField>
                                  </contentKey>
                          </array>
                  </attribute>
                  <attribute elementID="2">
                          <name>LocalIpv6AddrTable</name>
                          <synopsis>
     The table of interfaces's ip address infomation on the local device
                          </synopsis>
                          <typeRef>LocalIpv6AddrType</typeRef>
                  </attribute>
                  <attribute elementID="3">
                          <name>StatsEnable</name>
                          <synopsis>
     Whether enable the statistics in this LFB
                          </synopsis>
                          <typeRef>BooleanType</typeRef>
                  </attribute>
                  <attribute elementID="4">
                          <name>IPv6Stats</name>
                          <synopsis>
     The IPv6 associated statistics
                          </synopsis>
                          <typeRef>
                          IPv6LPMClassiferStatisticsType
                          </typeRef>
                  </attribute>
          </attributes>
          <capabilities>
                  <capability elementID="1">
                          <name>PrefixTableLimit</name>
                          <synopsis>
     Maxium number of prefix supported by this LFB
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </capability>
                  <capability elementID="2">
                          <name>LocalIpv6AddrTableLimit</name>
                          <synopsis>
               Maxium number of IPv6 address entrys supported by this LFB
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </capability>
  
  L.Dong et al.             Expires April 1, 2007              [Page 52]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
          </capabilities>
     </LFBClassDef>
  
       3.3.3. IPv6UcastNexthopApplicator LFB
  
     <LFBClassDef LFBClassID="0x00011008">
          <name>IPv6UcastNexthopApplicator</name>
          <synopsis>An LFB for applicating next hop action to IPv6
     packets</synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>PktIn</name>
                          <synopsis>
     Input port for packets to be applicate nexthop
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref> IPv6 </ref>
                                  </frameExpected>
                                  <metadataExpected>
                                          <ref>NextHopID</ref>
                                  </metadataExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort>
                          <name>SuccessOut</name>
                          <synopsis>
     Output port for packet successfully fulfill the nexthop application
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref> IPv6 </ref>
                                  </frameProduced>
                                  <metadataProduced>
                                          <ref>FEID</ref>
                                          <ref>OutputPortID</ref>
                                          <ref>L2Index</ref>
                                          <ref>NextHopIP</ref>
                                          <ref>EncapMethod</ref>
                                  </metadataProduced>
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>ExceptionOut</name>
                          <synopsis>
  
  
  L.Dong et al.             Expires April 1, 2007              [Page 53]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
     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.
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref> IPv6 </ref>
                                  </frameProduced>
                                  <metadataProduced>
                                          <ref>InputPortID</ref>
                                          <ref>ExceptionID</ref>
                                  </metadataProduced>
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>FailOutput</name>
                          <synopsis>
     Output for packets failed the nexthop application operation
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref> IPv6 </ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name> NextHopTable </name>
                          <synopsis>Nexthop table</synopsis>
                          <array type="variable-size">
                                  <typeRef> IPv6NextHopInfoType </typeRef>
                          </array>
                  </attribute>
          </attributes>
          <capabilities>
                  <capability elementID="1">
                          <name>NextHopTableLimit</name>
                          <synopsis>
     Maxium number of nexthops this LFB supports
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </capability>
          </capabilities>
     </LFBClassDef>
  
  L.Dong et al.             Expires April 1, 2007              [Page 54]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
  
       3.3.4. IPv6AddrResolution LFB
  
     <LFBClassDef LFBClassID="0x00011010">
          <name>IPv6AddrResolution</name>
          <synopsis>
     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.
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>AddrResDataPktIn</name>
                          <synopsis>
     The IPv6 data packet that need to do the address resolution
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv6</ref>
                                  </frameExpected>
                          </expectation>
                  </inputPort>
                  <inputPort>
                          <name>AddrResProtoPktIn</name>
                          <synopsis>
     The neighbour discovery packet related to addresolution
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv6</ref>
                                  </frameExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort>
                          <name>AddrResDataPktOut</name>
                          <synopsis>
     The IPv6 packet that have encapsulated with the correct ethernet L2
     info and need to be sent out to link
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>EthernetII</ref>
                                  </frameProduced>
                          </product>
  
  L.Dong et al.             Expires April 1, 2007              [Page 55]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                  </outputPort>
                  <outputPort>
                          <name>AddrResProtoPktOut</name>
                          <synopsis>
     The IPv6 neighbour discovey packet wich has been encapsulation with
     the correct ethernet L2 info
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>EthernetII</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name>Nbrtable</name>
                          <synopsis>
     This table is an alias to the IPv6 neighbour table in the EtherEncap
     LFB.
                          </synopsis>
                          <alias>NbrTable</alias>
                  </attribute>
          </attributes>
     </LFBClassDef>
  
       3.3.5. ICMPv6Proc LFB
  
     <LFBClassDef LFBClassID="0x00011011">
          <name>ICMPv6Generator</name>
          <synopsis>
     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.
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>PktIn</name>
                          <synopsis>
     The IPv6 packet that need icmp processing
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv6</ref>
                                  </frameExpected>
                                  <metadataExpected>
                                          <ref>ExceptionID</ref>
                                  </metadataExpected>
  
  L.Dong et al.             Expires April 1, 2007              [Page 56]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort>
                          <name>ICMPv6PktOut</name>
                          <synopsis>
     The output for the ICMPv6 packets generated according to the input
     IPv6 packet and the ExceptionID
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>IPv6</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
     </LFBClassDef>
  
       3.3.6. ExtendHeaderProc LFB
  
     <LFBClassDef LFBClassID="0x00011012">
          <name>ExtendHeaderProc</name>
          <synopsis>
     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.
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>PktIn</name>
                          <synopsis>
     The IPv6 packet with extended header in
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv6</ref>
                                  </frameExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort group="yes">
                          <name>PktOut</name>
                          <synopsis>
     According to the Extended header type the packet may have different
     next processing LFB. Now by default we send all the packet with
     extended header to CE.
  
  L.Dong et al.             Expires April 1, 2007              [Page 57]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>IPv6</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
     </LFBClassDef>
  
      3.4. Queue manager & scheduler LFBs
  
     A basic queue and scheduler LFBs is defined here.
  
       3.4.1. Scheduler LFB
  
     <LFBClassDef LFBClassID="0x0001100a">
          <name>Scheduler</name>
          <synopsis>Base scheduler LFB</synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort group="yes">
                          <name>Watcher</name>
                          <synopsis>
     Input for watching the queues to be scheduled. Queues to be
     scheduled can transmit packet enqueue and dequeue infomation to
     scheduler through these ports.
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>MetadataFrame</ref>
                                  </frameExpected>
                                  <metadataExpected>
                                          <ref>QueueID</ref>
                                          <ref>PacketLength</ref>
                                          <ref>QueueOperationCmd</ref>
                                  </metadataExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort group="yes">
                          <name>OutControl</name>
                          <synopsis>
     Control output, this output is used by scheduler to communicate
     commands to controlled queues such as dequeue a packet.
                          </synopsis>
                          <product>
                                  <frameProduced>
  
  L.Dong et al.             Expires April 1, 2007              [Page 58]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                                          <ref>MetadataFrame</ref>
                                  </frameProduced>
                                  <metadataProduced>
                                          <ref>QueueOperationCmd</ref>
                                  </metadataProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <capabilities>
                  <capability elementID="1">
                          <name>QueueScheduledLimit</name>
                          <synopsis>
     Max number of queues that can be scheduled by this scheduler
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </capability>
          </capabilities>
     </LFBClassDef>
  
       3.4.2. Queue LFB
  
     <LFBClassDef LFBClassID="0x0001100b">
          <name> Queue </name>
          <synopsis>Queue LFB</synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>InControl</name>
                          <synopsis>Input from scheduler</synopsis>
                          <expectation>
                                  <metadataExpected>
                                          <ref>QueueOperationCmd</ref>
                                  </metadataExpected>
                          </expectation>
                  </inputPort>
                  <inputPort>
                          <name>InData</name>
                          <synopsis>Input port for data packet</synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>Arbitrary</ref>
                                  </frameExpected>
                                  <metadataExpected>
                                          <ref>PacketLength</ref>
                                  </metadataExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
  
  L.Dong et al.             Expires April 1, 2007              [Page 59]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                  <outputPort>
                          <name>OutToController</name>
                          <synopsis>Output to queue controller</synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>MetadataFrame</ref>
                                  </frameProduced>
                                  <metadataProduced>
                                          <ref>QueueID</ref>
                                          <ref>PacketLength</ref>
                                          <ref>QueueOperationCmd</ref>
                                  </metadataProduced>
                          </product>
                  </outputPort>
                  <outputPort>
                          <name>OutData</name>
                          <synopsis>Data packet output</synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>Arbitrary</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name>CurrentLen</name>
                          <synopsis>
     Current length of the queue in number of packets
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </attribute>
          </attributes>
          <capabilities>
                  <capability elementID="1">
                          <name>QueueLenLimit</name>
                          <synopsis>
     Maximum length of the queue in number of packets
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </capability>
          </capabilities>
     </LFBClassDef>
  
      3.5. LFBs for Multi-FE
  
       3.5.1. InterFECommEncap LFB
  
     <LFBClassDef LFBClassID="0x00011018">
  
  L.Dong et al.             Expires April 1, 2007              [Page 60]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
          <name> InterFECommEncap </name>
          <synopsis>
     This LFB class is used for encapsulating traffic that needs to be
     sent over switch fabric to other FEs.
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>EncapIn</name>
                          <synopsis>
     Packets needed to be sent to other FE through switch fabric.
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>IPv4</ref>
                                          <ref>IPv6</ref>
                                  </frameExpected>
                                  <metadataExpected>
                                          <ref>SrcBladeID</ref>
                                          <ref>InputPort</ref>
                                          <ref>FrameType</ref>
                                          <ref>DstBladeID</ref>
                                          <ref>OutputPortID</ref>
                                          <ref>NexthopIndex</ref>
                                          <ref>NexthopIP</ref>
                                          <ref>NexthopIPv6</ref>
                                  </metadataExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort>
                          <name>EncapOut</name>
                          <synopsis>
     Packets that have been added the inter-FE communication header
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>TaggedFrame</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name>InterFECommMsgs</name>
                          <synopsis>
  
  
  
  L.Dong et al.             Expires April 1, 2007              [Page 61]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
     Inter FE communication messages config table. There maybe multiple
     message types exchanged between every pair of FEs. Now, only one
     message type can be set between two communicating FEs.
                          </synopsis>
                          <typeRef>InterFECommMsgsType
                          </typeRef>
                  </attribute>
          </attributes>
     </LFBClassDef>
  
       3.5.2. InterFECommDecap LFB
  
     <LFBClassDef LFBClassID="0x00011019">
          <name>InterFECommDecap</name>
          <synopsis>
     This LFB class is used for decapsulating traffic that comes from
     switch fabric to this FE.
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>DecapIn</name>
                          <synopsis>
     Packets come from switch fabric and need to strip the inter FE
     communication header for further processing.
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>TaggedFrame</ref>
                                  </frameExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort>
                          <name>DecapOut</name>
                          <synopsis>
     Packets that have been stripped the inter FE communication header
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>IPv4</ref>
                                          <ref>IPv6</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
  
  L.Dong et al.             Expires April 1, 2007              [Page 62]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          <name>InterFECommMsgs</name>
                          <synopsis>
     Inter FE communication messages config table. There maybe multiple
     message types exchanged between every pair of FEs. Now, only one
     message type is supported between two communicating FEs.
                          </synopsis>
                          <typeRef>InterFECommMsgsType</typeRef>
                  </attribute>
          </attributes>
     </LFBClassDef>
  
      3.6. Common Function LFBs
  
       3.6.1. RedirectSink LFB
  
     <LFBClassDef LFBClassID="0x0001100c">
          <name>RedirectSink</name>
          <synopsis>
     This class definition provides the function of sinking data packets
     that needed to be sent to CE.
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort group="yes">
                          <name>InFromOtherLFBs</name>
                          <synopsis>
     Packets input from other LFBs and needed to sent to CE.
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>TaggedFrame</ref>
                                  </frameExpected>
                                  <metadataExpected>
                                          <ref>InputPortID</ref>
                                          <ref>PacketLength</ref>
                                          <ref>PacketType</ref>
                                  </metadataExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
     </LFBClassDef>
  
       3.6.2. RedirectSource LFB
  
     <LFBClassDef LFBClassID="0x0001100d">
          <name>RedirectSource</name>
          <synopsis>
     This class provides the function of sinking data packets that comes
     from CE and needed to be sent out by this FE.
  
  L.Dong et al.             Expires April 1, 2007              [Page 63]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>PktIn</name>
                          <synopsis>Packet from CE</synopsis>
                          <expectation>
                                  <metadataExpected>
                                          <ref>PacketType</ref>
                                          <ref>OutputPortID</ref>
                                          <ref>PacketLength</ref>
                                  </metadataExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort group="yes">
                          <name>OutputToOtherLFBs</name>
                          <synopsis>Packets input received from
     CE</synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>TaggedFrame</ref>
                                  </frameProduced>
                                  <metadataProduced>
                                          <ref>PacketType</ref>
                                          <ref>OutputPortID</ref>
                                          <ref>PacketLength</ref>
                                  </metadataProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name>DispatchTable</name>
                          <synopsis>The table to dispatch the packets to
     different LFB./</synopsis>
                          <typeRef>DispatchTableType</typeRef>
                  </attribute>
                  <attribute elementID="2">
                          <name>OutGroupNumOfPorts</name>
                          <synopsis>The number of ports in output
     group</synopsis>
                          <typeRef>uint32</typeRef>
                  </attribute>
          </attributes>
     </LFBClassDef>
  
       3.6.3. MetaClassifier LFB
  
  L.Dong et al.             Expires April 1, 2007              [Page 64]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
  
     <LFBClassDef LFBClassID="0x00011016">
          <name>MetaClassifier</name>
          <synopsis>
     This LFB class provides the function of classifying packets
     according to the metadata. Now it only works on one metadata.
          </synopsis>
          <version>1.0</version>
          <inputPorts>
                  <inputPort>
                          <name>PktIn</name>
                          <synopsis>
                          Packets need to do the classification
                          </synopsis>
                          <expectation>
                                  <frameExpected>
                                          <ref>Arbitrary</ref>
                                  </frameExpected>
                                  <metadataExpected>
                                          <ref>Arbitrary</ref>
                                  </metadataExpected>
                          </expectation>
                  </inputPort>
          </inputPorts>
          <outputPorts>
                  <outputPort group="yes">
                          <name>ClassifiedOut</name>
                          <synopsis>
                  The output group for the classified packets
                          </synopsis>
                          <product>
                                  <frameProduced>
                                          <ref>Arbitrary</ref>
                                  </frameProduced>
                          </product>
                  </outputPort>
          </outputPorts>
          <attributes>
                  <attribute elementID="1">
                          <name>MetaDataID</name>
                          <synopsis>
                  The metadata ID that this classifier works on
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </attribute>
                  <attribute elementID="2">
                          <name>MetaDataName</name>
                          <synopsis>
                  The name of the metadata that this classifier works on
  
  L.Dong et al.             Expires April 1, 2007              [Page 65]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
                          </synopsis>
                          <typeRef>string</typeRef>
                  </attribute>
                  <attribute elementID="3">
                          <name>MetadataClassifyTable</name>
                          <synopsis>
                          The metadata classifying table
                          </synopsis>
                          <typeRef>MetadataClassyTableType</typeRef>
                  </attribute>
                  <attribute elementID="4">
                          <name>OutNumOfPorts</name>
                          <synopsis>
                          The number of ports in the output group
                          </synopsis>
                          <typeRef>uint32</typeRef>
                  </attribute>
          </attributes>
     </LFBClassDef>
  
  
   4. Use Case
  
     (TBD)
  
   5. IANA Considerations
     The Following Assigned Numbers are considered:
  
   6. References
  
     [RFC3654] H. Khosravi, et al., Requirements for Separation of IP
     Control and Forwarding, RFC 3654, November 2003.
  
     [RFC3746] L. Yang, et al., Forwarding and Control Element Separation
     (ForCES) Framework, RFC 3746, April 2004.
  
     [ForCES-PL] A. Doria, et al., ForCES protocol specifications, draft-
     ietf-forces-protocol-09.txt, work-in-progress, Mar. 2007.
  
     [FE-Model] J. Halpern, E. Deleganes, ForCES Forwarding Element Model,
     draft-ietf-forces-model-07.txt. work-in-progress, Oct. 2006.
  
  
   7. Author's Address
  
     Ligang Dong
     Zhejiang Gongshang University
     149 Jiaogong Road
     Hangzhou 310035
  
  L.Dong et al.             Expires April 1, 2007              [Page 66]


  Internet Draft         A Basic LFB Library for ForCES          Oct. 2007
  
  
     P.R.China
     Phone: +86-571-28877751
     EMail: donglg@mail.zjgsu.edu.cn
  
     Fengen Jia
     National Digital Switching System Engineering & Technological R&D
     Center(NDSC)
     Jianxue Road
     Zhengzhou 452000
     P.R.China
     Phone: +86-571-28877751
     EMail: jfg@mail.ndsc.com.cn,fgjia@mail.zjgsu.edu.cn
  
     Weiming Wang
     Zhejiang Gongshang University
     149 Jiaogong Road
     Hangzhou  310035
     P.R.China
     Phone: +86-571-28877721
     EMail: wmwang@mail.zjgsu.edu.cn
  
  Copyright Statement
  
     Copyright (C) The IETF Trust (2007).
  
     This document is subject to the rights, licenses and restrictions
     contained in BCP 78, and except as set forth therein, the authors
     retain all their rights.
  
     This document and the information contained herein are provided on
     an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
     REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE
     IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM
     ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
     ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
     INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY
     OR FITNESS FOR A PARTICULAR PURPOSE.
  
  
  
  
  
  
  
  
  
  
  
  
  
  L.Dong et al.             Expires April 1, 2007              [Page 67]
  

Html markup produced by rfcmarkup 1.126, available from https://tools.ietf.org/tools/rfcmarkup/