| 1.1 | Network Systems And The Internet     1 | 
| 1.2 | Applications Vs. Infrastructure     1 | 
| 1.3 | Network Systems Engineering     2 | 
| 1.4 | Packet Processing     2 | 
| 1.5 | Achieving High Speed     3 | 
| 1.6 | Network Speed     3 | 
| 1.7 | Hardware, Software, And Hybrids     4 | 
| 1.8 | Scope And Organization Of The Text     5 | 
| 1.9 | Summary     5 | 
|  | For Further Study    5 
 | 
| 2.1 | Introduction     7 | 
| 2.2 | Networks And Packets     7 | 
| 2.3 | Connection-Oriented And Connectionless Paradigms     8 | 
| 2.4 | Digital Circuits     8 | 
| 2.5 | LAN And WAN Classifications     9 | 
| 2.6 | The Internet And Heterogeneity     9 | 
| 2.7 | Example Network Systems     9 | 
| 2.8 | Broadcast Domains     10 | 
| 2.9 | The Two Key Systems Used In The Internet     11 | 
| 2.10 | Other Systems Used In The Internet     12 | 
| 2.11 | Monitoring And Control Systems     13 | 
| 2.12 | Summary     13 | 
|  | For Further Study    13 
 | 
| 3.1 | Introduction     15 | 
| 3.2 | Protocols And Layering     15 | 
| 3.3 | Layers 1 And 2 (Physical And Network Interface)     17 | 
|  | 3.3.1 | Ethernet    17 | 
|  | 3.3.2 | Ethernet Frame Format    17 | 
|  | 3.3.3 | Ethernet Addresses    18 | 
|  | 3.3.4 | Ethernet Type Field    19 | 
| 3.4 | Layer 3 (Internet)     19 | 
|  | 3.4.1 | The Internet Protocol    19 | 
|  | 3.4.2 | IP Datagram Format    19 | 
|  | 3.4.3 | IP Addresses    20 | 
| 3.5 | Layer 4 (Transport)     20 | 
|  | 3.5.1 | UDP And TCP    20 | 
|  | 3.5.2 | UDP Datagram Format    21 | 
|  | 3.5.3 | TCP Segment Format    22 | 
| 3.6 | Protocol Port Numbers And Demultiplexing     23 | 
| 3.7 | Encapsulation And Transmission     23 | 
| 3.8 | Address Resolution Protocol     24 | 
| 3.9 | Summary     24 | 
|  | For Further Study    24 
 | 
| 4.1 | Introduction     29 | 
| 4.2 | A Conventional Computer System     29 | 
| 4.3 | Network Interface Cards     30 | 
| 4.4 | Definition Of A Bus     31 | 
| 4.5 | The Bus Address Space     32 | 
| 4.6 | The Fetch-Store Paradigm     33 | 
| 4.7 | Network Interface Card Functionality     34 | 
| 4.8 | NIC Optimizations For High Speed     34 | 
| 4.9 | Onboard Address Recognition     35 | 
|  | 4.9.1 | Unicast And Broadcast Recognition And Filtering    35 | 
|  | 4.9.2 | Multicast Recognition And Filtering    35 | 
| 4.10 | Onboard Packet Buffering     36 | 
| 4.11 | Direct Memory Access     37 | 
| 4.12 | Operation And Data Chaining     38 | 
| 4.13 | Data Flow Diagram     39 | 
| 4.14 | Promiscuous Mode     39 | 
| 4.15 | Summary     40 | 
|  | For Further Study    40 
 | 
