嵌入式linux中文站在线图书

Previous Page
Next Page

Book Cover
Understanding Linux Network Internals
By Christian Benvenuti
...............................................
Publisher: O'Reilly
Pub Date: December 2005
ISBN: 0-596-00255-6
Pages: 1062
 



Table of Contents  | Index

   Copyright
   Preface
      The Audience for This Book
      Background Information
      Organization of the Material
      Conventions Used in This Book
      Using Code Examples
      We'd Like to Hear from You
      Safari Enabled
      Acknowledgments
    Part I:  General Background
          Chapter 1.  Introduction
      Section 1.1.  Basic Terminology
      Section 1.2.  Common Coding Patterns
      Section 1.3.  User-Space Tools
      Section 1.4.  Browsing the Source Code
      Section 1.5.  When a Feature Is Offered as a Patch
          Chapter 2.  Critical Data Structures
      Section 2.1.  The Socket Buffer: sk_buff Structure
      Section 2.2.  net_device Structure
      Section 2.3.  Files Mentioned in This Chapter
          Chapter 3.  User-Space-to-Kernel Interface
      Section 3.1.  Overview
      Section 3.2.  procfs Versus sysctl
      Section 3.3.  ioctl
      Section 3.4.  Netlink
      Section 3.5.  Serializing Configuration Changes
    Part II:  System Initialization
          Chapter 4.  Notification Chains
      Section 4.1.  Reasons for Notification Chains
      Section 4.2.  Overview
      Section 4.3.  Defining a Chain
      Section 4.4.  Registering with a Chain
      Section 4.5.  Notifying Events on a Chain
      Section 4.6.  Notification Chains for the Networking Subsystems
      Section 4.7.  Tuning via /proc Filesystem
      Section 4.8.  Functions and Variables Featured in This Chapter
      Section 4.9.  Files and Directories Featured in This Chapter
          Chapter 5.  Network Device Initialization
      Section 5.1.  System Initialization Overview
      Section 5.2.  Device Registration and Initialization
      Section 5.3.  Basic Goals of NIC Initialization
      Section 5.4.  Interaction Between Devices and Kernel
      Section 5.5.  Initialization Options
      Section 5.6.  Module Options
      Section 5.7.  Initializing the Device Handling Layer: net_dev_init
      Section 5.8.  User-Space Helpers
      Section 5.9.  Virtual Devices
      Section 5.10.  Tuning via /proc Filesystem
      Section 5.11.  Functions and Variables Featured in This Chapter
      Section 5.12.  Files and Directories Featured in This Chapter
          Chapter 6.  The PCI Layer and Network Interface Cards
      Section 6.1.  Data Structures Featured in This Chapter
      Section 6.2.  Registering a PCI NIC Device Driver
      Section 6.3.  Power Management and Wake-on-LAN
      Section 6.4.  Example of PCI NIC Driver Registration
      Section 6.5.  The Big Picture
      Section 6.6.  Tuning via /proc Filesystem
      Section 6.7.  Functions and Variables Featured in This Chapter
      Section 6.8.  Files and Directories Featured in This Chapter
          Chapter 7.  Kernel Infrastructure for Component Initialization
      Section 7.1.  Boot-Time Kernel Options
      Section 7.2.  Module Initialization Code
      Section 7.3.  Optimized Macro-Based Tagging
      Section 7.4.  Boot-Time Initialization Routines
      Section 7.5.  Memory Optimizations
      Section 7.6.  Tuning via /proc Filesystem
      Section 7.7.  Functions and Variables Featured in This Chapter
      Section 7.8.  Files and Directories Featured in This Chapter
          Chapter 8.  Device Registration and Initialization
      Section 8.1.  When a Device Is Registered
      Section 8.2.  When a Device Is Unregistered
      Section 8.3.  Allocating net_device Structures
      Section 8.4.  Skeleton of NIC Registration and Unregistration
      Section 8.5.  Device Initialization
      Section 8.6.  Organization of net_device Structures
      Section 8.7.  Device State
      Section 8.8.  Registering and Unregistering Devices
      Section 8.9.  Device Registration
      Section 8.10.  Device Unregistration
      Section 8.11.  Enabling and Disabling a Network Device
      Section 8.12.  Updating the Device Queuing Discipline State
      Section 8.13.  Configuring Device-Related Information from User Space
      Section 8.14.  Virtual Devices
      Section 8.15.  Locking
      Section 8.16.  Tuning via /proc Filesystem
      Section 8.17.  Functions and Variables Featured in This Chapter
      Section 8.18.  Files and Directories Featured in This Chapter
    Part III:  Transmission and Reception
          Chapter 9.  Interrupts and Network Drivers
      Section 9.1.  Decisions and Traffic Direction
      Section 9.2.  Notifying Drivers When Frames Are Received
      Section 9.3.  Interrupt Handlers
      Section 9.4.  softnet_data Structure
          Chapter 10.  Frame Reception
      Section 10.1.  Interactions with Other Features
      Section 10.2.  Enabling and Disabling a Device
      Section 10.3.  Queues
      Section 10.4.  Notifying the Kernel of Frame Reception: NAPI and netif_rx
      Section 10.5.  Old Interface Between Device Drivers and Kernel: First Part of netif_rx
      Section 10.6.  Congestion Management
      Section 10.7.  Processing the NET_RX_SOFTIRQ: net_rx_action
          Chapter 11.  Frame Transmission
      Section 11.1.  Enabling and Disabling Transmissions
          Chapter 12.  General and Reference Material About Interrupts
      Section 12.1.  Statistics
      Section 12.2.  Tuning via /proc and sysfs Filesystems
      Section 12.3.  Functions and Variables Featured in This Part of the Book
      Section 12.4.  Files and Directories Featured in This Part of the Book
          Chapter 13.  Protocol Handlers
      Section 13.1.  Overview of Network Stack
      Section 13.2.  Executing the Right Protocol Handler
      Section 13.3.  Protocol Handler Organization
      Section 13.4.  Protocol Handler Registration
      Section 13.5.  Ethernet Versus IEEE 802.3 Frames
      Section 13.6.  Tuning via /proc Filesystem
      Section 13.7.  Functions and Variables Featured in This Chapter
      Section 13.8.  Files and Directories Featured in This Chapter
    Part IV:  Bridging
          Chapter 14.  Bridging: Concepts
      Section 14.1.  Repeaters, Bridges, and Routers
      Section 14.2.  Bridges Versus Switches
      Section 14.3.  Hosts
      Section 14.4.  Merging LANs with Bridges
      Section 14.5.  Bridging Different LAN Technologies
      Section 14.6.  Address Learning
      Section 14.7.  Multiple Bridges
          Chapter 15.  Bridging: The Spanning Tree Protocol
      Section 15.1.  Basic Terminology
      Section 15.2.  Example of Hierarchical Switched L2 Topology
      Section 15.3.  Basic Elements of the Spanning Tree Protocol
      Section 15.4.  Bridge and Port IDs
      Section 15.5.  Bridge Protocol Data Units (BPDUs)
      Section 15.6.  Defining the Active Topology
      Section 15.7.  Timers
      Section 15.8.  Topology Changes
      Section 15.9.  BPDU Encapsulation
      Section 15.10.  Transmitting Configuration BPDUs
      Section 15.11.  Processing Ingress Frames
      Section 15.12.  Convergence Time
      Section 15.13.  Overview of Newer Spanning Tree Protocols
          Chapter 16.  Bridging: Linux Implementation
      Section 16.1.  Bridge Device Abstraction
      Section 16.2.  Important Data Structures
      Section 16.3.  Initialization of Bridging Code
      Section 16.4.  Creating Bridge Devices and Bridge Ports
      Section 16.5.  Creating a New Bridge Device
      Section 16.6.  Bridge Device Setup Routine
      Section 16.7.  Deleting a Bridge
      Section 16.8.  Adding Ports to a Bridge
      Section 16.9.  Enabling and Disabling a Bridge Device
      Section 16.10.  Enabling and Disabling a Bridge Port
      Section 16.11.  Changing State on a Bridge Port
      Section 16.12.  The Big Picture
      Section 16.13.  Forwarding Database
      Section 16.14.  Handling Ingress Traffic
      Section 16.15.  Transmitting on a Bridge Device
      Section 16.16.  Spanning Tree Protocol (STP)
      Section 16.17.  netdevice Notification Chain
          Chapter 17.  Bridging: Miscellaneous Topics
      Section 17.1.  User-Space Configuration Tools
      Section 17.2.  Tuning via /proc Filesystem
      Section 17.3.  Tuning via /sys Filesystem
      Section 17.4.  Statistics
      Section 17.5.  Data Structures Featured in This Part of the Book
      Section 17.6.  Functions and Variables Featured in This Part of the Book
      Section 17.7.  Files and Directories Featured in This Part of the Book
    Part V:  Internet Protocol Version 4 (IPv4)
          Chapter 18.  Internet Protocol Version 4 (IPv4): Concepts
      Section 18.1.  IP Protocol: The Big Picture
      Section 18.2.  IP Header
      Section 18.3.  IP Options
      Section 18.4.  Packet Fragmentation/Defragmentation
      Section 18.5.  Checksums
          Chapter 19.  Internet Protocol Version 4 (IPv4): Linux Foundations and Features
      Section 19.1.  Main IPv4 Data Structures
      Section 19.2.  General Packet Handling
      Section 19.3.  IP Options
          Chapter 20.  Internet Protocol Version 4 (IPv4): Forwarding and Local Delivery
      Section 20.1.  Forwarding
      Section 20.2.  Local Delivery
          Chapter 21.  Internet Protocol Version 4 (IPv4): Transmission
      Section 21.1.  Key Functions That Perform Transmission
      Section 21.2.  Interface to the Neighboring Subsystem
          Chapter 22.  Internet Protocol Version 4 (IPv4): Handling Fragmentation
      Section 22.1.  IP Fragmentation
      Section 22.2.  IP Defragmentation
          Chapter 23.  Internet Protocol Version 4 (IPv4): Miscellaneous Topics
      Section 23.1.  Long-Living IP Peer Information
      Section 23.2.  Selecting the IP Header's ID Field
      Section 23.3.  IP Statistics
      Section 23.4.  IP Configuration
      Section 23.5.  IP-over-IP
      Section 23.6.  IPv4: What's Wrong with It?
      Section 23.7.  Tuning via /proc Filesystem
      Section 23.8.  Data Structures Featured in This Part of the Book
      Section 23.9.  Functions and Variables Featured in This Part of the Book
      Section 23.10.  Files and Directories Featured in This Part of the Book
          Chapter 24.  Layer Four Protocol and Raw IP Handling
      Section 24.1.  Available L4 Protocols
      Section 24.2.  L4 Protocol Registration
      Section 24.3.  L3 to L4 Delivery: ip_local_deliver_finish
      Section 24.4.  IPv4 Versus IPv6
      Section 24.5.  Tuning via /proc Filesystem
      Section 24.6.  Functions and Variables Featured in This Chapter
      Section 24.7.  Files and Directories Featured in This Chapter
          Chapter 25.  Internet Control Message Protocol (ICMPv4)
      Section 25.1.  ICMP Header
      Section 25.2.  ICMP Payload
      Section 25.3.  ICMP Types
      Section 25.4.  Applications of the ICMP Protocol
      Section 25.5.  The Big Picture
      Section 25.6.  Protocol Initialization
      Section 25.7.  Data Structures Featured in This Chapter
      Section 25.8.  Transmitting ICMP Messages
      Section 25.9.  ICMP Statistics
      Section 25.10.  Passing Error Notifications to the Transport Layer
      Section 25.11.  Tuning via /proc Filesystem
      Section 25.12.  Functions and Variables Featured in This Chapter
      Section 25.13.  Files and Directories Featured in This Chapter
    Part VI:  Neighboring Subsystem
          Chapter 26.  Neighboring Subsystem: Concepts
      Section 26.1.  What Is a Neighbor?
      Section 26.2.  Reasons That Neighboring Protocols Are Needed
      Section 26.3.  Linux Implementation
      Section 26.4.  Proxying the Neighboring Protocol
      Section 26.5.  When Solicitation Requests Are Transmitted and Processed
      Section 26.6.  Neighbor States and Network Unreachability Detection (NUD)
          Chapter 27.  Neighboring Subsystem: Infrastructure
      Section 27.1.  Main Data Structures
      Section 27.2.  Common Interface Between L3 Protocols and Neighboring Protocols
      Section 27.3.  General Tasks of the Neighboring Infrastructure
      Section 27.4.  Reference Counts on neighbour Structures
      Section 27.5.  Creating a neighbour Entry
      Section 27.6.  Neighbor Deletion
      Section 27.7.  Acting As a Proxy
      Section 27.8.  L2 Header Caching
      Section 27.9.  Protocol Initialization and Cleanup
      Section 27.10.  Interaction with Other Subsystems
      Section 27.11.  Interaction Between Neighboring Protocols and L3 Transmission Functions
      Section 27.12.  Queuing
          Chapter 28.  Neighboring Subsystem: Address Resolution Protocol (ARP)
      Section 28.1.  ARP Packet Format
      Section 28.2.  Example of an ARP Transaction
      Section 28.3.  Gratuitous ARP
      Section 28.4.  Responding from Multiple Interfaces
      Section 28.5.  Tunable ARP Options
      Section 28.6.  ARP Protocol Initialization
      Section 28.7.  Initialization of a neighbour Structure
      Section 28.8.  Transmitting and Receiving ARP Packets
      Section 28.9.  Processing Ingress ARP Packets
      Section 28.10.  Proxy ARP
      Section 28.11.  Examples
      Section 28.12.  External Events
      Section 28.13.  ARPD
      Section 28.14.  Reverse Address Resolution Protocol (RARP)
      Section 28.15.  Improvements in ND (IPv6) over ARP (IPv4)
          Chapter 29.  Neighboring Subsystem: Miscellaneous Topics
      Section 29.1.  System Administration of Neighbors
      Section 29.2.  Tuning via /proc Filesystem
      Section 29.3.  Data Structures Featured in This Part of the Book
      Section 29.4.  Files and Directories Featured in This Part of the Book
    Part VII:  Routing
          Chapter 30.  Routing: Concepts
      Section 30.1.  Routers, Routes, and Routing Tables
      Section 30.2.  Essential Elements of Routing
      Section 30.3.  Routing Table
      Section 30.4.  Lookups
      Section 30.5.  Packet Reception Versus Packet Transmission
          Chapter 31.  Routing: Advanced
      Section 31.1.  Concepts Behind Policy Routing
      Section 31.2.  Concepts Behind Multipath Routing
      Section 31.3.  Interactions with Other Kernel Subsystems
      Section 31.4.  Routing Protocol Daemons
      Section 31.5.  Verbose Monitoring
      Section 31.6.  ICMP_REDIRECT Messages
      Section 31.7.  Reverse Path Filtering
          Chapter 32.  Routing: Li nux Implementation
      Section 32.1.  Kernel Options
      Section 32.2.  Main Data Structures
      Section 32.3.  Route and Address Scopes
      Section 32.4.  Primary and Secondary IP Addresses
      Section 32.5.  Generic Helper Routines and Macros
      Section 32.6.  Global Locks
      Section 32.7.  Routing Subsystem Initialization
      Section 32.8.  External Events
      Section 32.9.  Interactions with Other Subsystems
          Chapter 33.  Routing: The Routing Cache
      Section 33.1.  Routing Cache Initialization
      Section 33.2.  Hash Table Organization
      Section 33.3.  Major Cache Operations
      Section 33.4.  Multipath Caching
      Section 33.5.  Interface Between the DST and Calling Protocols
      Section 33.6.  Flushing the Routing Cache
      Section 33.7.  Garbage Collection
      Section 33.8.  Egress ICMP REDIRECT Rate Limiting
          Chapter 34.  Routing: Routing Tables
      Section 34.1.  Organization of Routing Hash Tables
      Section 34.2.  Routing Table Initialization
      Section 34.3.  Adding and Removing Routes
      Section 34.4.  Policy Routing and Its Effects on Routing Table Definitions
          Chapter 35.  Routing: Lookups
      Section 35.1.  High-Level View of Lookup Functions
      Section 35.2.  Helper Routines
      Section 35.3.  The Table Lookup: fn_hash_lookup
      Section 35.4.  fib_lookup Function
      Section 35.5.  Setting Functions for Reception and Transmission
      Section 35.6.  General Structure of the Input and Output Routing Routines
      Section 35.7.  Input Routing
      Section 35.8.  Output Routing
      Section 35.9.  Effects of Multipath on Next Hop Selection
      Section 35.10.  Policy Routing
      Section 35.11.  Source Routing
      Section 35.12.  Policy Routing and Routing Table Based Classifier
          Chapter 36.  Routing: Miscellaneous Topics
      Section 36.1.  User-Space Configuration Tools
      Section 36.2.  Statistics
      Section 36.3.  Tuning via /proc Filesystem
      Section 36.4.  Enabling and Disabling Forwarding
      Section 36.5.  Data Structures Featured in This Part of the Book
      Section 36.6.  Functions and Variables Featured in This Part of the Book
      Section 36.7.  Files and Directories Featured in This Part of the Book
   About the Authors
   Colophon
   Index

Previous Page
Next Page