idnits 2.17.1 draft-ietf-forces-lfb-lib-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** The document seems to lack a License Notice according IETF Trust Provisions of 28 Dec 2009, Section 6.b.i or Provisions of 12 Sep 2009 Section 6.b -- however, there's a paragraph with a matching beginning. Boilerplate error? (You're using the IETF Trust Provisions' Section 6.b License Notice from 12 Feb 2009 rather than one of the newer Notices. See https://trustee.ietf.org/license-info/.) Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 4645 has weird spacing: '...ariable tag m...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (June 29, 2009) is 5414 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Unused Reference: 'RFC2629' is defined on line 5136, but no explicit reference was found in the text == Unused Reference: 'RFC3552' is defined on line 5139, but no explicit reference was found in the text == Unused Reference: 'RFC5226' is defined on line 5150, but no explicit reference was found in the text -- Obsolete informational reference (is this intentional?): RFC 2629 (Obsoleted by RFC 7749) -- Obsolete informational reference (is this intentional?): RFC 5226 (Obsoleted by RFC 8126) Summary: 1 error (**), 0 flaws (~~), 6 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet Engineering Task Force W. Wang 3 Internet-Draft Zhejiang Gongshang University 4 Intended status: Informational E. Haleplidis 5 Expires: December 31, 2009 University of Patras 6 K. Ogawa 7 NTT Corporation 8 F. Jia 9 National Digital Switching 10 Center(NDSC) 11 J. Halpern 12 Ericsson 13 June 29, 2009 15 ForCES LFB Library 16 draft-ietf-forces-lfb-lib-00 18 Status of this Memo 20 This Internet-Draft is submitted to IETF in full conformance with the 21 provisions of BCP 78 and BCP 79. 23 Internet-Drafts are working documents of the Internet Engineering 24 Task Force (IETF), its areas, and its working groups. Note that 25 other groups may also distribute working documents as Internet- 26 Drafts. 28 Internet-Drafts are draft documents valid for a maximum of six months 29 and may be updated, replaced, or obsoleted by other documents at any 30 time. It is inappropriate to use Internet-Drafts as reference 31 material or to cite them other than as "work in progress." 33 The list of current Internet-Drafts can be accessed at 34 http://www.ietf.org/ietf/1id-abstracts.txt. 36 The list of Internet-Draft Shadow Directories can be accessed at 37 http://www.ietf.org/shadow.html. 39 This Internet-Draft will expire on December 31, 2009. 41 Copyright Notice 43 Copyright (c) 2009 IETF Trust and the persons identified as the 44 document authors. All rights reserved. 46 This document is subject to BCP 78 and the IETF Trust's Legal 47 Provisions Relating to IETF Documents in effect on the date of 48 publication of this document (http://trustee.ietf.org/license-info). 49 Please review these documents carefully, as they describe your rights 50 and restrictions with respect to this document. 52 Abstract 54 The forwarding and Control Element Separation (ForCES) protocol 55 defines a standard communication and control mechanism through which 56 a Control Element (CE) can control the behavior of a Forwarding 57 Element (FE). That control is accomplished through manipulating 58 components of Logical Function Blocks (LFBs), whose structure is 59 defined in a model RFC produced by the working group.In order to 60 build an actual solution using this protocol, there needs to be a set 61 of Logical Function Block definitions that can be instantiated by FEs 62 and controlled by CEs. This document provides a sample space of such 63 definitions. It is anticipated that additional defining documents 64 will be produced over time. 66 Table of Contents 68 1. Terminology and Conventions . . . . . . . . . . . . . . . . . 5 69 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 5 70 2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 6 71 3. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 8 72 4. Base Definitions . . . . . . . . . . . . . . . . . . . . . . 10 73 4.1. Framedefs . . . . . . . . . . . . . . . . . . . . . . . . 10 74 4.2. DataTypeDefs . . . . . . . . . . . . . . . . . . . . . . 11 75 4.3. MetaDataDefs . . . . . . . . . . . . . . . . . . . . . . 38 76 5. LFB Descriptions . . . . . . . . . . . . . . . . . . . . . . 44 77 5.1. Core LFBs . . . . . . . . . . . . . . . . . . . . . . . . 44 78 5.1.1. FEObject LFB . . . . . . . . . . . . . . . . . . . . 44 79 5.1.2. FEProtocol LFB . . . . . . . . . . . . . . . . . . . 45 80 5.2. Port LFBs . . . . . . . . . . . . . . . . . . . . . . . . 45 81 5.2.1. GenericConnectivityLFB . . . . . . . . . . . . . . . 45 82 5.2.2. EtherPort . . . . . . . . . . . . . . . . . . . . . . 45 83 5.2.3. EtherDecap . . . . . . . . . . . . . . . . . . . . . 46 84 5.2.4. EtherEncap . . . . . . . . . . . . . . . . . . . . . 46 85 5.3. Address LFBs . . . . . . . . . . . . . . . . . . . . . . 46 86 5.3.1. IPv6AddrResolution . . . . . . . . . . . . . . . . . 46 87 5.3.2. Arp . . . . . . . . . . . . . . . . . . . . . . . . . 46 88 5.3.3. ICMPGenerator . . . . . . . . . . . . . . . . . . . . 46 89 5.3.4. ICMPv6Generator . . . . . . . . . . . . . . . . . . . 46 90 5.3.5. IPv4Validator . . . . . . . . . . . . . . . . . . . . 47 91 5.3.6. IPv6Validator . . . . . . . . . . . . . . . . . . . . 47 92 5.4. Forwarding LFBs . . . . . . . . . . . . . . . . . . . . . 47 93 5.4.1. IPv4UcastLPM . . . . . . . . . . . . . . . . . . . . 47 94 5.4.2. IPv4NextHopApplicator . . . . . . . . . . . . . . . . 47 95 5.4.3. IPv6UcastLPM . . . . . . . . . . . . . . . . . . . . 47 96 5.4.4. IPv6UcastNexthopApplicator . . . . . . . . . . . . . 47 97 5.5. Queue and scheduler LFBs . . . . . . . . . . . . . . . . 48 98 5.5.1. Scheduler . . . . . . . . . . . . . . . . . . . . . . 48 99 5.5.2. Queue . . . . . . . . . . . . . . . . . . . . . . . . 49 100 5.5.3. WRRSched . . . . . . . . . . . . . . . . . . . . . . 49 101 5.6. Miscellanious LFBs . . . . . . . . . . . . . . . . . . . 49 102 5.6.1. ExtendHeaderProc . . . . . . . . . . . . . . . . . . 49 103 5.6.2. MetadataClassifier . . . . . . . . . . . . . . . . . 49 104 5.6.3. OptionProc . . . . . . . . . . . . . . . . . . . . . 49 105 5.6.4. RedirectLFB . . . . . . . . . . . . . . . . . . . . . 50 106 5.6.5. PacketTrimmer . . . . . . . . . . . . . . . . . . . . 50 107 5.6.6. Duplicator . . . . . . . . . . . . . . . . . . . . . 50 108 5.6.7. ArbitraryClassifierLFB . . . . . . . . . . . . . . . 50 109 6. LFB Library Definition . . . . . . . . . . . . . . . . . . . 51 110 7. LFB Use Case . . . . . . . . . . . . . . . . . . . . . . . . 112 111 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 113 112 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 114 113 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 115 114 11. Security Considerations . . . . . . . . . . . . . . . . . . . 116 115 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 117 116 12.1. Normative References . . . . . . . . . . . . . . . . . . 117 117 12.2. Informative References . . . . . . . . . . . . . . . . . 117 118 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 118 120 1. Terminology and Conventions 122 1.1. Requirements Language 124 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 125 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 126 document are to be interpreted as described in [RFC2119]. 128 2. Definitions 130 This document follows the terminology defined by the ForCES 131 Requirements in [RFC3654]and by the ForCES framework in [RFC3746]. 132 The definitions below are repeated below for clarity. 134 Control Element (CE) - A logical entity that implements the ForCES 135 protocol and uses it to instruct one or more FEs on how to process 136 packets. CEs handle functionality such as the execution of 137 control and signaling protocols. 139 Forwarding Element (FE) - A logical entity that implements the 140 ForCES protocol. FEs use the underlying hardware to provide per- 141 packet processing and handling as directed/controlled by one or 142 more CEs via the ForCES protocol. 144 ForCES Network Element (NE) - An entity composed of one or more 145 CEs and one or more FEs. To entities outside an NE, the NE 146 represents a single point of management. Similarly, an NE usually 147 hides its internal organization from external entities. 149 LFB (Logical Function Block) - The basic building block that is 150 operated on by the ForCES protocol. The LFB is a well defined, 151 logically separable functional block that resides in an FE and is 152 controlled by the CE via ForCES protocol. The LFB may reside at 153 the FE's datapath and process packets or may be purely an FE 154 control or configuration entity that is operated on by the CE. 155 Note that the LFB is a functionally accurate abstraction of the 156 FE's processing capabilities, but not a hardware-accurate 157 representation of the FE implementation. 159 FE Topology - A representation of how the multiple FEs within a 160 single NE are interconnected. Sometimes this is called inter-FE 161 topology, to be distinguished from intra-FE topology (i.e., LFB 162 topology). 164 LFB Class and LFB Instance - LFBs are categorized by LFB Classes. 165 An LFB Instance represents an LFB Class (or Type) existence. 166 There may be multiple instances of the same LFB Class (or Type) in 167 an FE. An LFB Class is represented by an LFB Class ID, and an LFB 168 Instance is represented by an LFB Instance ID. As a result, an 169 LFB Class ID associated with an LFB Instance ID uniquely specifies 170 an LFB existence. 172 LFB Metadata - Metadata is used to communicate per-packet state 173 from one LFB to another, but is not sent across the network. The 174 FE model defines how such metadata is identified, produced and 175 consumed by the LFBs. It defines the functionality but not how 176 metadata is encoded within an implementation. 178 LFB Component - Operational parameters of the LFBs that must be 179 visible to the CEs are conceptualized in the FE model as the LFB 180 components. The LFB components include, for example, flags, 181 single parameter arguments, complex arguments, and tables that the 182 CE can read and/or write via the ForCES protocol (see below). 184 LFB Topology - Representation of how the LFB instances are 185 logically interconnected and placed along the datapath within one 186 FE. Sometimes it is also called intra-FE topology, to be 187 distinguished from inter-FE topology. 189 ForCES Protocol - While there may be multiple protocols used 190 within the overall ForCES architecture, the term "ForCES protocol" 191 and "protocol" refer to the Fp reference points in the ForCES 192 Framework in [RFC3746]. This protocol does not apply to CE-to-CE 193 communication, FE-to-FE communication, or to communication between 194 FE and CE managers. Basically, the ForCES protocol works in a 195 master- slave mode in which FEs are slaves and CEs are masters. 196 This document defines the specifications for this ForCES protocol. 198 3. Introduction 200 XXX: Editorial Note: This is an initial rough copy of the document 201 which will undergo heavy review and modification. It was published 202 to beat the meeting deadline. 204 Forwarding and Control Element Separation (ForCES) defines an 205 architectural framework and associated protocols to standardize 206 information exchange between the control plane and the forwarding 207 plane in a ForCES Network Element (ForCES NE). [RFC3654]has defined 208 the ForCES requirements, and [RFC3746] has defined the ForCES 209 framework. 211 The ForCES protocol Protocol FE-protocol [I-D.ietf-forces-protocol] 212 defines a protocol by which Control Elements (CEs) communicated with 213 and control the behavior of Forwarding Elements (FEs). That control 214 is expressed in terms of manipulations of components of Logical 215 Function Blocks (LFBs). The structure and abstract semantics of LFBs 216 is defined in Model FE-MODEL [I-D.ietf-forces-model]. That document 217 also defines a single LFB Class for gaining access to FE properties 218 including the set of LFBs and their interconnection. The Protocol 219 document defines an LFB class for manipulating the protocol 220 properties of the FE. 222 In order for the protocol to be useful to control any behavior, there 223 must be a set of LFB class definitions for the LFBs which provide 224 that behavior. This document provides a set of such definitions. 225 This document is intended to provide an initial LFB library. It is 226 expected that other definitions will be developed over time, and 227 documented in other RFCs. 229 An LFB performs a well-defined action or computation on the packets 230 passing through it. Upon completion of its prescribed function, 231 either the packets are modified in certain ways (e.g., decapsulator, 232 marker), or some results are generated and stored, often in the form 233 of metadata (e.g., classifier). Each LFB typically performs a single 234 action. Classifiers, shapers and meters are all examples of such 235 LFBs. 237 In general, multiple LFBs are contained in one FE. An LFB, may have 238 inputs, outputs and components that can be queried and manipulated by 239 the CE via the ForCES Protocol. An LFB can have one or more inputs. 240 Each input takes a pair of a packet and its associated metadata. The 241 LFB processes the input, and produces one or more outputs, each of 242 which is a pair of a packet and its associated metadata. 244 For further information regarding the LFB model, the reader is 245 referenced to FE-MODEL [I-D.ietf-forces-model]. 247 XXX: The above text is redundant. The definition gives some intro to 248 LFBs and the model and all the other docs before this tell us what an 249 LFB is 251 In this document we first define base structures used in building the 252 LFBs in section 4 then use those base definitions to define various 253 LFBs. 255 To simplify the understanding of these LFBs - we have chosen to group 256 them by functionality. The following groups of LFBs will be 257 described in section 5: 259 1. Core LFBs. 261 2. Port LFBs. 263 3. Address LFBs. 265 4. Forwarding LFBs. 267 5. Queue manager and scheduler LFBs. 269 6. Miscellanious LFBs. 271 4. Base Definitions 273 This section povides a base set of LFB frame, data type, and meta 274 data definitions for use by all any LFB Class definitions (in this or 275 other documents. This section provides no actual LFB Class 276 definitions. 278 These are then used in each subsequent definition by the statement: 280 282 4.1. Framedefs 284 The following Frames are defined: 286 1. EthernetII - An Ethernet II frame type. 288 2. Ethernet802.3 - An Ethernet 802.3 frame type. 290 3. Ethernet802.2 - An Ethernet 802.2 frame type. 292 4. Ethernet802.2SNAP - An Ethernet 802.2 with SNAP frame. 294 5. IPv4Frame - An IPv4 packet. 296 6. IPv6Frame - An IPv6 packet. 298 7. TaggedFrame - A frame of any type with associated metadata. 300 8. MetadataFrame - Frame only contains meta data. 302 9. Arbitrary - Any kind of frame except Metadata Frame. 304 305 306 EthernetII 307 An Ethernet II frame type 308 309 310 Ethernet802.3 311 An Ethernet 802.3 frame type 312 313 314 Ethernet802.2 315 An Ethernet 802.2 frame type 316 317 318 Ethernet802.2SNAP 319 An Ethernet 802.2 with SNAP frame 320 321 322 IPv4Frame 323 An IPv4 packet 324 325 326 IPv6Frame 327 An IPv6 packet 328 329 330 taggedFrame 331 A frame of any type with associated metadata. 332 333 334 MetadataFrame 335 Frame only contains meta data 336 337 338 Arbitrary 339 Any kind of frame except Metadata Frame. 340 341 343 4.2. DataTypeDefs 345 The following Data Types are defined: 347 1. ifIndex - A Port Identifier. 349 2. IEEEMAC - IEEE MAC Address. 351 3. NetSpeedType - Network speed values. 353 4. IEEENegotiationType - IEEENegotiation types. 355 5. PortStatsType - Port statistics. 357 6. PortStatusValues - The possible values of status Used for both 358 administrative and operation status. 360 7. LocalIpAddrType - Local IP address belonging to FE. 362 8. LocalIpv6AddrType - The device local IPv6 address infomation. 364 9. IPv4Addr - IPv4 address. 366 10. IPv6Addr - IPv6 address. 368 11. IPv4Prefix - IPv4 prefix defined by an address and a prefix 369 length. 371 12. IPv4NextHopInfoType - IPv4 nexthop information,include nexthop 372 ip address,output FE and interface etc. 374 13. IPv4FibEntryType - IPv4 forwarding table entry. 376 14. IPv4PrefixTableEntry - IPv4 prefix table entry. 378 15. IPv4UcastLPMStatisticsType - Statistics of IPv4UcastLPM LFB. 380 16. IPv4ValidatorStatisticsType - IPv4 validator LFB statistics 381 type. 383 17. IPv6Prefix - IPv6 prefix defined by an address and a prefix 384 length. 386 18. IPv6NextHopInfoType - IPv6 next hop information, include next 387 hop ip address,output FE and interfac eetc. 389 19. IPv6PrefixTableEntry - IPv6 prefix table entry. 391 20. IPv6LPMClassiferStatisticsType - Statistics of IPv6 LPM 392 ClassifierLFB. 394 21. IPv6ValidatorStatisticsType - IPv6 validator LFB statistics 395 type. 397 22. NextHopFlagsType - Flags used to define different next hop 398 behaviors. 400 23. WeightTableEntryType - Weight table for queues. 402 24. NbrState - IPv6 neighbour entry resolution state. 404 25. ArpTableEntryType - Arp Entry. 406 26. NbrTableEntryType - IPv6 neighbour table entry. 408 27. DCHostTableEntryTypev4 - Direct connected arp table entry for 409 IPv4. 411 28. DCHostTableEntryTypev6 - Direct connected arp table entry for 412 IPv6. 414 29. IPPacketType - The packet type code. 416 30. IPDispatchTableType - The dispatch table type. 418 31. MetaType - Metadata type definition. 420 32. MetadataClassTableType - The meta data classifying table. 422 33. LinkEncapType - Encapsulation type. 424 34. IPAddress - IP layer address. 426 35. ArpStateType - The arp entry state. 428 36. MatchTargetType - Indicator for the kind of field to be matched 429 by this entry in a classifier. 431 37. MatchTargetIdentifier - Identify the specific target of a match 432 condition. 434 38. MatchBitString - A bit string for use in a match condition. 436 39. MatchCondition - Structure for a single condition to be applied. 438 40. MatchConditiontType - Indicator for the kind of match condition 439 to be applied. 441 41. MatchMetaDataAction - An action to set a metadata item to either 442 a specific value or a field from the incoming meta data or 443 packet. 445 42. NextHopIndex - An index used by the next hop table Typically 446 stored in and generated as metadata by the longest-prefix-match 447 LFB. 449 450 451 ifIndex 452 A Port Identifier 453 uint32 454 455 456 IEEEMAC 457 IEEE MAC Address 458 byte[6] 459 460 461 NetSpeedType 462 Network speed values 463 464 uint32 465 466 467 LAN_SPEED_10M 468 10M Ethernet 469 470 471 LAN_SPEED_100M 472 100M Ethernet 473 474 475 LAN_SPEED_1G 476 1000M Ethernet 477 478 479 LAN_SPEED_10G 480 10G Ethernet 481 482 483 LAN_SPEED_AUTO 484 LAN speed auto 485 486 487 494 495 496 497 IEEENegotiationType 498 IEEENegotiation types 499 500 uint32 501 502 503 Auto 504 Auto negotitation. 505 506 507 Half-duplex 508 port negotitation half duplex 509 510 511 Full-duplex 512 port negotitation full duplex 513 514 515 516 517 518 519 PortStatsType 520 Port statistics 521 522 523 InUcastPkts 524 Number of unicast packets received 525 uint64 526 527 528 InMulticastPkts 529 Number of multicast packets received 530 uint64 531 532 533 InBroadcastPkts 534 Number of broadcast packets received 535 uint64 536 537 538 InOctets 539 number of octets received 540 uint64 541 542 543 OutUcastPkts 544 Number of unicast packets transmitted 545 uint64 546 547 548 OutMulticastPkts 549 Number of multicast packets transmitted 550 uint64 551 552 553 OutBroadcastPkts 554 Number of broadcast packets transmitted 555 uint64 556 557 558 OutOcetes 559 Number of octets transmitted 560 uint64 561 562 563 InErrorPkts 564 Number of input error packets 565 uint64 566 567 568 OutErrorPkts 569 Number of output error packets 570 uint64 571 572 573 574 575 576 PortStatusValues 577 578 The possible values of status. Used for both 579 administrative and operation status 580 581 uchar 582 583 584 Disabled 585 the port is operatively disabled. 586 587 588 UP 589 the port is up. 590 591 592 Down 593 The port is down. 594 595 596 597 598 599 600 LocalIpAddrType 601 Local IP address belonging to FE. 602 603 604 FEID 605 The FE on which the port ip resides 606 uint32 607 608 609 610 IfIndex 611 port index on the specified FE 612 uint32 613 615 616 617 IPaddr 618 IP address of the port 619 IPAddr 620 621 622 netmask 623 netmask of this ip address 624 IPAddr 625 626 627 BcastAddr 628 The associated Broadcast address of the 629 ip address 630 IPAddr 631 632 633 634 635 LocalIpv6AddrType 636 The device local IPv6 address infomation 637 638 639 FEID 640 The FE on which the port ip resides 641 uint32 642 643 644 645 IfIndex 646 port index on the specified FE 647 uint32 648 650 651 652 IPv6addr 653 IP address of the port 654 IPv6Addr 655 656 657 prefixlen 658 prefix length of this ip address 659 uint32 660 661 662 663 664 IPv4Addr 665 IPv4 address 666 byte[4] 667 668 669 IPv6Addr 670 IPv6 address 671 byte[16] 672 673 674 IPv4Prefix 675 IPv4 prefix defined by an address and a prefix length 676 677 678 679 address 680 Address part 681 IPv4addr 682 683 684 prefixlen 685 Prefix length part 686 687 uchar 688 689 690 691 692 693 694 695 696 IPv4NextHopInfoType 697 698 IPv4 nexthop information,include nexthop ip address, 699 output FE and interface etc. 700 701 702 NexthopID 703 nexthop id 704 uint32 705 706 707 FEID 708 output FE id 709 uint32 710 711 712 Egress 713 output port index 714 uint32 715 716 717 MTU 718 The maximum transmition unit of the nexthop link. 719 720 uint32 721 722 723 Flags 724 Associated flags of the nexthop,such as local 725 delivery,multicast etc. 726 NextHopFlagsType 727 728 729 NexthopIPaddr 730 IP address of the nexthop 731 IPv4Addr 732 733 734 L2Index 735 index into the L2 link layer table,such as IPv4 ARP 736 table or IPv6 NBR table. 738 uint32 739 740 741 EncapNeeded 742 The type of encapsulation needed on the packet. 743 744 LinkEncapType 745 746 747 748 749 IPv4FibEntryType 750 751 IPv4 forwarding table entry. 752 753 754 prefix 755 IPv4 prefix. 756 IPv4Prefix 757 758 759 FEID 760 output FE id 761 uint32 762 763 764 Egress 765 output port index 766 uint32 767 768 769 MTU 770 The maximum transmition unit of the nexthop link. 771 772 uint32 773 774 775 Flags 776 Associated flags of the nexthop,such as local 777 delivery,multicast etc. 778 NextHopFlagsType 779 780 781 NexthopIPaddr 782 IP address of the nexthop 783 IPv4Addr 784 785 786 L2Index 787 index into the L2 link layer table,such as IPv4 ARP 788 table or IPv6 NBR table. 789 uint32 790 791 792 EncapNeeded 793 Type of encapsulation needed on the packet 794 LinkEncapType 795 796 797 798 799 IPv4PrefixTableEntry 800 801 IPv4 prefix table entry 802 803 804 Prefix 805 IPv4 address prefix 806 IPv4Prefix 807 808 809 NexthopID 810 Index into the nexthop table. 811 uint32 812 813 814 815 816 IPv4UcastLPMStatisticsType 817 818 statistics of IPv4UcastLPM LFB 819 820 821 InRcvdPkts 822 The total number of input packets received from 823 interfaces, including those received in error 824 uint64 825 826 827 FwdPkts 828 IPv4 packet forwarded by this LFB 829 uint64 830 831 832 NoRoutePkts 833 The number of IP datagrams discarded because no route 835 could be found to transmit them to their destination. 836 uint64 837 838 839 InDeliverPkts 840 The total number of input datagrams successfully 841 delivered to IP user-protocols (including ICMP). 842 uint64 843 844 845 846 847 IPv4ValidatorStatisticsType 848 849 IPv4 validator LFB statistics type 850 851 852 badHeaderPkts 853 The total number of input datagrams with bad ip 854 header 855 uint64 856 857 858 badTotalLengthPkts 859 The total number of input datagrams with bad length 860 861 uint64 862 863 864 badTTLPkts 865 The total number of input datagrams with bad TTL 866 867 uint64 868 869 870 badChecksum 871 The total number of input datagrams with bad checksum 872 873 uint64 874 875 876 877 878 IPv6Prefix 879 IPv6 prefix 880 881 882 IPv6addr 883 address part of the prefix 884 IPv6Addr 885 886 887 prefixlen 888 length of the prefix 889 uint32 890 891 892 893 894 IPv6NextHopInfoType 895 896 IPv6 nexthop information,including nexthop ip address, 897 output FE and interface etc. 898 899 900 NexthopID 901 nexthop id 902 uint32 903 904 905 FEID 906 output FE id 907 uint32 908 909 910 Egress 911 output port index 912 uint32 913 914 915 MTU 916 The maximum transmition unit of the nexthop link. 917 918 uint32 919 920 921 Flags 922 Associated flags of the nexthop,such as local 923 delivery,multicast etc. 924 NextHopFlagsType 925 926 927 NexthopIPv6addr 928 IP address of the nexthop 929 IPv6Addr 930 931 932 L2Index 933 index into the L2 table 934 uint32 935 936 937 EncapNeeded 938 Type of encapsulation needed on the packet 939 LinkEncapType 940 941 942 943 944 IPv6PrefixTableEntry 945 946 IPv6 prefix table entry 947 948 949 Prefix 950 IPv6 address prefix 951 IPv6Prefix 952 953 954 NexthopID 955 index to the nexthop table. 956 uint32 957 958 959 960 961 IPv6LPMClassiferStatisticsType 962 963 statistics of IPv6LPMClassifier LFB 964 965 966 InRcvdPkts 967 The total number of input packets received from 968 interfaces, including those received in error 969 uint64 970 971 972 FwdPkts 973 IPv4 packet forwarded by this LFB 974 uint64 975 976 977 NoRoutePkts 978 The number of IP datagrams discarded because no route 980 could be found to transmit them to their destination. 981 uint64 982 983 984 InDeliverPkts 985 The total number of input datagrams successfully 986 delivered to IP user-protocols (including ICMP). 987 uint64 988 989 990 991 992 IPv6ValidatorStatisticsType 993 994 IPv6 validator LFB statistics type 995 996 997 badHeaderPkts 998 The total number of input datagrams with bad ip 999 header 1000 uint64 1001 1002 1003 badTotalLengthPkts 1004 The total number of input datagrams with bad length 1005 1006 uint64 1007 1008 1009 badTTLPkts 1010 The total number of input datagrams with bad TTL 1011 1012 uint64 1013 1014 1015 badChecksum 1016 The total number of input datagrams with bad checksum 1017 1018 uint64 1019 1020 1021 1022 1023 NextHopFlagsType 1024 1025 Flags to define different nexthop behaviors 1026 1027 uint32 1028 1029 1030 local 1031 Packets match the nexthop entry with this flag are 1032 delivered to the higher level protocols. 1033 1034 1035 drop 1036 Packets match the nexthop entry with this flag are 1037 to be dropped. 1038 1039 1040 broadcast 1041 The route associated with this nexthop is a 1042 broadcast. 1043 1044 1045 multicast 1046 The route associated with this nexthop is multicast 1047 1048 1049 1050 1051 1052 1053 WeightTableEntryType 1054 1055 Weight table for queues. 1056 1057 1058 QueueID 1059 queue id 1060 uint32 1061 1062 1063 weight 1064 weight of the queue. 1065 uint32 1066 1067 1068 1069 1070 NbrState 1071 1072 IPv6 neighbour entry resolution state. 1073 1074 uchar 1075 1076 1077 INCOMPLETE 1078 Address resolution is being performed on the entry. 1079 Specifically, a Neighbor Solicitation has been sent to 1080 the solicited-node multicast address of the target, 1081 but the corresponding Neighbor Advertisement has not 1082 yet been received. 1083 1084 1085 REACHABLE 1086 Positive confirmation was received within the last 1087 ReachableTime milliseconds that the forward path to the 1088 neighbor was functioning properly. While REACHABLE, no 1089 special action takes place as packets are sent. 1090 1091 1092 STALE 1093 More than ReachableTime milliseconds have elapsed 1094 since the last positive confirmation was received that 1095 the forward path was functioning properly. While 1096 stale, no action takes place until a packet is sent. 1097 The STALE state is entered upon receiving an 1098 unsolicited Neighbor Discovery message that updates 1099 the cached link-layer address. Receipt of such a 1100 message does not confirm reachability, and entering 1101 the STALE state insures reachability is verified 1102 quickly if the entry is actually being used. However, 1103 reachability is not actually verified until the entry 1104 is actually used. 1105 1106 1107 DELAY 1108 More than ReachableTime milliseconds have elapsed 1109 since the last positive confirmation was received that 1110 the forward path was functioning properly, and a 1111 packet was sent within the last DELAY_FIRST_PROBE_TIME 1112 seconds. If no reachability confirmation is received 1113 within DELAY_FIRST_PROBE_TIME seconds of entering the 1114 DELAY state, send a Neighbor Solicitation and change 1115 the state to PROBE. 1116 1117 1118 PROBE 1119 A reachability confirmation is actively sought by 1120 retransmitting Neighbor Solicitations every 1121 RetransTimer milliseconds until a reachability 1122 confirmation is received. 1123 1125 1126 1127 1128 1129 ArpTableEntryType 1130 1131 Arp entry. 1132 1133 1134 Index 1135 Index of the arp table. 1136 uint32 1137 1138 1139 NeighborIP 1140 IP address of the neighbour. 1141 IPv4Addr 1142 1143 1144 SrcMac 1145 Source MAC. 1146 IEEEMAC 1147 1148 1149 NeighborMac 1150 Mac of the Neighbor. 1151 IEEEMAC 1152 1153 1154 State 1155 State of the address resolution progress. 1156 ArpStateType 1157 1158 1159 1160 1161 NbrTableEntryType 1162 1163 IPv6 neighbour table entry. 1164 1165 1166 Index 1167 Index of the arp table. 1168 uint32 1169 1170 1171 NeighborIPv6 1172 IP address of the neighbour. 1173 IPv6Addr 1174 1175 1176 SrcMac 1177 Source MAC. 1178 IEEEMAC 1179 1180 1181 NeighborMac 1182 Mac of the Neighbor. 1183 IEEEMAC 1184 1185 1186 State 1187 State of the entry's resolution progress. 1188 NbrState 1189 1190 1191 1192 1193 DCHostTableEntryTypev4 1194 1195 Direct connected arp table entry for IPv4. 1196 1197 1198 NeighbourIP 1199 IP address of the neighbour. 1200 IPv4Addr 1201 1202 1203 SrcMac 1204 Source MAC. 1205 IEEEMAC 1206 1207 1208 NeighborMac 1209 Mac of the Neighbor. 1210 IEEEMAC 1211 1212 1213 1214 1215 DCHostTableEntryTypev6 1216 1217 Direct connected arp table entry for IPv6. 1218 1219 1220 NeighbourIPv6 1221 IP address of the neighbour. 1222 IPv6Addr 1223 1224 1225 SrcMac 1226 Source MAC. 1227 IEEEMAC 1228 1229 1230 NeighborMac 1231 Mac of the Neighbor. 1232 IEEEMAC 1233 1234 1235 1236 1237 IPPacketType 1238 1239 The packet type code. 1240 1241 uchar 1242 1243 1244 IPv4Ucast 1245 IPv4 unicast packet. 1246 1247 1248 IPv4Mcast 1249 IPv4 multicast packet. 1250 1251 1252 IPv6Ucast 1253 IPv6 unicast packet. 1254 1255 1256 IPv6Mcast 1257 IPv6 multicast packet. 1258 1259 1260 1261 1262 1263 IPDispatchTableType 1264 1265 The dispatch table type. 1266 1267 1268 IPPacketType 1269 The type of the packet.IPv4Uncast,IPv6Ucast, 1270 IPv4Mulcast,IPv6Mulcast etc. 1271 IPPacketType 1272 1273 1274 index 1275 The index of the output group to output the packets 1276 1277 uint32 1278 1279 1280 1281 1282 MetaType 1283 Metadata type definition. 1284 1285 1286 MetadataID 1287 The ID of the metadata,the value is standardalized in 1288 the corresponding LFB definition RFCs. 1289 uint32 1290 1291 1292 MetadataName 1293 The name of the metadata. 1294 String 1295 1296 1297 1298 1299 MetadataClassTableType 1300 1301 The meta data classifying table. 1302 1303 1304 value 1305 Value of the meta data. 1306 uint32 1307 1308 1309 index 1310 The index of the port in the output group to use for 1311 outputing the packets. 1312 uint32 1313 1314 1315 1316 1317 LinkEncapType 1318 1319 Encapsulation type. 1320 1321 uchar 1322 1323 1324 Link 1325 Link layer encapsulation such as Ethernet and PPP. 1326 1327 1328 1329 InterFE 1330 Inter FE communication encapsulation. 1331 1332 1333 Tunnel 1334 Tunnel encapsulation such as IP-in-IP. 1335 1336 1337 1338 1339 1340 IPAddress 1341 1342 IP layer address. 1343 1344 1345 Ipv4 1346 IPv4 address. 1347 IPv4Addr 1348 1349 1350 Ipv6 1351 IPv6 address. 1352 IPv6Addr 1353 1354 1355 1356 1357 ArpStateType 1358 1359 The arp entry state. 1360 1361 uchar 1362 1363 1364 Manual 1365 The entry is manually set. 1366 1367 1368 InSolicit 1369 The peer's level 2 address is still in requesting. 1370 1371 1372 1373 Valid 1374 The address resolution have been completed 1375 successfully.Now it can be used in the data packets forwarding 1376 1377 1378 1379 1380 1381 1382 MatchTargetType 1383 1384 1385 Indicator for the kind of field to be matched by this 1386 entry in a classifier. 1387 1388 uchar 1389 1390 1391 MatchNone 1392 A matcher against no field 1393 1394 1395 MatchMetaData 1396 A matcher against a metadata item 1397 1398 1399 MatchPacketField 1400 A matcher that works against an identified packet 1401 field. 1402 1403 1404 MatchOffsetLength 1405 1406 The match target is a specified portion of the packet. 1407 1408 1409 1410 1411 1412 1413 MatchTargetIdentifier 1414 1415 1416 Identify the specific target of a match condition. 1417 1418 1419 1420 MetaDataID 1421 The ID of a metadata item 1422 uint32 1423 1424 1425 packetFieldID 1426 1427 The identifier for a packet Field, such as SA, DA, 1428 Protocol, SPort, DPort, etc. These identifiers allow 1429 references to fields with varialbe amounts before them. 1430 1431 uint32 1432 1433 1434 OffSetLengthPacketField 1435 1436 A field in the packet identified by its offset and 1437 length in bits. This does not allow for matching fields 1438 whose position depends upon earlier field sizes. 1439 1440 1441 1442 fieldOffset 1443 The offset in bits from the start of the packet 1444 to the start of the field. 1445 uint32 1446 1447 1448 fieldLength 1449 The length of the field, in bits 1450 uint32 1451 1452 1453 1454 1455 1456 1457 MatchBitString 1458 1459 A bit string for use in a match condition. 1460 1461 1462 MatchBits 1463 The bits to match 1464 octetstring[16] 1465 1466 1467 MatchLength 1468 The number of bits to match 1469 uchar 1470 1471 1472 1473 1474 1475 MatchCondition 1476 Structure for a single condition to be applied 1477 1478 1479 TargetType 1480 The category of target to match 1481 MatchTargetType 1482 1483 1484 TargetID 1485 The specific target to compare 1486 MatchTargetIdentifier 1487 1488 1489 MatchType 1490 The kind of match to apply. 1491 MatchConditionType 1492 1493 1494 MatchParamOne 1495 The first parameter for the match 1496 1497 MatchBitString 1498 1499 1500 MatchParamTwo 1501 The second parameter for the match 1502 1503 MatchBitString 1504 1505 1506 1507 1508 MatchConditiontType 1510 1511 1512 Indicator for the kind of match condition to be applied. 1513 1514 1515 uchar 1516 1517 1518 MatchNone 1519 A matcher which always fails 1520 1521 1522 MatchExact 1523 1524 The target and the match value must be the same, with no 1525 padding. Only the first value of the match condition is 1526 used. The first match value must be occur. 1527 1528 1529 1530 MatchLeft 1531 1532 The target must begin with the first match value. 1533 If there is a second match value, the remainder of the 1534 target must match repeated occurrances of the second 1535 value. Thus, this can be used to allow any terminal 1536 content, or specific ending pad. The first match value 1537 must occur. 1538 1539 1540 MatchRight 1541 1542 The target must end with the first match value. 1543 If there is a second match value, the preceding part 1544 of the target must match repeated occurrances of the 1545 second value. Thus, this can be used to allow any 1546 leading content, or specific leading fill. The first 1547 match value must occur. 1548 1549 1550 MatchRange 1551 1552 The match values will be considered as numbers, and 1553 the target must be greater than or equal to the 1554 first match value, and less than or equal to the 1555 second match value. An omitted match value means 1556 that end of the range is unlimitted. 1557 1558 1559 MatchMaskedValue 1560 1561 The target the the first value are each anded with the 1562 second value. The match succeeds if the results of these 1563 and operations are identical. Both values are required. 1564 1565 1566 1567 MatchSucceed 1568 A Match which always succeeds 1569 1570 1571 1572 1573 1574 1575 MatchMetaDataAction 1576 1577 An action to set a metadata item to either a specific value 1578 or a field from the incoming meta data or packet. 1579 1580 1581 MetaDataToSet 1582 The Meta Data Item to set 1583 uint32 1584 1585 1586 ExplicitValueToSet 1587 A value to set the metadata to 1588 1589 octetstring[16] 1590 1591 1592 ValueFromCondition 1593 1594 This is an index into the corresponding match conditions, 1595 and the meta data will be set to the value that was tested 1596 by that condition. 1597 1598 uint32 1599 1600 1601 1602 1603 NextHopIndex 1604 1605 An index used by the next hop table. 1607 Typically stored in and generated as metadata by 1608 the longest-prefix-match LFB. 1609 int32 1610 1611 1613 4.3. MetaDataDefs 1615 The following MetaData Types are defined: 1617 1. NextHopID - An index into a Next Hop entry in Nexthop table. 1619 2. ExceptionID - Exception Types. 1621 3. IngressPort - At which interface the packet arrive. 1623 4. EgressPort - The interface out which the packet will emmit. 1625 5. NextHopIP - Nexthop IPv4 address. 1627 6. NexthopIPv6 - Nexthop IPv6 address. 1629 7. PacketLength - The length of the packet in octets. 1631 8. IPPacketType - Type of the packet. 1633 9. QueueID - The queue ID. 1635 10. QueueOperationCmd - The type of operation on the queue,there are 1636 two types defined here: enqueue and dequeue. 1638 11. SrcFEID - Source FE ID. 1640 12. DstFEID - Destination FE ID. 1642 13. NexthopIndex - Next hop index into the link layer address 1643 resolution table. 1645 14. NHEncapMethod - How should the following LFBs do to encapsulate 1646 the packets. 1648 15. ErrorId - Error Type. 1650 1651 1652 NextHopID 1653 An index into a Next Hop entry in Nexthop table 1654 1 1655 NextHopIndex 1656 1657 1658 ExceptionID 1659 1660 Exception Types 1661 2 1662 1663 uint32 1664 1665 1666 Options 1667 Packets with options,for IPv6 Packet with 1668 next-header set to hop-by-hop header(0). 1669 1670 1671 LengthMismatch 1672 The packet length reported by link layer is less 1673 than the total length field. 1674 1675 1676 BadTTL 1677 The packet can't be forwarded as the TTL has 1678 expired. 1679 1680 1681 Multicast 1682 Packet received is a multicast packet. 1683 1684 1685 FragRequired 1686 The MTU for outgoing interface is less than the 1687 packet size. 1688 1689 1690 Redirect 1691 The outgoing port is same as the one on which the 1692 packet is received. 1693 1694 1695 LocalDelivery 1696 The packet is for a local interface. 1697 1698 1699 LimitedBroadcast 1700 The packet received as limited broadcast 1701 1703 1704 1705 1706 1707 IngressPort 1708 At which interface the packet arrive. 1709 3 1710 ifIndex 1711 1712 1713 EgressPort 1714 The interface out which the packet will emmit. 1715 4 1716 ifIndex 1717 1718 1719 NextHopIP 1720 1721 Nexthop IPv4 address 1722 5 1723 IP4Addr 1724 1725 1726 NexthopIPv6 1727 1728 Nexthop IPv6 address 1729 6 1730 IPv6Addr 1731 1732 1733 PacketLength 1734 The length of the packet in octets. 1735 7 1736 uint32 1737 1738 1739 IPPacketType 1740 1741 Type of the packet 1742 8 1743 1744 uint32 1745 1746 1747 IPv4 1748 IPv4 packet 1749 1750 1751 IPv6 1752 IPv6 packet 1753 1754 1755 TaggedFrame 1756 packet with metadata 1757 1758 1759 MetaDataFrame 1760 meta data only 1761 1762 1763 1764 1765 1766 QueueID 1767 1768 The queue ID 1769 9 1770 uint32 1771 1772 1773 QueueOperationCmd 1774 1775 The type of operation on the queue,there are two types 1776 defined here: enqueue and dequeue. 1777 10 1778 1779 uchar 1780 1781 1782 Enqueue 1783 Enqueue command. 1784 1785 1786 Dequeue 1787 Dequeue command. 1788 1789 1790 1791 1792 1793 SrcFEID 1794 Source FE ID. 1795 11 1796 uint32 1797 1798 1799 DstFEID 1800 Destination FE ID. 1801 12 1802 uint32 1803 1804 1805 NexthopIndex 1806 1807 Nexthop index into the link layer address resolution 1808 table. 1809 13 1810 uint 1811 1812 1813 NHEncapMethod 1814 1815 how should the following LFBs do to encapsulate the 1816 packets,such as link encapsulation which means the packets need to 1817 encapsulate link layer header before sending to media;inter FE 1818 communication encapsulation which means the packets need to first 1819 encapsulate inter FE communication header before transimiting to 1820 other FEs;tunnel encapsulation which means the packet need do extra 1821 tunnel encapsulation before sending out to media. 1822 14 1823 LinkEncapType 1824 1825 1826 ErrorId 1827 1828 Error Type. 1829 15 1830 1831 int32 1832 1833 1834 WrongIpVersion 1835 the IP version wrong 1836 1837 1838 WrongLength 1839 1840 the packet length is not as long as 1841 the header indicates 1842 1843 1844 otherError 1845 The errors we not defined now 1846 1848 1849 1850 1851 1852 5. LFB Descriptions 1854 As specified in section 3.1.2 the LFBs have been grouped together for 1855 better understanding. The following groups have been created 1857 1. Core LFBs, including FE Object LFB and FE Protocol LFB. 1859 2. Port LFBs. These LFBs are intended to provide media and 1860 encapsulation oriented capabilities associated with an interface. 1861 The interfaces may be between FEs inside NE or to the outside 1862 world. Allowing for the complicated features of different 1863 interface technology. 1865 3. Address LFBs. LFBs to model Addresses like IPv4, IPv6 addresses. 1867 4. Forwarding LFBs. LFBs to model the IPv4 and IPv6 forwarding 1868 function, e.g., IPv4Validor LFB, IPv4UcastLPM LFB, 1869 IPv4NextHopApplicator LFB, ARP LFB, ICMPProc LFB, OptionProc LFB, 1870 IPv6Validator LFB, IPv6UcastLPM LFB, ExtendHeaderProc LFB, 1871 IPv6NexthopApplicator LFB,IPv6AddrResolutionLFB LFB, ICMPv6Proc 1872 LFB. 1874 5. Queue manager and scheduler LFBs. LFB that model queues and 1875 schedulers. A basic queue LFB and scheduler LFB are defined. 1876 Queues and scheduler can be cascaded together to build more 1877 complicated schedulers. 1879 6. Miscellanious LFBs. LFBs that capture the functionality broadly 1880 used in FEs but are not part of any category, e.g., RedirectSink 1881 LFB, RedirectSource LFB, MetaClassifier LFB, GeneralClassifier 1882 LFB. 1884 5.1. Core LFBs 1886 Currently there are only two core LFBs defined. These two LFBs are 1887 core LFBs for ForCES. It's required that each FE must implement 1888 these two LFBs for CE to control it. 1890 1. FEObjectLFB 1892 2. FEProtocolLFB 1894 5.1.1. FEObject LFB 1896 The FEObject LFB is described in detail in the FE-MODEL 1897 [I-D.ietf-forces-model]. The reader is refered there for further 1898 detail. 1900 5.1.2. FEProtocol LFB 1902 The FEProtocol LFB is described in detail in the FE-protocol 1903 [I-D.ietf-forces-protocol]. The reader is refered there for further 1904 detail. 1906 5.2. Port LFBs 1908 The Port LFBs that are defined in this library are: 1910 1. GenericConnectivityLFB 1912 2. EtherPort 1914 3. EtherDecap 1916 4. EtherEncap 1918 5.2.1. GenericConnectivityLFB 1920 This LFB Class provides a generic basis for representing connectivity 1921 between the FE and the outside world. The LFB has one or more ports 1922 for packets that the FE processing logic is forwrding for 1923 transmission by this Connectivity LFB. It has one or more ports for 1924 packets that the Connectivity LFB has received and is handing to the 1925 FE processing logic. Multiple ports for handline packets are 1926 supported so that protocol specific encapsulation and demultiplexing 1927 can be provided by this LFB. This LFB also has ports for sending 1928 packets to lower layer Connectivity LFBs and receiving packets from 1929 such lower layer Connectivity LFBs. This enables support for the 1930 processing components of interface stacks, such as PPP over Ethernet 1931 or Ethernet over MPLS. For packets arriving from Media or lower 1932 layer connectivity, this LFB will perform appropriate media 1933 validation, then remove media specific headers, and place the 1934 relevant information in meta-data. For ethernet, the Source MAC 1935 would be in meta-data. For Frame Relay or ATM, a circuit identifier 1936 would be in meta-data. For Ethernet with VLANs, this meta-data would 1937 indicate which VLAN the packet came from. For packets to be 1938 transmitted, meta-data indicating the destination (destination MAC or 1939 outgoing circuit, etc.) is required. This LFB will also include 1940 statistical components such as the number of octets and packets sent 1941 and received, the number of various input and output errors, etc. 1943 5.2.2. EtherPort 1945 LFB for Ethernet ports 1947 5.2.3. EtherDecap 1949 An LFB class for definition of Ethernet decapsulation and Ethernet 1950 filtering functions. 1952 5.2.4. EtherEncap 1954 An LFB classifier definition for completes ethernet encapsulation 1955 fuctions. 1957 5.3. Address LFBs 1959 The Address LFBs that are defined in this library are: 1961 1. IPv6AddrResolution 1963 2. Arp 1965 3. ICMPGenerator 1967 4. ICMPv6Generator 1969 5. IPv4Validator 1971 6. IPv6Validator 1973 5.3.1. IPv6AddrResolution 1975 This LFB class provides the function of IPv6 address resolution part 1976 of neighbor discovery protocol.It provides an offload of ND protocol 1977 processing to FE.It process the following ND messages:neighbour 1978 solicitation and neighbour advertisement. 1980 5.3.2. Arp 1982 This LFB class provides the function of address resolution for IPv4 1983 nodes. 1985 5.3.3. ICMPGenerator 1987 This LFB class provide some basic ICMP function,it only generate the 1988 following ICMP messages:ICMP destination unreachable and time 1989 excceeded. 1991 5.3.4. ICMPv6Generator 1993 This LFB class provide some basic ICMPv6 function,it only generate 1994 the following ICMP messages for the packets that need some basic icmp 1995 processing:destination not reachable and time excceeded. 1997 5.3.5. IPv4Validator 1999 An LFB Class definition for validates the IPv4 packet. 2001 This LFB validates the IP version and header length fields, including 2002 verifying that the packet length is at least as long as the header 2003 indicates. 2005 5.3.6. IPv6Validator 2007 An LFB Class definition for validates the IPv6 packet. 2009 This LFB validates the IP version and header length fields, including 2010 verifying that the packet length is at least as long as the header 2011 indicates. 2013 5.4. Forwarding LFBs 2015 The Forwarding LFBs that are defined in this library are: 2017 1. IPv4UcastLPM 2019 2. IPv4NextHopApplicator 2021 3. IPv6UcastLPM 2023 4. IPv6UcastNexthopApplicator 2025 5.4.1. IPv4UcastLPM 2027 IPv4 Longest Prefix Match Lookup LFB 2029 5.4.2. IPv4NextHopApplicator 2031 An LFB definition for applicating next hop action to IPv4 packets,the 2032 actions include:TTL operation,checksum recalculation. 2034 5.4.3. IPv6UcastLPM 2036 An LFB class definition for IPv6 longest prefix lookup function. 2038 5.4.4. IPv6UcastNexthopApplicator 2040 An LFB for applicating next hop action to IPv6 packets,actions mainly 2041 inlcude TTL incrementation and checksum recalculation. 2043 5.5. Queue and scheduler LFBs 2045 To build an actual forwarder, one must include some limited for of 2046 queueing and scheduling. Queues are entities which store packets. 2047 Schedulers are entities which react to the state of queues and cause 2048 packets to be emitted from queues. 2050 The actual interaction between queues and schedulers (and their real 2051 world degree of separation) is quite complex. A very complex LFB 2052 model would be required to represent all the complexity. 2053 Additionally, there is the issue of representing the relationship 2054 between the queue and the scheduler. A simple approach has been 2055 taken in these class definitions. 2057 A queue element consists of an input port (called InData) on which it 2058 receives data packets, and output port (called OutData) on which it 2059 will send packets when permitted by its definition or the scheduler. 2060 Its relationship to scheduluers is represented by a set of output 2061 ports (the group OutCountrol) and an input port (called InControl). 2062 These ports are defined to carry packets consisting only of meta- 2063 data. In fact, these ports are an abstraction, and what one might 2064 call a legal fiction. An element of the OutControl group represents 2065 the fact that a scheduler is aware of the state of that queue 2066 element. The InControl port represents the fact that one or more 2067 schedulers connected to that port are controlling that queue. There 2068 is no meta-data defined for actual exchange on these ports, as their 2069 real world realization is highly implementation dependent. To 2070 complete this picture, a schedule has a group of input ports 2071 (Watchers) representing the connectivity to queues it is aware of, 2072 and a group of output ports (Controllers) representing control over 2073 queues. This allows for the simple case of a controller who monitors 2074 and controls a single set of queues, and more interesting cases where 2075 the control of certain queues may depend upon the state of queues 2076 whihc are not under the control of the scheduler. 2078 The Queues and schedulers LFBs that are defined in this library are: 2080 1. Scheduler 2082 2. Queue 2084 3. WRRSched 2086 5.5.1. Scheduler 2088 This defines a base LFB class for schedulers. Schedulers have an 2089 Input Port group called Watchers for representing the queues they 2090 watch, and an Output Port group called Controllers fro representing 2091 the queues they control. 2093 5.5.2. Queue 2095 Queues have a packet input, a packet output, a control input, and a 2096 group of control outputs. The control ports represent the control 2097 relationships with scheduluers. 2099 5.5.3. WRRSched 2101 Weighted round robin scheduler. 2103 5.6. Miscellanious LFBs 2105 The Miscellanious LFBs that are defined in this library are: 2107 1. ExtendHeaderProc 2109 2. MetadataClassifier 2111 3. OptionProc 2113 4. RedirectLFB 2115 5. PacketTrimmer 2117 6. Duplicator 2119 7. ArbitraryClassifierLfb 2121 5.6.1. ExtendHeaderProc 2123 This LFB class process the IPv6 packet with extended header,For the 2124 moment,the packets to this LFB are redirect to RedirectSink LFB by 2125 default. 2127 5.6.2. MetadataClassifier 2129 This LFB class provides the function of classify packets according to 2130 the meta data.Now it only works on one meta data. 2132 5.6.3. OptionProc 2134 This LFB class process the IPv4 packet with options,it can process on 2135 the following options:Router-alert option. 2137 5.6.4. RedirectLFB 2139 An LFB Class definition for exchanging data packets between the FE 2140 and the CE. 2142 This LFB represents a point of exchagne of data packets between the 2143 CE and the FE. Packets with meta-data are exchanged. It is expected 2144 that the output port of a RedirectLFB, if it is connected at all, 2145 will be connected to a meta-data redirector. 2147 5.6.5. PacketTrimmer 2149 LFB removes data from the front of a packet. 2151 5.6.6. Duplicator 2153 An LFB Class definition for packet duplicator LFB. Any packet 2154 received on an input port is logically copied and sent to all output 2155 ports. 2157 5.6.7. ArbitraryClassifierLFB 2159 This is a class definition for an Arbitrary Classifier LFB. The 2160 input is a port group, and the match conditions can include the port 2161 in their test. This allows the topology to carry some information if 2162 desired. The match conditions can select an output from the 2163 SuccessOuput output port group. If no condition matches, the packet 2164 will be sesnt to the FailOutput port. 2166 6. LFB Library Definition 2168 2169 2173 2174 2175 EthernetII 2176 an Ethernet II frame type 2177 2178 2179 Ethernet802.3 2180 An Ethernet 802.3 frame type 2181 2182 2183 Ethernet802.2 2184 An Ethernet 802.2 frame type 2185 2186 2187 Ethernet802.2SNAP 2188 An Ethernet 802.2 with SNAP frame 2189 2190 2191 IPv4Frame 2192 An IPv4 packet 2193 2194 2195 IPv6Frame 2196 An IPv6 packet 2197 2198 2199 taggedFrame 2200 A frame of any type with associated metadata 2201 2202 2203 MetadataFrame 2204 Frame only contains meta data 2205 2206 2207 Arbitrary 2208 Any kind of frame except Metadata Frame. 2209 2210 2211 2212 2213 ifIndex 2214 A Port Identifier 2215 uint32 2216 2217 2218 IEEEMAC 2219 IEEE MAC Address 2220 byte[6] 2221 2222 2223 NetSpeedType 2224 Network speed values 2225 2226 uint32 2227 2228 2229 LAN_SPEED_10M 2230 10M Ethernet 2231 2232 2233 LAN_SPEED_100M 2234 100M Ethernet 2235 2236 2237 LAN_SPEED_1G 2238 1000M Ethernet 2239 2240 2241 LAN_SPEED_10G 2242 10G Ethernet 2243 2244 2245 LAN_SPEED_AUTO 2246 LAN speed auto 2247 2248 2249 2256 2257 2258 2259 IEEENegotiationType 2260 IEEENegotiation types 2261 2262 uint32 2263 2264 2265 Auto 2266 Auto negotitation. 2267 2268 2269 Half-duplex 2270 port negotitation half duplex 2271 2272 2273 Full-duplex 2274 port negotitation full duplex 2275 2276 2277 2278 2279 2280 2281 PortStatsType 2282 Port statistics 2283 2284 2285 InUcastPkts 2286 Number of unicast packets received 2287 uint64 2288 2289 2290 InMulticastPkts 2291 Number of multicast packets received 2292 uint64 2293 2294 2295 InBroadcastPkts 2296 Number of broadcast packets received 2297 uint64 2298 2299 2300 InOctets 2301 number of octets received 2302 uint64 2303 2304 2305 OutUcastPkts 2306 Number of unicast packets transmitted 2307 uint64 2308 2309 2310 OutMulticastPkts 2311 Number of multicast packets transmitted 2312 uint64 2313 2314 2315 OutBroadcastPkts 2316 Number of broadcast packets transmitted 2317 uint64 2318 2319 2320 OutOcetes 2321 Number of octets transmitted 2322 uint64 2323 2324 2325 InErrorPkts 2326 Number of input error packets 2327 uint64 2328 2329 2330 OutErrorPkts 2331 Number of output error packets 2332 uint64 2333 2334 2335 2336 2337 2338 PortStatusValues 2339 2340 The possible values of status. Used for both 2341 administrative and operation status 2342 2343 2344 uchar 2345 2346 2347 Disabled 2348 the port is operatively disabled. 2349 2350 2351 UP 2352 the port is up. 2353 2354 2355 Down 2356 The port is down. 2358 2359 2360 2361 2362 2363 2364 LocalIpAddrType 2365 Local IP address belonging to FE. 2366 2367 2368 FEID 2369 The FE on which the port ip resides 2370 uint32 2371 2372 2373 2374 IfIndex 2375 port index on the specified FE 2376 uint32 2377 2379 2380 2381 IPaddr 2382 IP address of the port 2383 IPAddr 2384 2385 2386 netmask 2387 netmask of this ip address 2388 IPAddr 2389 2390 2391 BcastAddr 2392 The associated Broadcast address of the ip address 2393 2394 IPAddr 2395 2396 2397 2398 2399 LocalIpv6AddrType 2400 The device local IPv6 address infomation 2401 2402 2403 FEID 2404 The FE on which the port ip resides 2405 uint32 2407 2408 2409 2410 IfIndex 2411 port index on the specified FE 2412 uint32 2413 2415 2416 2417 IPv6addr 2418 IP address of the port 2419 IPv6Addr 2420 2421 2422 prefixlen 2423 prefix length of this ip address 2424 uint32 2425 2426 2427 2428 2429 IPv4Addr 2430 IPv4 address 2431 byte[4] 2432 2433 2434 IPv6Addr 2435 IPv6 address 2436 byte[16] 2437 2438 2439 IPv4Prefix 2440 IPv4 prefix defined by an address and a prefix length 2441 2442 2443 2444 address 2445 Address part 2446 IPv4addr 2447 2448 2449 prefixlen 2450 Prefix length part 2451 2452 uchar 2453 2454 2456 2457 2458 2459 2460 2461 2462 IPv4NextHopInfoType 2463 2464 IPv4 nexthop information,include nexthop ip address, 2465 output FE and interface etc. 2466 2467 2468 NexthopID 2469 nexthop id 2470 uint32 2471 2472 2473 FEID 2474 output FE id 2475 uint32 2476 2477 2478 Egress 2479 output port index 2480 uint32 2481 2482 2483 MTU 2484 The maximum transmition unit of the nexthop link. 2485 2486 uint32 2487 2488 2489 Flags 2490 Associated flags of the nexthop,such as local 2491 delivery,multicast etc. 2492 NextHopFlagsType 2493 2494 2495 NexthopIPaddr 2496 IP address of the nexthop 2497 IPv4Addr 2498 2499 2500 L2Index 2501 index into the L2 link layer table,such as IPv4 ARP 2502 table or IPv6 NBR table. 2503 uint32 2505 2506 2507 EncapNeeded 2508 The type of encapsulation needed on the packet. 2509 2510 LinkEncapType 2511 2512 2513 2514 2515 IPv4FibEntryType 2516 2517 IPv4 forwarding table entry. 2518 2519 2520 prefix 2521 IPv4 prefix. 2522 IPv4Prefix 2523 2524 2525 FEID 2526 output FE id 2527 uint32 2528 2529 2530 Egress 2531 output port index 2532 uint32 2533 2534 2535 MTU 2536 The maximum transmition unit of the nexthop link. 2537 2538 uint32 2539 2540 2541 Flags 2542 Associated flags of the nexthop,such as local 2543 delivery,multicast etc. 2544 NextHopFlagsType 2545 2546 2547 NexthopIPaddr 2548 IP address of the nexthop 2549 IPv4Addr 2550 2551 2552 L2Index 2553 index into the L2 link layer table,such as IPv4 ARP 2554 table or IPv6 NBR table. 2555 uint32 2556 2557 2558 EncapNeeded 2559 The type of encapsulation needed on the packet. 2560 2561 LinkEncapType 2562 2563 2564 2565 2566 IPv4PrefixTableEntry 2567 2568 IPv4 prefix table entry 2569 2570 2571 Prefix 2572 IPv4 address prefix 2573 IPv4Prefix 2574 2575 2576 NexthopID 2577 Index into the nexthop table. 2578 uint32 2579 2580 2581 2582 2583 IPv4UcastLPMStatisticsType 2584 2585 statistics of IPv4UcastLPM LFB 2586 2587 2588 InRcvdPkts 2589 The total number of input packets received from 2590 interfaces, including those received in error 2591 uint64 2592 2593 2594 FwdPkts 2595 IPv4 packet forwarded by this LFB 2596 uint64 2597 2598 2599 NoRoutePkts 2600 The number of IP datagrams discarded because no 2601 route could be found to transmit them to their destination. 2602 2603 uint64 2604 2605 2606 InDeliverPkts 2607 The total number of input datagrams successfully 2608 delivered to IP user-protocols (including ICMP). 2609 uint64 2610 2611 2612 2613 2614 IPv4ValidatorStatisticsType 2615 2616 IPv4 validator LFB statistics type 2617 2618 2619 badHeaderPkts 2620 The total number of input datagrams with bad ip 2621 header 2622 uint64 2623 2624 2625 badTotalLengthPkts 2626 The total number of input datagrams with bad length 2627 2628 uint64 2629 2630 2631 badTTLPkts 2632 The total number of input datagrams with bad TTL 2633 2634 uint64 2635 2636 2637 badChecksum 2638 The total number of input datagrams with bad 2639 checksum 2640 uint64 2641 2642 2643 2644 2645 IPv6Prefix 2646 IPv6 prefix 2647 2648 2649 IPv6addr 2650 address part of the prefix 2651 IPv6Addr 2652 2653 2654 prefixlen 2655 length of the prefix 2656 uint32 2657 2658 2659 2660 2661 IPv6NextHopInfoType 2662 2663 IPv6 nexthop information,include nexthop ip address, 2664 output FE and interface etc. 2665 2666 2667 NexthopID 2668 nexthop id 2669 uint32 2670 2671 2672 FEID 2673 output FE id 2674 uint32 2675 2676 2677 Egress 2678 output port index 2679 uint32 2680 2681 2682 MTU 2683 The maximum transmition unit of the nexthop link. 2684 2685 uint32 2686 2687 2688 Flags 2689 Associated flags of the nexthop,such as local 2690 delivery,multicast etc. 2691 NextHopFlagsType 2692 2693 2694 NexthopIPv6addr 2695 IP address of the nexthop 2696 IPv6Addr 2698 2699 2700 L2Index 2701 index into the L2 table 2702 uint32 2703 2704 2705 EncapNeeded 2706 The type of encapsulation needed on the packet. 2707 2708 LinkEncapType 2709 2710 2711 2712 2713 IPv6PrefixTableEntry 2714 2715 IPv6 prefix table entry 2716 2717 2718 Prefix 2719 IPv6 address prefix 2720 IPv6Prefix 2721 2722 2723 NexthopID 2724 index to the nexthop table. 2725 uint32 2726 2727 2728 2729 2730 IPv6LPMClassiferStatisticsType 2731 2732 statistics of IPv6LPMClassifier LFB 2733 2734 2735 InRcvdPkts 2736 The total number of input packets received from 2737 interfaces, including those received in error 2738 uint64 2739 2740 2741 FwdPkts 2742 IPv4 packet forwarded by this LFB 2743 uint64 2744 2745 2746 NoRoutePkts 2747 The number of IP datagrams discarded because no 2748 route could be found to transmit them to their destination. 2749 2750 uint64 2751 2752 2753 InDeliverPkts 2754 The total number of input datagrams successfully 2755 delivered to IP user-protocols (including ICMP). 2756 uint64 2757 2758 2759 2760 2761 IPv6ValidatorStatisticsType 2762 2763 IPv6 validator LFB statistics type 2764 2765 2766 badHeaderPkts 2767 The total number of input datagrams with bad ip 2768 header 2769 uint64 2770 2771 2772 badTotalLengthPkts 2773 The total number of input datagrams with bad length 2774 2775 uint64 2776 2777 2778 badTTLPkts 2779 The total number of input datagrams with bad TTL 2780 2781 uint64 2782 2783 2784 badChecksum 2785 The total number of input datagrams with bad 2786 checksum 2787 uint64 2788 2789 2790 2791 2792 NextHopFlagsType 2793 2794 Flags used to define different nexthop behaviors 2795 2796 2797 uint32 2798 2799 2800 local 2801 Packets match the nexthop entry with this flag 2802 are delivered to the higher level protocols. 2803 2804 2805 drop 2806 Packets match the nexthop entry with this flag 2807 are to be dropped. 2808 2809 2810 broadcast 2811 The route associated with this nexthop is a 2812 broadcast. 2813 2814 2815 multicast 2816 The route associated with this nexthop is 2817 multicast. 2818 2819 2820 2821 2822 2823 WeightTableEntryType 2824 2825 Weight table for queues. 2826 2827 2828 QueueID 2829 queue id 2830 uint32 2831 2832 2833 weight 2834 weight of the queue. 2835 uint32 2836 2837 2838 2839 2840 NbrState 2841 2842 IPv6 neighbour entry resolution state. 2843 2844 uchar 2845 2846 2847 INCOMPLETE 2848 Address resolution is being performed on entry. 2849 Specifically,a Neighbor Solicitation has been sent to the 2850 solicited-node multicast address of the target, but the 2851 corresponding Neighbor Advertisement has not yet been 2852 received. 2853 2854 2855 REACHABLE 2856 Positive confirmation was received within the 2857 last reachableTime milliseconds that the forward path to 2858 the neighbor was functioning properly. While reachable, no 2859 special action takes place as packets are sent. 2860 2861 2862 STALE 2863 More than ReachableTime milliseconds have elapsed 2864 since the last positive confirmation was received that the 2865 forward path was functioning properly. While STALE, no 2866 action takes place until a packet is sent. The STALE state 2867 is entered upon receiving an unsolicited Neighbor Discovery 2868 message that updates the cached link-layer address. Receipt 2869 of such a message does not confirm reachability, and 2870 entering the STALE state insures reachability is verified 2871 quickly if the entry is actually being used. However, 2872 reachability is not actually verified until the entry is 2873 actually used. 2874 2875 2876 DELAY 2877 More than ReachableTime milliseconds have elapsed 2878 since the last positive confirmation was received that the 2879 forward path was functioning properly, and a packet was 2880 sent within the last DELAY_FIRST_PROBE_TIME seconds. If no 2881 reachability confirmation is received within 2882 DELAY_FIRST_PROBE_TIME seconds of entering the DELAY state, 2883 send a Neighbor Solicitation and change the state to PROBE. 2884 2885 2886 2887 PROBE 2888 A reachability confirmation is actively sought by 2889 retransmitting Neighbor Solicitations every RetransTimer 2890 milliseconds until a reachability confirmation is received. 2891 2892 2893 2894 2895 2896 2897 ArpTableEntryType 2898 2899 Arp entry. 2900 2901 2902 Index 2903 Index of the arp table. 2904 uint32 2905 2906 2907 NeighborIP 2908 IP address of the neighbour. 2909 IPv4Addr 2910 2911 2912 SrcMac 2913 Source MAC. 2914 IEEEMAC 2915 2916 2917 NeighborMac 2918 Mac of the Neighbor. 2919 IEEEMAC 2920 2921 2922 State 2923 State of the address resolution progress 2924 ArpStateType 2925 2926 2927 2928 2929 NbrTableEntryType 2930 2931 IPv6 neighbour table entry. 2932 2933 2934 Index 2935 Index of the arp table. 2936 uint32 2937 2938 2939 NeighborIPv6 2940 IP address of the neighbour. 2941 IPv6Addr 2942 2943 2944 SrcMac 2945 Source MAC. 2946 IEEEMAC 2947 2948 2949 NeighborMac 2950 Mac of the Neighbor. 2951 IEEEMAC 2952 2953 2954 State 2955 State of the entry's resolution progress 2956 NbrState 2957 2958 2959 2960 2961 DCHostTableEntryTypev4 2962 2963 Direct connected arp table entry for IPv4. 2964 2965 2966 NeighbourIP 2967 IP address of the neighbour. 2968 IPv4Addr 2969 2970 2971 SrcMac 2972 Source MAC. 2973 IEEEMAC 2974 2975 2976 NeighborMac 2977 Mac of the Neighbor. 2978 IEEEMAC 2979 2980 2981 2982 2983 DCHostTableEntryTypev6 2984 2985 Direct connected arp table entry for IPv6. 2986 2987 2988 NeighbourIPv6 2989 IP address of the neighbour. 2990 IPv6Addr 2991 2992 2993 SrcMac 2994 Source MAC. 2995 IEEEMAC 2996 2997 2998 NeighborMac 2999 Mac of the Neighbor. 3000 IEEEMAC 3001 3002 3003 3004 3005 IPPacketType 3006 3007 The packet type code. 3008 3009 uchar 3010 3011 3012 IPv4Ucast 3013 IPv4 unicast packet. 3014 3015 3016 IPv4Mcast 3017 IPv4 multicast packet. 3018 3019 3020 IPv6Ucast 3021 IPv6 unicast packet. 3022 3023 3024 IPv6Mcast 3025 IPv6 multicast packet. 3026 3027 3028 3029 3030 3031 IPDispatchTableType 3032 3033 The dispatch table type. 3034 3035 3036 IPPacketType 3037 The type of the packet.IPv4Uncast,IPv6Ucast, 3038 IPv4Mulcast,IPv6Mulcast etc. 3039 IPPacketType 3040 3041 3042 index 3043 The index of the output group to output the packets 3044 3045 uint32 3046 3047 3048 3049 3050 MetaType 3051 Metadata type definition. 3052 3053 3054 MetadataID 3055 The ID of the metadata,the value is standardalized 3056 in the corresponding LFB definition RFCs. 3057 uint32 3058 3059 3060 MetadataName 3061 The name of the metadata. 3062 String 3063 3064 3065 3066 3067 MetadataClassTableType 3068 3069 The meta data classifying table. 3070 3071 3072 value 3073 Value of the meta data. 3074 uint32 3075 3076 3077 index 3078 The index of the port in the output group to use 3079 for outputing the packets. 3080 uint32 3081 3083 3084 3085 3086 LinkEncapType 3087 3088 Encapsulation type. 3089 3090 uchar 3091 3092 3093 Link 3094 Link layer encapsulation such as Ethernet and 3095 PPP. 3096 3097 3098 InterFE 3099 Inter FE communication encapsulation. 3100 3101 3102 Tunnel 3103 Tunnel encapsulation such as IP-in-IP. 3104 3105 3106 3107 3108 3109 IPAddress 3110 3111 IP layer address. 3112 3113 3114 Ipv4 3115 IPv4 address. 3116 IPv4Addr 3117 3118 3119 Ipv6 3120 IPv6 address. 3121 IPv6Addr 3122 3123 3124 3125 3126 ArpStateType 3127 3128 The arp entry state. 3129 3130 uchar 3131 3132 3133 Manual 3134 The entry is manually set. 3135 3136 3137 InSolicit 3138 The peer's level 2 address is still in requesting 3139 3140 3141 3142 Valid 3143 The address resolution have been completed 3144 successfully,it now can be used in the data packets 3145 forwarding. 3146 3147 3148 3149 3150 3151 MatchTargetType 3152 3153 3154 Indicator for the kind of field to be matched by this 3155 entry in a classifier. 3156 3157 3158 uchar 3159 3160 3161 MatchNone 3162 A matcher against no field 3163 3164 3165 MatchMetaData 3166 A matcher against a metadata item 3167 3168 3169 MatchPacketField 3170 A matcher that works against an identified 3171 packet field. 3172 3173 3174 MatchOffsetLength 3175 The match target is a specified portion of the 3176 packet. 3177 3178 3180 3181 3182 3183 MatchTargetIdentifier 3184 3185 3186 Identify the specific target of a match condition. 3187 3188 3189 3190 MetaDataID 3191 The ID of a metadata item 3192 uint32 3193 3194 3195 packetFieldID 3196 The identifier for a packet Field, such as SA, DA, 3197 Protocol, SPort, DPort, etc. These identifiers allow 3198 references to fields with varialbe amounts before them. 3199 3200 uint32 3201 3202 3203 OffSetLengthPacketField 3204 A field in the packet identified by its offset and 3205 length in bits. This does not allow for matching fields 3206 whose position depends upon earlier field sizes. 3207 3208 3209 fieldOffset 3210 The offset in bits from the start of the packet 3211 to the start of the field. 3212 uint32 3213 3214 3215 fieldLength 3216 The length of the field, in bits 3217 uint32 3218 3219 3220 3221 3222 3223 3224 MatchBitString 3225 3226 A bit string for use in a match condition. 3227 3228 3229 MatchBits 3230 The bits to match 3231 octetstring[16] 3232 3233 3234 MatchLength 3235 The number of bits to match 3236 uchar 3237 3238 3239 3240 3241 MatchCondition 3242 3243 3244 structure for a single condition to be applied. 3245 3246 3247 3248 TargetType 3249 The category of target to match 3250 MatchTargetType 3251 3252 3253 TargetID 3254 The specific target to compare 3255 MatchTargetIdentifier 3256 3257 3258 MatchType 3259 The kind of match to apply. 3260 MatchConditionType 3261 3262 3263 MatchParamOne 3264 The first parameter for the match 3265 3266 MatchBitString 3267 3268 3269 MatchParamTwo 3270 The second parameter for the match 3271 3272 MatchBitString 3273 3274 3275 3276 3277 MatchConditiontType 3278 3279 3280 Indicator for the kind of match condition to be applied. 3281 3282 3283 uchar 3284 3285 3286 MatchNone 3287 A matcher which always fails 3288 3289 3290 MatchExact 3291 The target and the match value must be the same, 3292 with no padding.Only the first value of the match condition 3293 is used. The first match value must be occur. 3294 3295 3296 MatchLeft 3297 The target must begin with the first match value. 3298 If there is a second match value, the remainder of the 3299 target must match repeated occurrances of the second value. 3300 Thus, this can be used to allow any terminal content, or 3301 specific ending pad. The first match value must occur. 3302 3303 3304 3305 MatchRight 3306 The target must end with the first match value. 3307 If there is a second match value, the preceding part of the 3308 target must match repeated occurrances of the second value. 3309 Thus, this can be used to allow any leading content, or 3310 specific leading fill. The first match value must occur. 3311 3312 3313 3314 MatchRange 3315 The match values will be considered as numbers, 3316 and the target must be greater than or equal to the first 3317 match value, and less than or equal to the second match 3318 value. An omitted match value means that end of the range 3319 is unlimitted. 3320 3321 3322 MatchMaskedValue 3323 The target the the first value are each anded 3324 with the second value. The match succeeds if the results of 3325 these and operations are identical. Both values are 3326 required. 3327 3328 3329 MatchSucceed 3330 A Match which always succeeds 3331 3332 3333 3334 3335 3336 MatchMetaDataAction 3337 3338 An action to set a metadata item to either a specific 3339 value or a field from the incoming meta data or packet 3340 3341 3342 MetaDataToSet 3343 The Meta Data Item to set 3344 uint32 3345 3346 3347 ExplicitValueToSet 3348 A value to set the metadata to 3349 3350 octetstring[16] 3351 3352 3353 ValueFromCondition 3354 This is an index into the corresponding match 3355 conditions, and the meta data will be set to the value that 3356 was tested by that condition. 3357 3358 uint32 3359 3360 3361 3362 3363 NextHopIndex 3364 An index used by the next hop table.Typically stored in 3365 and generated as metadata by the longest-prefix-match LFB 3366 3367 int32 3368 3369 3370 3371 3372 NextHopID 3373 Index into a Next Hop entry in Nexthop table 3374 1 3375 NextHopIndex 3376 3377 3378 ExceptionID 3379 3380 Exception Types 3381 2 3382 3383 uint32 3384 3385 3386 Options 3387 Packets with options,for IPv6 Packet with 3388 next-header set to hop-by-hop header(0). 3389 3390 3391 LengthMismatch 3392 The packet length reported by link layer is less 3393 than the total length field. 3394 3395 3396 BadTTL 3397 The packet can't be forwarded as the TTL has 3398 expired. 3399 3400 3401 Multicast 3402 The packet received is a multicast packet. 3403 3404 3405 3406 FragRequired 3407 The MTU for outgoing interface is less than the 3408 packet size. 3409 3410 3411 Redirect 3412 The outgoing port is same as the one on which the 3413 packet is received. 3414 3415 3416 LocalDelivery 3417 The packet is for a local interface. 3418 3419 3420 LimitedBroadcast 3421 Packet received as limited broadcast. 3422 3423 3424 3425 3426 3427 IngressPort 3428 At which interface the packet arrive. 3429 3 3430 ifIndex 3431 3432 3433 EgressPort 3434 Interface out which the packet will emmit. 3435 4 3436 ifIndex 3437 3438 3439 NextHopIP 3440 3441 Nexthop IPv4 address 3442 5 3443 IP4Addr 3444 3445 3446 NexthopIPv6 3447 3448 Nexthop IPv6 address 3449 6 3450 IPv6Addr 3451 3452 3453 PacketLength 3454 The length of the packet in octets. 3455 7 3456 uint32 3457 3458 3459 IPPacketType 3460 3461 Type of the packet 3462 8 3463 3464 uint32 3465 3466 3467 IPv4 3468 IPv4 packet 3469 3470 3471 IPv6 3472 IPv6 packet 3473 3474 3475 TaggedFrame 3476 packet with metadata 3477 3478 3479 MetaDataFrame 3480 meta data only 3481 3482 3483 3484 3485 3486 QueueID 3487 3488 The queue ID 3489 9 3490 uint32 3491 3492 3493 QueueOperationCmd 3494 3495 The type of operation on the queue,there are two types 3496 defined here: enqueue and dequeue. 3497 10 3498 3499 uchar 3500 3501 3502 Enqueue 3503 Enqueue command. 3504 3505 3506 Dequeue 3507 Dequeue command. 3508 3509 3510 3511 3512 3513 SrcFEID 3514 Source FE ID. 3515 11 3516 uint32 3517 3518 3519 DstFEID 3520 Destination FE ID. 3521 12 3522 uint32 3523 3524 3525 NexthopIndex 3526 3527 Nexthop index into the link layer address resolution 3528 table. 3529 13 3530 uint 3531 3532 3533 NHEncapMethod 3534 3535 how should the following LFBs do to encapsulate the 3536 packets,such as link encapsulation which means the packets need 3537 to encapsulate link layer header before sending to media;inter FE 3538 communication encapsulation which means the packets need to first 3539 encapsulate inter FE communication header before transimiting to 3540 other FEs;tunnel encapsulation which means the packet need do 3541 extra tunnel encapsulation before sending out to media 3542 14 3543 LinkEncapType 3544 3545 3546 ErrorId 3547 3548 Error Type. 3549 15 3550 3551 int32 3552 3553 3554 WrongIpVersion 3555 the IP version wrong 3556 3557 3558 WrongLength 3559 3560 the packet length is not as long as 3561 the header indicates 3562 3563 3564 3565 otherError 3566 The errors we not defined now 3567 3568 3569 3570 3571 3572 3573 3574 EtherPort 3575 3576 LFB for Ethernet ports 3577 1.0 3578 GenericConnectivityLFB 3579 3580 3581 PacketsFromProcessingUnit 3582 Ports for receiving packets from processing unit 3583 such as NP,that will be sent to media. 3584 3585 3586 EthernetII 3587 3588 3589 OutputPort 3590 3591 3592 3593 3594 PacketsFromMedia 3595 Ports for receiving packets from ethernet media. 3596 3597 3598 3599 EthernetII 3600 3601 3602 3603 3604 3605 3606 PacketsToProcessingUnit 3607 Ports for sending packets to processing unit such 3608 as NP for further processing. 3609 3610 3611 EthernetII 3613 3614 3615 InputPort 3616 3617 3618 3619 3620 PacketsToMedia 3621 Ports for sending packets to media. 3622 3623 3624 EthernetII 3625 3626 3627 3628 3629 3630 3631 IfIndex 3632 A unique value for each interface. Its value ranges 3633 between 1 and the value of total number of interfaces in the 3634 system. The value for each interface must remain constant at 3635 least from one re-initialization of the entity's network 3636 management system to the next re-initialization. 3637 uint32 3638 3639 3640 IfName 3641 Name of this port 3642 string[16] 3643 3644 3645 LinkSpeed 3646 Speed of this port 3647 NetSpeedType 3648 3649 3650 MTU 3651 Maximum transmition unit 3652 uint32 3653 3654 3655 OperaStatus 3656 Operate state of this port. 3657 PortStatusValues 3658 "down" 3659 3660 3661 AdminStatus 3662 Administrator's state of this port 3663 PortStatusValues 3664 "down" 3665 3666 3667 PromiscuousMode 3668 Whether the interface is in promiscuous mode 3669 3670 booleanType 3671 "no" 3672 3673 3674 CarrierStatus 3675 whether the port is linked with an connector. 3676 3677 booleanType 3678 "no" 3679 3680 3681 OperMode 3682 The port operation mode,must be one of the 3683 following values:Auto,Half-duplex,Full-duplex 3684 IEEENegotiationType 3685 "auto" 3686 3687 3688 SrcNegotiationTypeMACAddr 3689 source MAC 3690 IEEEMAC 3691 3692 3693 MacAliasTable 3694 A series of MACs that the port can receive frame 3695 on. 3696 3697 IEEEMAC 3698 3699 3700 3701 StatsEnable 3702 whether enable the statistics in this LFB. 3703 3704 3705 booleanType 3706 "no" 3707 3708 3709 PortStats 3710 port statistics. 3711 3712 PortStatsType 3713 3714 3715 Ipaddr 3716 IP layer Address. 3717 IPAddress 3718 3719 3720 3721 3722 PortStatusChanged 3723 Port status has changed since last time reporting. 3724 3725 3726 OperaStatus 3727 3728 3729 3730 3731 OperaStatus 3732 3733 3734 3735 3736 3737 3738 EtherDecap 3739 3740 An LFB class for definition of Ethernet decapsulation 3741 and Ethernet filtering functions 3742 1.0 3743 GenericConnectivityLFB 3744 3745 3746 PacketsIn 3747 Packets from other LFB. 3748 3749 3750 EthernetII 3751 3752 3753 3754 3755 3756 3757 DecapOut 3758 Ethernet decapsulation output. 3759 3760 3761 Arbitrary 3762 3763 3764 3765 3766 3767 3768 DispatchTable 3769 This table is used for selecting output in the 3770 ouput group for the incoming packet stream. 3771 IPDispatchTableType 3772 3773 3774 3775 3776 IPv4UcastLPM 3777 IPv4 Longest Prefix Match Lookup LFB 3778 1.0 3779 3780 3781 PktIn 3782 The port to receive IPv4 packets from other LFBs 3783 3784 3785 3786 IPv4 3787 3788 3789 3790 3791 3792 3793 SuccessOut 3794 Successful output when all is fine. 3795 3796 3797 IPv4 3798 3799 3800 NextHopID 3801 FEID 3802 Egress 3803 MTU 3804 Flags 3805 NexthopIPAddr 3806 NHEncapMethod 3807 3808 3809 3810 3811 ExceptionOut 3812 Exception output 3813 3814 3815 IPv4 3816 3817 3818 Ingress 3819 ExceptionID 3820 3821 3822 3823 3824 FailOutput 3825 Dropper 3826 3827 3828 IPv4 3829 3830 3831 3832 3833 3834 3835 PrefixTable 3836 IPv4 prefix table 3837 3838 IPv4PrefixTableEntry 3839 3840 IPv4PrefixTableEntry.prefix 3841 3842 3843 3844 3845 3846 Fib 3847 IPv4 unicast forwarding table. 3848 3849 3850 IPv4FibEntryType 3851 3852 IPv4FibEntryType.prefix 3853 3854 3855 3856 3857 3858 LocalIpAddrTable 3859 The table of interfaces's ip address infomation on 3860 the local device 3861 LocalIpAddrType 3862 3863 3864 IPv4Stats 3865 The IPv4 associated statistics 3866 3867 IPv4UcastLPMStatisticsType 3868 3869 3870 3871 3872 PrefixTableLimit 3873 maxium number of prefix supported by this LFB 3874 3875 uint32 3876 3877 3878 LocalIpAddrTableLimit 3879 maxium number of IP address entrys supported by 3880 this LFB 3881 uint32 3882 3883 3884 This LFB represents the IPv4 longest prefix match 3885 lookup operation. 3886 3887 3888 IPv4NextHopApplicator 3889 An LFB definition for applicating next hop action to 3890 IPv4 packets,the actions include:TTL operation,checksum 3891 recalculation. 3892 1.0 3893 3894 3895 PktIn 3896 Port used to receive IPv4 packets from other LFBs 3897 3898 3899 3900 IPv4 3902 3903 3904 NextHopID 3905 3906 FEID 3907 Egress 3908 3909 MTU 3910 Flags 3911 3912 3913 NexthopIPAddr 3914 3915 NHEncapMethod 3916 3917 3918 3919 3920 3921 3922 SuccessOut 3923 Output port for packet successfully fulfill the 3924 nexthop application. 3925 3926 3927 IPv4 3928 3929 3930 DstFEID 3931 Egress 3932 L2Index 3933 NextHopIP 3934 NHEncapMethod 3935 3936 3937 3938 3939 ExceptionOut 3940 Output for packets need deep dealt by higher level 3941 protocol stacks. 3942 3943 3944 IPv4 3945 3946 3947 Ingress 3948 ExceptionID 3949 3951 3952 3953 3954 FailOutput 3955 Output for packets failed the nexthop application 3956 operation. 3957 3958 3959 IPv4 3960 3961 3962 3963 3964 3965 3966 NextHopTable 3967 Nexthop table 3968 3969 3970 IPv4NextHopInfoType 3971 3972 3973 3974 3975 3976 NextHopTableLimit 3977 Maxium number of nexthops this LFB supports 3978 3979 uint32 3980 3981 3982 3983 3984 IPv6UcastLPM 3985 An LFB class definition for IPv6 longest prefix lookup 3986 function. 3987 1.0 3988 3989 3990 PktIn 3991 The port to receive IPv6 packets needed to do IPv4 3992 LPM. 3993 3994 3995 IPv6 3996 3997 3998 4000 4001 4002 4003 SuccessOut 4004 Output for packets that have find the correct 4005 route. 4006 4007 4008 IPv6 4009 4010 4011 NextHopID 4012 4013 4014 4015 4016 FailOutput 4017 LPM failed. 4018 4019 4020 IPv6 4021 4022 4023 4024 4025 4026 4027 PrefixTable 4028 IPv6 prefix table 4029 4030 IPv6PrefixTableEntry 4031 4032 IPv6PrefixTableEntry.prefix 4033 4034 4035 4036 4037 4038 LocalIpv6AddrTable 4039 The table of interfaces's ip address infomation on 4040 the local device 4041 LocalIpv6AddrType 4042 4043 4044 IPv6Stats 4045 The IPv6 associated statistics 4046 4047 IPv6LPMClassiferStatisticsType 4049 4050 4051 4052 4053 PrefixTableLimit 4054 maxium number of prefix supported by this LFB 4055 4056 uint32 4057 4058 4059 LocalIpv6AddrTableLimit 4060 maxium number of IPv6 address entrys supported by 4061 this LFB 4062 uint32 4063 4064 4065 4066 4067 IPv6UcastNexthopApplicator 4068 An LFB for applicating next hop action to IPv6 packets, 4069 actions mainly inlcude TTL incrementation and checksum 4070 recalculation. 4071 1.0 4072 4073 4074 PktIn 4075 Input port for packets to be applicate nexthop. 4076 4077 4078 4079 IPv6 4080 4081 4082 NextHopID 4083 4084 4085 4086 4087 4088 4089 SuccessOut 4090 Output port for packet successfully fulfill the 4091 nexthop application. 4092 4093 4094 IPv6 4095 4096 4097 FEID 4098 Egress 4099 L2Index 4100 NextHopIPv6 4101 NHEncapMethod 4102 4103 4104 4105 4106 ExceptionOut 4107 Output port for exception packet.The following 4108 packets are identified as Exception packet:1 Packet with Hop 4109 Limit zero.2 The MTU for outgoing interface is less than the 4110 packet size.3 The outgoing port is same as the one on which 4111 the packet is received.4 The packet is for a local interface. 4112 4113 4114 4115 IPv6 4116 4117 4118 Ingress 4119 ExceptionID 4120 4121 4122 4123 4124 FailOutput 4125 Output for packets failed the nexthop application 4126 operation. 4127 4128 4129 IPv6 4130 4131 4132 4133 4134 4135 4136 NextHopTable 4137 Nexthop table 4138 4139 IPv6NextHopInfoType 4140 4141 4142 4143 4144 4145 NextHopTableLimit 4146 Maxium number of nexthops this LFB supports 4147 4148 uint32 4149 4150 4151 4152 4153 EtherEncap 4154 4155 An LFB classifier definition for completes ethernet 4156 encapsulation fuctions 4157 1.0 4158 GenericConnectivityLFB 4159 4160 4161 EncapIn 4162 Port for receiving packets needed to build Ethernet 4163 encapsulation. 4164 4165 4166 IPv4 4167 IPv6 4168 4169 4170 L2Index 4171 4172 NextHopIP 4173 NextHopIPv6 4174 4175 IPPacketType 4176 4177 4178 4179 4180 4181 4182 SuccessOut 4183 4184 4185 4186 EthernetII 4187 4188 4189 4190 4191 ExceptionOut 4192 packet can't find the associated L2 information 4193 4194 4195 4196 IPv4 4197 IPv6 4198 4199 4200 4201 4202 4203 4204 ArpTable 4205 Ethernet arp table. 4206 4207 ArpTableEntryType 4208 4209 4210 4211 NbrTable 4212 IPv6 neighbour table. 4213 4214 4215 NbrTableEntryType 4216 4217 4218 4219 DCHostTablev4 4220 Direct connected host arp table for IPv4 4221 4222 DCHostTableEntryTypev4 4223 4224 4225 4226 DCHostTablev6 4227 Direct connected host arp table for IPv6 4228 4229 4230 DCHostTableEntryTypev6 4231 4232 4233 4234 4235 4236 ArpTableLimit 4237 Max number of arp entries in arp table. 4238 uint32 4239 4240 4241 NbrTableLimit 4242 Max number of neighbours in neighbour table. 4243 4244 4245 uint32 4246 4247 4248 DCHostTablev4Limit 4249 The limit on Direct connected host table for IPv4. 4250 4251 uint32 4252 4253 4254 DCHostTablev6Limit 4255 The limit on Direct connected host table for IPv6. 4256 4257 4258 uint32 4259 4260 4261 4262 4263 Scheduler 4264 Base scheduler LFB. 4265 1.0 4266 4267 4268 Watcher 4269 Input for watching the queues to be scheduled. 4270 Queues to be scheduled can transmit packet enqueue and 4271 dequeue infomation to scheduler through these port 4272 4273 4274 MetadataFrame 4275 4276 4277 QueueID 4278 PacketLength 4279 QueueOperationCmd 4280 4281 4282 4283 4284 4285 4286 OutControl 4287 Control output,this output is used by scheduler to 4288 communicate commands to it's controlled queues such as 4289 dequeue a packet. 4290 4291 4292 MetadataFrame 4293 4294 4295 QueueOperationCmd 4296 4297 4298 4299 4300 4301 4302 QueueScheduledLimit 4303 Max number of queues that can be scheduled by this 4304 scheduler. 4305 uint32 4306 4307 4308 This defines a base LFB class for schedulers. 4309 Schedulers have an Input Port group called Watchers for 4310 representing the queues they watch, and an Output Port group 4311 called Controllers fro representing the queues they control. 4312 4313 4314 4315 Queue 4316 Queue LFB. 4317 1.0 4318 4319 4320 InControl 4321 Input from scheduler 4322 4323 4324 QueueOperationCmd 4325 4326 4327 4328 4329 InData 4330 Input port for data packet. 4331 4332 4333 Arbitrary 4334 4335 4336 PacketLength 4338 4339 4340 4341 4342 4343 4344 OutToController 4345 Output to queue controller 4346 4347 4348 MetadataFrame 4349 4350 4351 QueueID 4352 PacketLength 4353 QueueOperationCmd 4354 4355 4356 4357 4358 OutData 4359 Data packet output 4360 4361 4362 Arbitrary 4363 4364 4365 4366 4367 4368 4369 CurLen 4370 Current length of the queue in number of packets. 4371 4372 uint32 4373 4374 4375 4376 4377 QueueLenLimit 4378 Maximum length of the queue in number of packets. 4379 4380 uint32 4381 4382 4383 Queues have a packet input, a packet output, a 4384 control input, and a group of control outputs. The control ports 4385 represent the control relationships with scheduluers. 4387 4388 4389 4390 WRRSched 4391 Weighted round robin scheduler. 4392 1.0 4393 Scheduler 4394 4395 4396 WeightTable 4397 Weight table for queues to be scheduled. 4398 4399 4400 WeightTableEntryType 4401 4402 4403 4404 4405 4406 IPv6AddrResolution 4407 This LFB class provides the function of IPv6 address 4408 resolution part of neighbor discovery protocol.It provides an 4409 offload of ND protocol processing to FE.It process the following 4410 ND messages:neighbour solicitation and neighbour advertisement. 4411 4412 1.0 4413 4414 4415 AddrResDataPktIn 4416 The IPv6 data packet that need to do the address 4417 resolution. 4418 4419 4420 IPv6 4421 4422 4423 4424 4425 AddrResProtoPktIn 4426 The neighbour discovery packet related to address 4427 resolution. 4428 4429 4430 IPv6 4431 4432 4433 4434 4435 4436 4437 AddrResDataPktOut 4438 The IPv6 packet that have encapsulated with the 4439 correct ethernet L2 info and need to be sent out to link. 4440 4441 4442 4443 EthernetII 4444 4445 4446 4447 4448 AddrResProtoPktOut 4449 The IPv6 neighbour discovey packet wich has been 4450 encapsulation with the correct ethernet L2 info. 4451 4452 4453 EthernetII 4454 4455 4456 4457 4458 4459 4460 Nbrtable 4461 This table is an alias to the IPv6 neighbour table 4462 in the EtherEncap LFB. 4463 NbrTable 4464 4465 4466 4467 4468 ICMPv6Generator 4469 This LFB class provide some basic ICMPv6 function,it 4470 only generate the following ICMP messages for the packets that 4471 need some basic icmp processing:destination not reachable and 4472 time excceeded. 4473 1.0 4474 4475 4476 PktIn 4477 The IPv6 packet that need icmp processing. 4478 4479 4480 4481 IPv6 4482 4483 4484 ExceptionID 4485 4486 4487 4488 4489 4490 4491 ICMPv6PktOut 4492 The output for the ICMPv6 packets generated 4493 according to the input IPv6 packet and the ExceptionID. 4494 4495 4496 4497 IPv6 4498 4499 4500 4501 4502 4503 4504 ExtendHeaderProc 4505 This LFB class process the IPv6 packet with extended 4506 header,For the moment,the packets to this LFB are redirect to 4507 RedirectSink LFB by default. 4508 1.0 4509 4510 4511 PktIn 4512 The IPv6 packet with extended header in. 4513 4514 4515 IPv6 4516 4517 4518 4519 4520 4521 4522 PktOut 4523 According to the Extended header type the packet 4524 may have different next proccesing LFB.Now by default we send 4525 all the packet with extended header to CE. 4526 4527 4528 IPv6 4529 4530 4532 4533 4534 4535 4536 arp 4537 This LFB class provides the function of address 4538 resolution for IPv4 nodes. 4539 1.0 4540 4541 4542 AddrResDataPktIn 4543 The IPv4 data packet that need to do the address 4544 resolution. 4545 4546 4547 IPv4 4548 4549 4550 4551 4552 ArpPktIn 4553 The neighbour discovery packet related to address 4554 resolution. 4555 4556 4557 IPv4 4558 4559 4560 4561 4562 4563 4564 AddrResDataPktOut 4565 The IPv4 packet that have been encapsulated with 4566 the correct ethernet L2 info and need to be sent out to link. 4567 4568 4569 4570 EthernetII 4571 4572 4573 4574 4575 ArpOut 4576 The arp packet out. 4577 4578 4579 EthernetII 4581 4582 4583 4584 4585 4586 4587 Arptable 4588 This table is an alias of the arp table in the 4589 EtherEncap LFB. 4590 ArpTable 4591 4592 4593 4594 4595 ICMPGenerator 4596 This LFB class provide some basic ICMP function,it only 4597 generate the following ICMP messages:ICMP destination 4598 unreachable and time excceeded. 4599 1.0 4600 4601 4602 PktIn 4603 IPv4 packet that need icmp processing. 4604 4605 4606 IPv4 4607 4608 4609 ExceptionID 4610 4611 4612 4613 4614 4615 4616 ICMPPktOut 4617 The output for the ICMP packets generated according 4618 to the input packet and the ExceptionID. 4619 4620 4621 IPv4 4622 4623 4624 4625 4626 4627 4628 MetadataClassifier 4629 This LFB class provides the function of classify 4630 packets according to the meta data.Now it only works on one meta 4631 data. 4632 1.0 4633 4634 4635 PktIn 4636 Packets need to do the classification. 4637 4638 4639 Arbitrary 4640 4641 4642 Arbitrary 4643 4644 4647 4648 4649 4650 4651 4652 ClassifiedOut 4653 Output group for the classified packets. 4654 4655 4656 Arbitrary 4657 4658 4659 4660 4661 4662 4663 MetaDataID 4664 The metadata id that this classifier works on. 4665 4666 uint32 4667 4668 4669 MetaDataName 4670 The name of the meta data that this classifier 4671 works on. 4672 string 4673 4674 4675 MetadataClassifyTable 4676 The meta data classifying table. 4677 MetadataClassTableType 4678 4679 4680 OutNumOfPorts 4681 The number of ports in the output group. 4682 uint32 4683 4684 4685 4686 4687 MaxOutNumOfPorts 4688 Maxium number of ports in the output group. 4689 4690 uint32 4691 4692 4693 4694 4695 OptionProc 4696 This LFB class process the IPv4 packet with options,it 4697 can process on the following options:Router-alert option. 4698 4699 1.0 4700 4701 4702 PktIn 4703 The IPv4 packet with options in. 4704 4705 4706 IPv4 4707 4708 4709 4710 4711 4712 4713 PktOut 4714 According to the Option type the packet may have 4715 different next proccesing LFB.Now by default we send all the 4716 packet with extended header to CE. 4717 4718 4719 IPv4 4720 4721 4722 4723 4724 4725 4726 GenericConnectivityLFB 4727 4728 An LFB Class for providing connectivity between an FE and 4729 communications media. 4730 4731 1.0 4732 This LFB Class provides a generic basis for 4733 representing connectivity between the FE and the outside world. 4734 The LFB has one or more ports for packets that the FE processing 4735 logic is forwrding for transmission by this Connectivity LFB. It 4736 has one or more ports for packets that the Connectivity LFB has 4737 received and is handing to the FE processing logic. Multiple 4738 ports for handline packets are supported so that protocol 4739 specific encapsulation and demultiplexing can be provided by this 4740 LFB. This LFB also has ports for sending packets to lower layer 4741 Connectivity LFBs and receiving packets from such lower layer 4742 Connectivity LFBs. This enables support for the processing 4743 components of interface stacks, such as PPP over Ethernet or 4744 Ethernet over MPLS.For packets arriving from Media or lower layer 4745 connectivity, this LFB will perform appropriate media validation, 4746 then remove media specific headers, and place the relevant 4747 information in meta-data. For ethernet, the Source MAC would be 4748 in meta-data. For Frame Relay or ATM, a circuit identifier would 4749 be in meta-data. For Ethernet with VLANs, this meta-data would 4750 indicate which VLAN the packet came from. For packets to be 4751 transmitted, meta-data indicating the destination (destination 4752 MAC or outgoing circuit, etc.) is required. This LFB will also 4753 include statistical components such as the number of octets and 4754 packets sent and received, the number of various input and output 4755 errors, etc. 4756 4757 4758 RedirectLFB 4759 An LFB Class definition for exchanging data packets 4760 between the FE and the CE. 4761 1.0 4762 4763 4764 RedirectToCE 4765 4766 Port for frames to send to the CE. 4767 4768 4769 4770 taggedFrame 4771 4772 4774 4775 4776 4777 4778 RedirectFromCE 4779 4780 Port for frames to send to the CE 4781 4782 4783 4784 taggedFrame 4785 4786 4787 4788 4789 This LFB represents a point of exchagne of data 4790 packets between the CE and the FE. Packets with meta-data are 4791 exchanged. It is expected that the output port of a RedirectLFB, 4792 if it is connected at all, will be connected to a meta-data 4793 redirector 4794 4795 4796 IPv4Validator 4797 An LFB Class definition for validates the IPv4 packet. 4798 4799 1.0 4800 4801 4802 ValidatorIn 4803 4804 Normal packet input. 4805 4806 4807 4808 IPv4 4809 4810 4811 4812 4813 4814 4815 ValidatorOut 4816 4817 Normal packet Output. 4818 4819 4820 4821 IPv4packet 4823 4824 4825 4826 4827 FailOutput 4828 The port to send packets that do not match any 4829 entries. 4830 4831 4832 taggedFrame 4833 4834 4835 errorid 4836 4837 4838 4839 4840 This LFB validates the IP version and header length 4841 fields, including verifying that the packet length is at least as 4842 long as the header indicates. 4843 4844 4845 IPv6Validator 4846 An LFB Class definition for validates the IPv6 packet. 4847 4848 1.0 4849 4850 4851 ValidatorIn 4852 4853 Normal packet input. 4854 4855 4856 4857 IPv6 4858 4859 4860 4861 4862 4863 4864 ValidatorOut 4865 4866 Normal packet Output. 4867 4868 4869 4870 IPv6packet 4872 4873 4874 4875 4876 FailOutput 4877 The port to send packets that do not match any 4878 entries. 4879 4880 4881 taggedFrame 4882 4883 4884 errorid 4885 4886 4887 4888 4889 This LFB validates the IP version and header length 4890 fields, including verifying that the packet length is at least as 4891 long as the header indicates. 4892 4893 4894 PacketTrimmer 4895 4896 LFB removes data from the front of a packet. 4897 1.0 4898 4899 4900 PacketIn 4901 4902 Normal packet input. 4903 4904 4905 4906 Packet 4907 4908 4909 4910 4911 4912 4913 PacketOut 4914 4915 Normal packet Output. 4916 4917 4918 4919 Packet 4921 4922 4923 4924 4925 FailOut 4926 4927 For packets without enough bytes to remove 4928 4929 4930 4931 Packet 4932 4933 4934 4935 4936 4937 4938 TrimLength 4939 amount to trim from each packet 4940 uint32 4941 4942 4943 4944 4945 Duplicator 4946 4947 An LFB Class definition for packet duplicator LFB. Any 4948 packet received on an input port is logically copied and sent to 4949 all output ports. 4950 1.0 4951 4952 4953 PacketIn 4954 4955 Normal packet input. 4956 4957 4958 4959 IPv4 4960 IPv6 4961 4962 4963 4964 4965 4966 4967 PacketOut 4968 Normal packet output port group 4969 4970 4971 IPv4 4972 IPv6 4973 4974 4975 4976 4977 4978 4979 ArbitraryClassifierLFB 4980 4981 A classifier which can test packet or metadata, and on 4982 that basis set meta-data a pick an output port. 4983 1.0 4984 4985 4986 PacketsToClassify 4987 4988 The group of ports to received packets over 4989 4990 4991 4992 taggedFrame 4993 4994 4995 4996 4997 4998 4999 5000 SuccessOutput 5001 5002 The group of ports used by the classifer for output 5003 when a successful match is found. 5004 5005 5006 5007 taggedFrame 5008 5009 5010 5011 5012 5013 FailOutput 5014 5015 The port to send packets that do not match any entries. 5016 5018 5019 5020 taggedFrame 5021 5022 5023 5024 5025 5026 5027 5028 ClassifierTable 5029 The table of classifier entries. Each entry is 5030 tested until one succeeds. Each entry contains an optional 5031 port test, an array of packet and meta data tests, an array 5032 of metadata actions, and an exit selection. 5033 5034 5035 5036 InputPortTest 5037 If present,this match will only match packets 5038 arriving over the specified port. 5039 5040 uint32 5041 5042 5043 TestConditions 5044 The array of conditions to test 5045 5046 MatchCondition 5047 5048 5049 5050 MetaDataActions 5051 The array of meta data modifications to make 5052 when the match succeeds. 5053 5054 MatchMetaDataAction 5055 5056 5057 5058 MatchOutputPort 5059 The port within the success group to send 5060 packets which match these tests. 5061 uint32 5062 5063 5064 5065 5067 5068 5069 5070 5071 7. LFB Use Case 5073 Editorial:This section is supposed to discuss how we can build some 5074 basic applications define by WG charter such as IPV4 forwarding etc. 5076 Putting together LFBs to form a specific packet processing 5077 application 5079 8. Contributors 5081 The authors would like to thank Jamal Hadi Salim and Ligang Dong who 5082 made a major contribution to the development of this document. 5084 Jamal Hadi Salim 5085 Mojatatu Networks 5086 Ottawa, Ontario 5087 Canada 5088 Email: hadi@mojatatu.com 5090 Ligang Dong 5091 Zhejiang Gongshang University 5092 149 Jiaogong Road 5093 Hangzhou 310035 5094 P.R.China 5095 Phone: +86-571-28877751 5096 EMail: donglg@mail.zjgsu.edu.cn 5098 9. Acknowledgements 5100 This document is based on earlier documents from Joel Halpern, Ligang 5101 Dong, Fenggen Jia and Weiming Wang. 5103 10. IANA Considerations 5105 This memo includes no request to IANA. 5107 11. Security Considerations 5109 These definitions if used by an FE to support ForCES create 5110 manipulable entities on the FE. Manipulation of such objects can 5111 produce almost unlimited effects on the FE. FEs should ensure that 5112 only properly authenticated ForCES protocol participants are 5113 performing such manipulations. Thus the security issues with this 5114 protocol are defined in the FE-protocol [I-D.ietf-forces-protocol]. 5116 12. References 5118 12.1. Normative References 5120 [I-D.ietf-forces-model] 5121 Halpern, J. and J. Salim, "ForCES Forwarding Element 5122 Model", draft-ietf-forces-model-16 (work in progress), 5123 October 2008. 5125 [I-D.ietf-forces-protocol] 5126 Dong, L., Doria, A., Gopal, R., HAAS, R., Salim, J., 5127 Khosravi, H., and W. Wang, "ForCES Protocol 5128 Specification", draft-ietf-forces-protocol-22 (work in 5129 progress), March 2009. 5131 12.2. Informative References 5133 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 5134 Requirement Levels", BCP 14, RFC 2119, March 1997. 5136 [RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, 5137 June 1999. 5139 [RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC 5140 Text on Security Considerations", BCP 72, RFC 3552, 5141 July 2003. 5143 [RFC3654] Khosravi, H. and T. Anderson, "Requirements for Separation 5144 of IP Control and Forwarding", RFC 3654, November 2003. 5146 [RFC3746] Yang, L., Dantu, R., Anderson, T., and R. Gopal, 5147 "Forwarding and Control Element Separation (ForCES) 5148 Framework", RFC 3746, April 2004. 5150 [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an 5151 IANA Considerations Section in RFCs", BCP 26, RFC 5226, 5152 May 2008. 5154 Authors' Addresses 5156 Weiming Wang 5157 Zhejiang Gongshang University 5158 18, Xuezheng Str., Xiasha University Town 5159 Hangzhou, 310018 5160 P.R.China 5162 Phone: +86-571-28877721 5163 Email: wmwang@mail.zjgsu.edu.cn 5165 Evangelos Haleplidis 5166 University of Patras 5167 Patras, 5168 Greece 5170 Email: ehalep@ece.upatras.gr 5172 Kentaro Ogawa 5173 NTT Corporation 5174 Tokyo, 5175 Japan 5177 Email: ogawa.kentaro@lab.ntt.co.jp 5179 Fenggen Jia 5180 National Digital Switching Center(NDSC) 5181 Jianxue Road 5182 Zhengzhou, 452000 5183 P.R.China 5185 Phone: +86-571-28877751 5186 Email: jfg@mail.ndsc.com.cn,fgjia@mail.zjgsu.edu.cn 5188 Halpern Joel 5189 Ericsson 5190 P.O. Box 6049 5191 Leesburg, 20178 5192 VA 5194 Phone: +1 703 371 3043 5195 Email: jhalpern@redback.com