| 5.1 | Introduction     43 | 
| 5.2 | State Information and Resource Exhaustion     43 | 
| 5.3 | Packet Buffer Allocation     44 | 
| 5.4 | Packet Buffer Size And Copying     45 | 
| 5.5 | Protocol Layering And Copying     45 | 
| 5.6 | Heterogeneity And Network Byte Order     46 | 
| 5.7 | Bridge Algorithm     47 | 
| 5.8 | Table Lookup And Hashing     49 | 
| 5.9 | IP Datagram Fragmentation And Reassembly     50 | 
|  | 5.9.1 | Interpretation Of The Flags Field    51 | 
|  | 5.9.2 | Interpretation Of The Fragment Offset Field    51 | 
|  | 5.9.3 | IP Fragmentation Algorithm    52 | 
|  | 5.9.4 | Fragmenting A Fragment    53 | 
|  | 5.9.5 | IP Reassembly    53 | 
|  | 5.9.6 | Grouping Fragments Together    54 | 
|  | 5.9.7 | Fragment Position    54 | 
|  | 5.9.8 | IP Reassembly Algorithm    55 | 
| 5.10 | IP Datagram Forwarding     56 | 
| 5.11 | IP Forwarding Algorithm     57 | 
| 5.12 | High-Speed IP Forwarding     57 | 
| 5.13 | TCP Connection Recognition Algorithm     59 | 
| 5.14 | TCP Splicing Algorithm     60 | 
| 5.15 | Summary     63 | 
|  | For Further Study    63 
 | 
|  | Exercises    63 
 | 
| 6.1 | Introduction     67 | 
| 6.2 | Packet Processing     68 | 
| 6.3 | Address Lookup And Packet Forwarding     68 | 
| 6.4 | Error Detection And Correction     69 | 
| 6.5 | Fragmentation, Segmentation, And Reassembly     70 | 
| 6.6 | Frame And Protocol Demultiplexing     70 | 
| 6.7 | Packet Classification     71 | 
|  | 6.7.1 | Static And Dynamic Classification    71 | 
|  | 6.7.2 | Demultiplexing Vs. Classification    71 | 
|  | 6.7.3 | Optimized Packet Processing    72 | 
|  | 6.7.4 | Classification Languages    72 | 
| 6.8 | Queueing And Packet Discard     73 | 
|  | 6.8.1 | Basic Queueing    73 | 
|  | 6.8.2 | Priority Mechanisms    74 | 
|  | 6.8.3 | Packet Discard    75 | 
| 6.9 | Scheduling And Timing     75 | 
| 6.10 | Security: Authentication And Privacy     76 | 
| 6.11 | Traffic Measurement And Policing     76 | 
| 6.12 | Per-Flow And Aggregate Policing     77 | 
| 6.13 | Traffic Characteristics     78 | 
|  | 6.13.1 | Constant Bit Rate (CBR)    78 | 
|  | 6.13.2 | Variable Bit Rate (VBR)    78 | 
|  | 6.13.3 | Available Bit Rate (ABR)    79 | 
|  | 6.13.4 | Unspecified Bit Rate (UBR)    79 | 
| 6.14 | Traffic Shaping     80 | 
| 6.15 | The Point Of Traffic Management     81 | 
| 6.16 | Timer Management     82 | 
| 6.17 | Summary     83 | 
|  | For Further Study    83 
 | 
|  | Exercises    83 
 | 
| 7.1 | Introduction     87 | 
| 7.2 | Implementation Of Packet Processing In An Application     87 | 
| 7.3 | Fast Packet Processing In Software     88 | 
| 7.4 | Embedded Systems     88 | 
| 7.5 | Operating System Implementations     89 | 
| 7.6 | Software Interrupts And Priorities     89 | 
| 7.7 | Multiple Priorities And Kernel Threads     91 | 
| 7.8 | Thread Synchronization     92 | 
| 7.9 | Software For Layered Protocols     92 | 
|  | 7.9.1 | One Thread Per Layer    93 | 
|  | 7.9.2 | One Thread Per Protocol    94 | 
|  | 7.9.3 | Multiple Threads Per Protocol    94 | 
|  | 7.9.4 | Separate Timer Management Threads    94 | 
|  | 7.9.5 | One Thread Per Packet    95 | 
| 7.10 | Asynchronous Vs. Synchronous Programming     96 | 
| 7.11 | Summary     97 | 
|  | For Further Study    97 
 | 
|  | Exercises    97 
 | 
