One document matched: draft-dong-forces-lfblib-01.txt

Differences from draft-dong-forces-lfblib-00.txt



     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] 
                                      


PAFTECH AB 2003-20262026-04-24 05:45:56