One document matched: draft-dong-forces-lfblib-00.txt
ForCES Working Group Ligang Dong
Internet-Draft Zhejiang Gongshang Univ.
Expires: Sept., 2007 Fengen Jia
NDSC
Weiming Wang
Zhejiang Gongshang Univ.
Mar. 2007
A LFB Library for ForCES
draft-dong-forces-lfblib-00.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 ForCES FE LFBs by use of the XML
schema defined in ForCES FE model.
L.Dong et al. Expires Sept., 2007 [Page 1]
Internet Draft A LFB Library for ForCES Mar. 2007
Table of Contents
1. Introduction....................................................2
2. Definitions of Types............................................3
2.1. Frame Type.................................................3
2.2. Data Type..................................................4
2.3. Metadata Type.............................................25
3. LFB Definitions................................................30
3.1. Port LFBs.................................................30
3.1.1. EtherPort LFB........................................30
3.1.2. EtherEncap LFB.......................................34
3.1.3. EtherDecap LFB.......................................36
3.2. IPv4 unicast forwarding LFBs..............................37
3.2.1. IPv4Validator LFB....................................38
3.2.2. IPv4UcastLPM LFB.....................................40
3.2.3. IPv4NextHopApplicator LFB............................43
3.2.4. ARP LFB..............................................44
3.2.5. ICMPProc LFB.........................................45
3.2.6. OptionProc LFB.......................................46
3.3. IPv6 unicast forwarding LFBs..............................47
3.3.1. IPv6Validator LFB....................................47
3.3.2. IPv6UcastLPM LFB.....................................49
3.3.3. IPv6UcastNexthopApplicator LFB.......................51
3.3.4. IPv6AddrResolution LFB...............................53
3.3.5. ICMPv6Proc LFB.......................................54
3.3.6. ExtendHeaderProc LFB.................................55
3.4. Queue manager & scheduler LFBs............................56
3.4.1. Scheduler LFB........................................56
3.4.2. Queue LFB............................................57
3.5. LFBs for Multi-FE.........................................59
3.5.1. InterFECommEncap LFB.................................59
3.5.2. InterFECommDecap LFB.................................60
3.6. Common Function LFBs......................................61
3.6.1. RedirectSink LFB.....................................61
3.6.2. RedirectSource LFB...................................62
3.6.3. MetaClassifier LFB...................................63
4. Use Case.......................................................64
5. IANA Considerations............................................64
6. References.....................................................64
7. Author's Address...............................................65
Copyright Statement...............................................65
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
blocks, called Logical Function Blocks (LFBs). RFC 3654 has defined
L.Dong et al. Expires Sept., 2007 [Page 2]
Internet Draft A LFB Library for ForCES Mar. 2007
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 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.
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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 3]
Internet Draft A LFB Library for ForCES Mar. 2007
<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">
<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
L.Dong et al. Expires Sept., 2007 [Page 4]
Internet Draft A LFB Library for ForCES Mar. 2007
</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>
</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>
L.Dong et al. Expires Sept., 2007 [Page 5]
Internet Draft A LFB Library for ForCES Mar. 2007
</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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 6]
Internet Draft A LFB Library for ForCES Mar. 2007
</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>
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>
L.Dong et al. Expires Sept., 2007 [Page 7]
Internet Draft A LFB Library for ForCES Mar. 2007
</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">
<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>
L.Dong et al. Expires Sept., 2007 [Page 8]
Internet Draft A LFB Library for ForCES Mar. 2007
<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">
<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>
L.Dong et al. Expires Sept., 2007 [Page 9]
Internet Draft A LFB Library for ForCES Mar. 2007
<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">
<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>
L.Dong et al. Expires Sept., 2007 [Page 10]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
<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">
L.Dong et al. Expires Sept., 2007 [Page 11]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 12]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 13]
Internet Draft A LFB Library for ForCES Mar. 2007
</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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 14]
Internet Draft A LFB Library for ForCES Mar. 2007
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>
</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>
L.Dong et al. Expires Sept., 2007 [Page 15]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
</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>
L.Dong et al. Expires Sept., 2007 [Page 16]
Internet Draft A LFB Library for ForCES Mar. 2007
<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.
</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>
L.Dong et al. Expires Sept., 2007 [Page 17]
Internet Draft A LFB Library for ForCES Mar. 2007
</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>
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
L.Dong et al. Expires Sept., 2007 [Page 18]
Internet Draft A LFB Library for ForCES Mar. 2007
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">
<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
L.Dong et al. Expires Sept., 2007 [Page 19]
Internet Draft A LFB Library for ForCES Mar. 2007
</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>
</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>
L.Dong et al. Expires Sept., 2007 [Page 20]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 21]
Internet Draft A LFB Library for ForCES Mar. 2007
<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
</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>
L.Dong et al. Expires Sept., 2007 [Page 22]
Internet Draft A LFB Library for ForCES Mar. 2007
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
</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>
L.Dong et al. Expires Sept., 2007 [Page 23]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
</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>
L.Dong et al. Expires Sept., 2007 [Page 24]
Internet Draft A LFB Library for ForCES Mar. 2007
</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>
<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
L.Dong et al. Expires Sept., 2007 [Page 25]
Internet Draft A LFB Library for ForCES Mar. 2007
<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)
</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>
L.Dong et al. Expires Sept., 2007 [Page 26]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 27]
Internet Draft A LFB Library for ForCES Mar. 2007
<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">
<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>
L.Dong et al. Expires Sept., 2007 [Page 28]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
</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>
L.Dong et al. Expires Sept., 2007 [Page 29]
Internet Draft A LFB Library for ForCES Mar. 2007
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.
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>
L.Dong et al. Expires Sept., 2007 [Page 30]
Internet Draft A LFB Library for ForCES Mar. 2007
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>
</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">
L.Dong et al. Expires Sept., 2007 [Page 31]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
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
L.Dong et al. Expires Sept., 2007 [Page 32]
Internet Draft A LFB Library for ForCES Mar. 2007
</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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 33]
Internet Draft A LFB Library for ForCES Mar. 2007
<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
</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>
L.Dong et al. Expires Sept., 2007 [Page 34]
Internet Draft A LFB Library for ForCES Mar. 2007
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>
</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>
L.Dong et al. Expires Sept., 2007 [Page 35]
Internet Draft A LFB Library for ForCES Mar. 2007
<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
</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>
L.Dong et al. Expires Sept., 2007 [Page 36]
Internet Draft A LFB Library for ForCES Mar. 2007
</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>
</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
L.Dong et al. Expires Sept., 2007 [Page 37]
Internet Draft A LFB Library for ForCES Mar. 2007
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
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
L.Dong et al. Expires Sept., 2007 [Page 38]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 39]
Internet Draft A LFB Library for ForCES Mar. 2007
</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">
<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>
L.Dong et al. Expires Sept., 2007 [Page 40]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 41]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 42]
Internet Draft A LFB Library for ForCES Mar. 2007
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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 43]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 44]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
<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
L.Dong et al. Expires Sept., 2007 [Page 45]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
</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>
L.Dong et al. Expires Sept., 2007 [Page 46]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
</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>
L.Dong et al. Expires Sept., 2007 [Page 47]
Internet Draft A LFB Library for ForCES Mar. 2007
</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.
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>
L.Dong et al. Expires Sept., 2007 [Page 48]
Internet Draft A LFB Library for ForCES Mar. 2007
</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>
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>
L.Dong et al. Expires Sept., 2007 [Page 49]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 50]
Internet Draft A LFB Library for ForCES Mar. 2007
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>
</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>
L.Dong et al. Expires Sept., 2007 [Page 51]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
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>
L.Dong et al. Expires Sept., 2007 [Page 52]
Internet Draft A LFB Library for ForCES Mar. 2007
</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>
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>
L.Dong et al. Expires Sept., 2007 [Page 53]
Internet Draft A LFB Library for ForCES Mar. 2007
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>
</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
L.Dong et al. Expires Sept., 2007 [Page 54]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
</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.
L.Dong et al. Expires Sept., 2007 [Page 55]
Internet Draft A LFB Library for ForCES Mar. 2007
</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.
</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.
L.Dong et al. Expires Sept., 2007 [Page 56]
Internet Draft A LFB Library for ForCES Mar. 2007
</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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 57]
Internet Draft A LFB Library for ForCES Mar. 2007
<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>
<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>
L.Dong et al. Expires Sept., 2007 [Page 58]
Internet Draft A LFB Library for ForCES Mar. 2007
<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">
<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>
L.Dong et al. Expires Sept., 2007 [Page 59]
Internet Draft A LFB Library for ForCES Mar. 2007
</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>
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>
L.Dong et al. Expires Sept., 2007 [Page 60]
Internet Draft A LFB Library for ForCES Mar. 2007
</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">
<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>
L.Dong et al. Expires Sept., 2007 [Page 61]
Internet Draft A LFB Library for ForCES Mar. 2007
<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.
</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>
L.Dong et al. Expires Sept., 2007 [Page 62]
Internet Draft A LFB Library for ForCES Mar. 2007
</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
<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
L.Dong et al. Expires Sept., 2007 [Page 63]
Internet Draft A LFB Library for ForCES Mar. 2007
</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
</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
L.Dong et al. Expires Sept., 2007 [Page 64]
Internet Draft A LFB Library for ForCES Mar. 2007
[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
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.
L.Dong et al. Expires Sept., 2007 [Page 65]
Internet Draft A LFB Library for ForCES Mar. 2007
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 Sept., 2007 [Page 66]
| PAFTECH AB 2003-2026 | 2026-04-24 05:46:59 |