| 8.1 | Introduction     101 | 
| 8.2 | Network Systems Architecture     101 | 
| 8.3 | The Traditional Software Router     102 | 
| 8.4 | Aggregate Data Rate     103 | 
| 8.5 | Aggregate Packet Rate     103 | 
| 8.6 | Packet Rate And Software Router Feasibility     105 | 
| 8.7 | Overcoming The Single CPU Bottleneck     107 | 
| 8.8 | Fine-Grain Parallelism     108 | 
| 8.9 | Symmetric Coarse-Grain Parallelism     108 | 
| 8.10 | Asymmetric Coarse-Grain Parallelism     109 | 
| 8.11 | Special-Purpose Coprocessors     109 | 
| 8.12 | ASIC Coprocessor Implementation     110 | 
| 8.13 | NICs With Onboard Processing     111 | 
| 8.14 | Smart NICs With Onboard Stacks     112 | 
| 8.15 | Cells And Connection-Oriented Addressing     112 | 
| 8.16 | Data Pipelines     113 | 
| 8.17 | Summary     115 | 
|  | For Further Study    115 
 | 
|  | Exercises    115 
 | 
| 9.1 | Introduction     119 | 
| 9.2 | Inherent Limits Of Demultiplexing     119 | 
| 9.3 | Packet Classification     120 | 
| 9.4 | Software Implementation Of Classification     121 | 
| 9.5 | Optimizing Software-Based Classification     122 | 
| 9.6 | Software Classification On Special-Purpose Hardware     123 | 
| 9.7 | Hardware Implementation Of Classification     123 | 
| 9.8 | Optimized Classification Of Multiple Rule Sets     124 | 
| 9.9 | Classification Of Variable-Size Headers     126 | 
| 9.10 | Hybrid Hardware\|/\|Software Classification     127 | 
| 9.11 | Dynamic Vs. Static Classification     128 | 
| 9.12 | Fine-Grain Flow Creation     129 | 
| 9.13 | Flow Forwarding In A Connection-Oriented Network     130 | 
| 9.14 | Connectionless Network Classification And Forwarding     130 | 
| 9.15 | Second Generation Network Systems     131 | 
| 9.16 | Embedded Processors In Second Generation Systems     132 | 
| 9.17 | Classification And Forwarding Chips     133 | 
| 9.18 | Summary     134 | 
|  | For Further Study    134 
 | 
|  | Exercises    134 
 | 
| 10.1 | Introduction     137 | 
| 10.2 | Bandwidth Of An Internal Fast Path     137 | 
| 10.3 | The Switching Fabric Concept     138 | 
| 10.4 | Synchronous And Asynchronous Fabrics     139 | 
| 10.5 | A Taxonomy Of Switching Fabric Architectures     140 | 
| 10.6 | Dedicated Internal Paths And Port Contention     140 | 
| 10.7 | Crossbar Architecture     141 | 
| 10.8 | Basic Queueing     143 | 
| 10.9 | Time Division Solutions: Sharing Data Paths     145 | 
| 10.10 | Shared Bus Architecture     145 | 
| 10.11 | Other Shared Medium Architectures     146 | 
| 10.12 | Shared Memory Architecture     147 | 
| 10.13 | Multistage Fabrics     148 | 
| 10.14 | Banyan Architecture     149 | 
| 10.15 | Scaling A Banyan Switch     150 | 
| 10.16 | An Example Commercial Technology     152 | 
| 10.17 | Protocol Independence: The Agere PI40     153 | 
| 10.18 | Implementation Of The Agere Fabric     153 | 
| 10.19 | Capacity Of The Agere Fabric     155 | 
| 10.20 | Other Commercial Technologies     155 | 
| 10.21 | Practical Issues     155 | 
| 10.22 | Summary     156 | 
|  | For Further Study    156 
 | 
|  | Exercises    156 
 | 
| 11.1 | Introduction     161 | 
| 11.2 | The CPU In A Second Generation Architecture     161 | 
| 11.3 | Third Generation Network Systems     162 | 
| 11.4 | The Motivation For Embedded Processors     163 | 
| 11.5 | RISC vs. CISC     163 | 
| 11.6 | The Need For Custom Silicon     164 | 
| 11.7 | Definition Of A Network Processor     165 | 
| 11.8 | A Fundamental Idea: Flexibility Through Programmability     166 | 
| 11.9 | Instruction Set     167 | 
| 11.10 | Scalability With Parallelism And Pipelining     167 | 
| 11.11 | The Costs And Benefits Of Network Processors     168 | 
| 11.12 | Network Processors And The Economics Of Success     169 | 
| 11.13 | The Status And Future Of Network Processors     170 | 
| 11.14 | Summary     170 | 
|  | For Further Study    171 
 | 
|  | Exercises    171 
 | 
| 12.1 | Introduction     173 | 
| 12.2 | Network Processor Functionality     173 | 
| 12.3 | Packet Processing Functions     174 | 
| 12.4 | Ingress And Egress Processing     175 | 
|  | 12.4.1 | Ingress Processing    175 | 
|  | 12.4.2 | Egress Processing    176 | 
| 12.5 | Parallel And Distributed Architecture     178 | 
| 12.6 | The Architectural Roles Of Network Processors     179 | 
| 12.7 | Consequences For Each Architectural Role     179 | 
| 12.8 | Macroscopic Data Pipelining And Heterogeneity     181 | 
| 12.9 | Network Processor Design And Software Emulation     181 | 
| 12.10 | Summary     182 | 
|  | For Further Study    182 
 | 
|  | Exercises    183 
 | 
| 13.1 | Introduction     185 | 
| 13.2 | Architectural Variety     185 | 
| 13.3 | Primary Architectural Characteristics     186 | 
|  | 13.3.1 | Processor Hierarchy    186 | 
|  | 13.3.2 | Memory Hierarchy    187 | 
|  | 13.3.3 | Internal Transfer Mechanisms    189 | 
|  | 13.3.4 | External Interface And Communication Mechanisms    190 | 
|  | 13.3.5 | Special-Purpose Hardware    191 | 
|  | 13.3.6 | Polling And Notification Mechanisms    191 | 
|  | 13.3.7 | Concurrent Execution Support    192 | 
|  | 13.3.8 | Hardware Support For Programming    193 | 
|  | 13.3.9 | Hardware And Software Dispatch Mechanisms    193 | 
|  | 13.3.10 | Implicit Or Explicit Parallelism    194 | 
| 13.4 | Architecture, Packet Flow, And Clock Rates     194 | 
| 13.5 | Software Architecture     197 | 
| 13.6 | Assigning Functionality To The Processor Hierarchy     197 | 
| 13.7 | Summary     199 | 
|  | For Further Study    200 
 | 
|  | Exercises    200 
 | 
| 14.1 | Introduction     203 | 
| 14.2 | The Processing Hierarchy And Scaling     203 | 
| 14.3 | Scaling By Making Processors Faster     204 | 
| 14.4 | Scaling By Increasing The Number of Processors     204 | 
| 14.5 | Scaling By Increasing Processor Types     205 | 
| 14.6 | Scaling A Memory Hierarchy     206 | 
| 14.7 | Scaling By Increasing Memory Size     208 | 
| 14.8 | Scaling By Increasing Memory Bandwidth     208 | 
| 14.9 | Scaling By Increasing Types Of Memory     209 | 
| 14.10 | Scaling By Adding Memory Caches     210 | 
| 14.11 | Scaling With Content Addressable Memory     211 | 
| 14.12 | Using CAM for Packet Classification     213 | 
| 14.13 | Other Limitations On Scale     215 | 
| 14.14 | Software Scalability     216 | 
| 14.15 | Bottlenecks And Scale     217 | 
| 14.16 | Summary     217 | 
|  | For Further Study    218 
 | 
|  | Exercises    218 
 | 
| 15.1 | Introduction     221 | 
| 15.2 | An Explosion Of Commercial Products     221 | 
| 15.3 | A Selection of Products     222 | 
| 15.4 | Augmented RISC Processor (Alchemy)     222 | 
| 15.5 | Embedded Processor Plus Coprocessors (AMCC)     223 | 
| 15.6 | Pipeline Of Homogeneous Processors (Cisco)     225 | 
| 15.7 | Pipeline Of Heterogeneous Processors (EZchip)     226 | 
| 15.8 | Extensive And Diverse Processors (Hifn)     227 | 
| 15.9 | Homogeneous Parallel Processors Plus Controller (Intel)     230 | 
| 15.10 | Flexible RISC Plus Coprocessors (Motorola)     233 | 
| 15.11 | Extremely Long Homogeneous Pipeline (Xelerated)     237 | 
| 15.12 | Summary     238 | 
|  | For Further Study    239 
 | 
|  | Exercises    239 
 | 
| 16.1 | Introduction     241 | 
| 16.2 | Low Development Cost Vs. Performance     241 | 
| 16.3 | Programmability Vs. Processing Speed     242 | 
| 16.4 | Performance: Packet Rate, Data Rate, And Bursts     242 | 
| 16.5 | Speed Vs. Functionality     243 | 
| 16.6 | Per-Interface Rate Vs. Aggregate Data Rate     243 | 
| 16.7 | Network Processor Speed Vs. Bandwidth     243 | 
| 16.8 | Coprocessor Design: Lookaside Vs. Flow-Through     244 | 
| 16.9 | Pipelining: Uniform Vs. Synchronized     244 | 
| 16.10 | Explicit Parallelism Vs. Cost And Programmability     244 | 
| 16.11 | Parallelism: Scale Vs. Packet Ordering     245 | 
| 16.12 | Parallelism: Speed Vs. Stateful Classification     245 | 
| 16.13 | Memory: Speed Vs. Programmability     245 | 
| 16.14 | I/O Performance Vs. Pin Count     246 | 
| 16.15 | Programming Languages: A Three-Way Tradeoff     246 | 
| 16.16 | Multithreading: Throughput Vs. Programmability     246 | 
| 16.17 | Traffic Management Vs. Blind Forwarding At Low Cost     247 | 
| 16.18 | Generality Vs. Specific Architectural Role     247 | 
| 16.19 | Memory Type: Special-Purpose Vs. General-Purpose     247 | 
| 16.20 | Backward Compatibility Vs. Architectural Advances     248 | 
| 16.21 | Parallelism Vs. Pipelining     248 | 
| 16.22 | Summary     249 | 
|  | Exercises    249 
 | 
| 17.1 | Introduction     253 | 
| 17.2 | Agere Terminology     253 | 
| 17.3 | Agere PayloadPlus (APP)     254 | 
| 17.4 | Conceptual Pipeline     254 | 
| 17.5 | Functional Block Characteristics     255 | 
| 17.6 | First-Generation Agere Implementation     256 | 
| 17.7 | Second Generation Agere Implementation (APP550)     257 | 
| 17.8 | Basic APP550 Features     258 | 
| 17.9 | External Connections     259 | 
|  | 17.9.1 | Memory Interfaces    260 | 
|  | 17.9.2 | Media Interfaces    260 | 
|  | 17.9.3 | Switching Fabric Interface    261 | 
|  | 17.9.4 | PCI Bus Interface    261 | 
|  | 17.9.5 | Scheduling Interface    261 | 
|  | 17.9.6 | Coprocessor Interface    262 | 
| 17.10 | Memory Uses     262 | 
| 17.11 | Internal Architecture     263 | 
| 17.12 | Engines On The APP550     264 | 
| 17.13 | High-Speed Full Duplex Operation     264 | 
| 17.14 | The Underlying Complexity     265 | 
| 17.15 | Summary     265 | 
|  | For Further Study    266 
 | 
|  | Exercises    266 
 | 
| 18.1 | Introduction     269 | 
| 18.2 | Hierarchical Structure And Vestigial Terminology     269 | 
| 18.3 | Major Functional Units On The APP550     270 | 
| 18.4 | Input Interface     271 | 
| 18.5 | Pattern Processing Engine (PPE)     271 | 
| 18.6 | Data Flow Through The Classifier     273 | 
| 18.7 | PDU Assembler     274 | 
| 18.8 | Reorder Buffer     274 | 
| 18.9 | State Engine     275 | 
| 18.10 | Traffic Manager     276 | 
| 18.11 | Stream Editor     278 | 
| 18.12 | Programming, Performance, And Global Pulse Rate     279 | 
| 18.13 | Other Functional Units On The APP550     280 | 
| 18.14 | Summary     280 | 
|  | For Further Study    281 
 | 
| 19.1 | Introduction     283 | 
| 19.2 | Reference Systems     283 | 
| 19.3 | Simulation Vs. Emulation     284 | 
| 19.4 | The Agere Reference System     285 | 
| 19.5 | Software Development Environment (SDE)     285 | 
| 19.6 | System Performance Analyzer (SPA)     286 | 
| 19.7 | Hardware Development System (HDS)     287 | 
| 19.8 | HDS Bootstrap And Operation     288 | 
| 19.9 | Run Time Environment (RTE)     288 | 
| 19.10 | Testing Paradigms     289 | 
| 19.11 | Summary     289 | 
|  | For Further Study    290 
 | 
| 20.1 | Introduction     293 | 
| 20.2 | Support For High-Speed Classification     293 | 
| 20.3 | Agere's Functional Programming Language (FPL)     294 | 
| 20.4 | FPL Characteristics     294 | 
| 20.5 | Two Pass Processing And The Division Into Blocks     296 | 
| 20.6 | FPL Pass 1: The Root Program     296 | 
| 20.7 | FPL Pass 2: The Replay Program     297 | 
| 20.8 | Status Values Passed With A Packet     297 | 
| 20.9 | Algorithms For First And Second Pass Processing     298 | 
| 20.10 | Designating The First And Second Pass     299 | 
| 20.11 | Pattern Matching Paradigm     300 | 
| 20.12 | Using Patterns For Conditionals     301 | 
| 20.13 | Symbolic Constants And Include Files     303 | 
| 20.14 | Example FPL Code For Second Pass Processing     303 | 
| 20.15 | Sequential Pattern Matching Paradigm     304 | 
| 20.16 | Tree Functions And The BITS Default     306 | 
| 20.17 | Return Values     306 | 
| 20.18 | Passing Information To The Traffic Manager Block     306 | 
| 20.19 | Sticky Bits     307 | 
| 20.20 | Access To Built-in And External Functions     307 | 
| 20.21 | FPL Constant Syntax     308 | 
| 20.22 | Dotted Decimal Patterns And Longest Prefix Match     308 | 
| 20.23 | FPL Support For Dynamic Classification     309 | 
| 20.24 | Ordered Virtual Functions     310 | 
| 20.25 | Ordered Functions And State Access     310 | 
| 20.26 | Debugging FPL     311 | 
| 20.27 | Summary     311 | 
|  | For Further Study    312 
 | 
|  | Exercises    312 
 | 
| 21.1 | Introduction     315 | 
| 21.2 | State Engine Functionality     315 | 
| 21.3 | External Host Interface     316 | 
| 21.4 | State Engine Control And Status Registers     316 | 
| 21.5 | State Engine Memory And Address Space     317 | 
| 21.6 | Onboard Configuration Bus And External Connection     317 | 
| 21.7 | ASI Functions And Access From FPL     318 | 
| 21.8 | Policing Engine And Policing Scripts     318 | 
| 21.9 | Return Values From Policing     319 | 
| 21.10 | Binding A Script ID To A Specific Function     319 | 
| 21.11 | FPL Prototype Declaration And Example     320 | 
| 21.12 | Initialization Of The Policing Database     320 | 
| 21.13 | Register Files And Optimized Access     321 | 
| 21.14 | C-NP Language Overview     322 | 
|  | 21.14.1 | Lexical Conventions    322 | 
|  | 21.14.2 | Data Declarations    323 | 
|  | 21.14.3 | Expressions    324 | 
|  | 21.14.4 | Statements    325 | 
|  | 21.14.5 | Preprocessor Directives    325 | 
|  | 21.14.6 | Script Structure    326 | 
| 21.15 | An Example Policing Script     326 | 
| 21.16 | Summary     328 | 
|  | For Further Study    328 
 | 
|  | Exercises    329 
 | 
| 22.1 | Introduction     331 | 
| 22.2 | Policing, Queueing, And Scheduling Decisions     331 | 
| 22.3 | Buffer Management     332 | 
| 22.4 | Completion Of Flow Policing     333 | 
| 22.5 | A Unified Packet Discard Algorithm (WRED)     334 | 
| 22.6 | Implementation Of Weighted RED On The APP550     335 | 
| 22.7 | Scheduling And Traffic Shaping     338 | 
| 22.8 | Traffic Shaping And The Agere Definition Of Scheduler     338 | 
| 22.9 | CBR Shaping     340 | 
| 22.10 | VBR Shaping     340 | 
| 22.11 | Bandwidth Allocation In A Packet Switching System     341 | 
| 22.12 | The Two Forms Of Bandwidth Allocation     341 | 
| 22.13 | Fixed Bandwidth Allocation     342 | 
| 22.14 | Implementation Of Fixed Allocation     342 | 
| 22.15 | Proportional Bandwidth Allocation     343 | 
| 22.16 | An Example Of Proportional Allocation     343 | 
| 22.17 | Implementation Of Proportional Bandwidth Allocation     345 | 
| 22.18 | Smoothed Deficit Weighted Round Robin     345 | 
| 22.19 | A Hierarchy Of Queues     346 | 
| 22.20 | Traffic Management Mechanisms On The APP550     346 | 
| 22.21 | Summary     348 | 
|  | For Further Study    349 
 | 
| 23.1 | Introduction     351 | 
| 23.2 | Motivation For An External Processor     351 | 
| 23.3 | Role Of An External Host Processor     352 | 
| 23.4 | Physical Interconnection To An External Host     353 | 
| 23.5 | Packet Exchange And The Concept Of Pseudo Interface     353 | 
| 23.6 | An Application Program Interface For External Hosts     353 | 
| 23.7 | Programming Paradigm And Handle Declarations     354 | 
| 23.8 | Initialization Functions     355 | 
| 23.9 | Examples Of Object Functions     356 | 
| 23.10 | A Dynamic Classification Example     357 | 
| 23.11 | An Example Of Slow Path Packet Transfer     359 | 
| 23.12 | Summary     361 | 
|  | For Further Study    362 
 | 
|  | Exercises    362 
 | 
| 24.1 | Introduction     365 | 
| 24.2 | An ISP Access Node     365 | 
| 24.3 | Differentiated Services (DiffServ)     366 | 
| 24.4 | Mapping SLA Requirements To DiffServ Classes     367 | 
| 24.5 | Queues, Destination IDs, And Classification     369 | 
| 24.6 | Policing, Coloring, And Flow IDs     374 | 
| 24.7 | Example Code: Classification (FPL)     375 | 
| 24.8 | Example Code: Policing Scripts     386 | 
| 24.9 | Buffer Management And Packet Discard     388 | 
| 24.10 | Example Code: Buffer Management And Discard (WRED)     389 | 
| 24.11 | Scheduler     391 | 
| 24.12 | Dynamic Scheduler     393 | 
| 24.13 | Example Code: SDWRR Scheduler     393 | 
| 24.14 | Packet Marking (Modification)     396 | 
| 24.15 | Example Code: Packet Marking     396 | 
| 24.16 | Example Code: Host Interface     397 | 
| 24.17 | Summary     401 | 
|  | For Further Study    402 
 | 
|  | Exercises    402 
 |