Description
A no-nonsense guide to Linux networking, Understanding Linux Network Internals offers a clear view of the underlying concepts and teaches you to follow the C code that implements it. Topics include system initialization, network interface card (NIC) device drivers, bridging, routing, ICMP, and more. Numerous diagrams, flowcharts, and examples deliver optimum understandability.
Table of Contents
-
General Background
-
Chapter 1 Introduction
- Basic Terminology
- Common Coding Patterns
- User-Space Tools
- Browsing the Source Code
- When a Feature Is Offered as a Patch
-
Chapter 2 Critical Data Structures
- The Socket Buffer: sk_buff Structure
- net_device Structure
- Files Mentioned in This Chapter
-
Chapter 3 User-Space-to-Kernel Interface
- Overview
- procfs Versus sysctl
- ioctl
- Netlink
- Serializing Configuration Changes
-
-
System Initialization
-
Chapter 4 Notification Chains
- Reasons for Notification Chains
- Overview
- Defining a Chain
- Registering with a Chain
- Notifying Events on a Chain
- Notification Chains for the Networking Subsystems
- Tuning via /proc Filesystem
- Functions and Variables Featured in This Chapter
- Files and Directories Featured in This Chapter
-
Chapter 5 Network Device Initialization
- System Initialization Overview
- Device Registration and Initialization
- Basic Goals of NIC Initialization
- Interaction Between Devices and Kernel
- Initialization Options
- Module Options
- Initializing the Device Handling Layer: net_dev_init
- User-Space Helpers
- Virtual Devices
- Tuning via /proc Filesystem
- Functions and Variables Featured in This Chapter
- Files and Directories Featured in This Chapter
-
Chapter 6 The PCI Layer and Network Interface Cards
- Data Structures Featured in This Chapter
- Registering a PCI NIC Device Driver
- Power Management and Wake-on-LAN
- Example of PCI NIC Driver Registration
- The Big Picture
- Tuning via /proc Filesystem
- Functions and Variables Featured in This Chapter
- Files and Directories Featured in This Chapter
-
Chapter 7 Kernel Infrastructure for Component Initialization
- Boot-Time Kernel Options
- Module Initialization Code
- Optimized Macro-Based Tagging
- Boot-Time Initialization Routines
- Memory Optimizations
- Tuning via /proc Filesystem
- Functions and Variables Featured in This Chapter
- Files and Directories Featured in This Chapter
-
Chapter 8 Device Registration and Initialization
- When a Device Is Registered
- When a Device Is Unregistered
- Allocating net_device Structures
- Skeleton of NIC Registration and Unregistration
- Device Initialization
- Organization of net_device Structures
- Device State
- Registering and Unregistering Devices
- Device Registration
- Device Unregistration
- Enabling and Disabling a Network Device
- Updating the Device Queuing Discipline State
- Configuring Device-Related Information from User Space
- Virtual Devices
- Locking
- Tuning via /proc Filesystem
- Functions and Variables Featured in This Chapter
- Files and Directories Featured in This Chapter
-
-
Transmission and Reception
-
Chapter 9 Interrupts and Network Drivers
- Decisions and Traffic Direction
- Notifying Drivers When Frames Are Received
- Interrupt Handlers
- softnet_data Structure
-
Chapter 10 Frame Reception
- Interactions with Other Features
- Enabling and Disabling a Device
- Queues
- Notifying the Kernel of Frame Reception: NAPI and netif_rx
- Old Interface Between Device Drivers and Kernel: First Part of netif_rx
- Congestion Management
- Processing the NET_RX_SOFTIRQ: net_rx_action
-
Chapter 11 Frame Transmission
- Enabling and Disabling Transmissions
-
Chapter 12 General and Reference Material About Interrupts
- Statistics
- Tuning via /proc and sysfs Filesystems
- Functions and Variables Featured in This Part of the Book
- Files and Directories Featured in This Part of the Book
-
Chapter 13 Protocol Handlers
- Overview of Network Stack
- Executing the Right Protocol Handler
- Protocol Handler Organization
- Protocol Handler Registration
- Ethernet Versus IEEE 802.3 Frames
- Tuning via /proc Filesystem
- Functions and Variables Featured in This Chapter
- Files and Directories Featured in This Chapter
-
-
Bridging
-
Chapter 14 Bridging: Concepts
- Repeaters, Bridges, and Routers
- Bridges Versus Switches
- Hosts
- Merging LANs with Bridges
- Bridging Different LAN Technologies
- Address Learning
- Multiple Bridges
-
Chapter 15 Bridging: The Spanning Tree Protocol
- Basic Terminology
- Example of Hierarchical Switched L2 Topology
- Basic Elements of the Spanning Tree Protocol
- Bridge and Port IDs
- Bridge Protocol Data Units (BPDUs)
- Defining the Active Topology
- Timers
- Topology Changes
- BPDU Encapsulation
- Transmitting Configuration BPDUs
- Processing Ingress Frames
- Convergence Time
- Overview of Newer Spanning Tree Protocols
-
Chapter 16 Bridging: Linux Implementation
- Bridge Device Abstraction
- Important Data Structures
- Initialization of Bridging Code
- Creating Bridge Devices and Bridge Ports
- Creating a New Bridge Device
- Bridge Device Setup Routine
- Deleting a Bridge
- Adding Ports to a Bridge
- Enabling and Disabling a Bridge Device
- Enabling and Disabling a Bridge Port
- Changing State on a Bridge Port
- The Big Picture
- Forwarding Database
- Handling Ingress Traffic
- Transmitting on a Bridge Device
- Spanning Tree Protocol (STP)
- netdevice Notification Chain
-
Chapter 17 Bridging: Miscellaneous Topics
- User-Space Configuration Tools
- Tuning via /proc Filesystem
- Tuning via /sys Filesystem
- Statistics
- Data Structures Featured in This Part of the Book
- Functions and Variables Featured in This Part of the Book
- Files and Directories Featured in This Part of the Book
-
-
Internet Protocol Version 4 (IPv4)
-
Chapter 18 Internet Protocol Version 4 (IPv4): Concepts
- IP Protocol: The Big Picture
- IP Header
- IP Options
- Packet Fragmentation/Defragmentation
- Checksums
-
Chapter 19 Internet Protocol Version 4 (IPv4): Linux Foundations and Features
- Main IPv4 Data Structures
- General Packet Handling
- IP Options
-
Chapter 20 Internet Protocol Version 4 (IPv4): Forwarding and Local Delivery
- Forwarding
- Local Delivery
-
Chapter 21 Internet Protocol Version 4 (IPv4): Transmission
- Key Functions That Perform Transmission
- Interface to the Neighboring Subsystem
-
Chapter 22 Internet Protocol Version 4 (IPv4): Handling Fragmentation
- IP Fragmentation
- IP Defragmentation
-
Chapter 23 Internet Protocol Version 4 (IPv4): Miscellaneous Topics
- Long-Living IP Peer Information
- Selecting the IP Header's ID Field
- IP Statistics
- IP Configuration
- IP-over-IP
- IPv4: What's Wrong with It?
- Tuning via /proc Filesystem
- Data Structures Featured in This Part of the Book
- Functions and Variables Featured in This Part of the Book
- Files and Directories Featured in This Part of the Book
-
Chapter 24 Layer Four Protocol and Raw IP Handling
- Available L4 Protocols
- L4 Protocol Registration
- L3 to L4 Delivery: ip_local_deliver_finish
- IPv4 Versus IPv6
- Tuning via /proc Filesystem
- Functions and Variables Featured in This Chapter
- Files and Directories Featured in This Chapter
-
Chapter 25 Internet Control Message Protocol (ICMPv4)
- ICMP Header
- ICMP Payload
- ICMP Types
- Applications of the ICMP Protocol
- The Big Picture
- Protocol Initialization
- Data Structures Featured in This Chapter
- Transmitting ICMP Messages
- ICMP Statistics
- Passing Error Notifications to the Transport Layer
- Tuning via /proc Filesystem
- Functions and Variables Featured in This Chapter
- Files and Directories Featured in This Chapter
-
-
Neighboring Subsystem
-
Chapter 26 Neighboring Subsystem: Concepts
- What Is a Neighbor?
- Reasons That Neighboring Protocols Are Needed
- Linux Implementation
- Proxying the Neighboring Protocol
- When Solicitation Requests Are Transmitted and Processed
- Neighbor States and Network Unreachability Detection (NUD)
-
Chapter 27 Neighboring Subsystem: Infrastructure
- Main Data Structures
- Common Interface Between L3 Protocols and Neighboring Protocols
- General Tasks of the Neighboring Infrastructure
- Reference Counts on neighbour Structures
- Creating a neighbour Entry
- Neighbor Deletion
- Acting As a Proxy
- L2 Header Caching
- Protocol Initialization and Cleanup
- Interaction with Other Subsystems
- Interaction Between Neighboring Protocols and L3 Transmission Functions
- Queuing
-
Chapter 28 Neighboring Subsystem: Address Resolution Protocol (ARP)
- ARP Packet Format
- Example of an ARP Transaction
- Gratuitous ARP
- Responding from Multiple Interfaces
- Tunable ARP Options
- ARP Protocol Initialization
- Initialization of a neighbour Structure
- Transmitting and Receiving ARP Packets
- Processing Ingress ARP Packets
- Proxy ARP
- Examples
- External Events
- ARPD
- Reverse Address Resolution Protocol (RARP)
- Improvements in ND (IPv6) over ARP (IPv4)
-
Chapter 29 Neighboring Subsystem: Miscellaneous Topics
- System Administration of Neighbors
- Tuning via /proc Filesystem
- Data Structures Featured in This Part of the Book
- Files and Directories Featured in This Part of the Book
-
-
Routing
-
Chapter 30 Routing: Concepts
- Routers, Routes, and Routing Tables
- Essential Elements of Routing
- Routing Table
- Lookups
- Packet Reception Versus Packet Transmission
-
Chapter 31 Routing: Advanced
- Concepts Behind Policy Routing
- Concepts Behind Multipath Routing
- Interactions with Other Kernel Subsystems
- Routing Protocol Daemons
- Verbose Monitoring
- ICMP_REDIRECT Messages
- Reverse Path Filtering
-
Chapter 32 Routing: Li nux Implementation
- Kernel Options
- Main Data Structures
- Route and Address Scopes
- Primary and Secondary IP Addresses
- Generic Helper Routines and Macros
- Global Locks
- Routing Subsystem Initialization
- External Events
- Interactions with Other Subsystems
-
Chapter 33 Routing: The Routing Cache
- Routing Cache Initialization
- Hash Table Organization
- Major Cache Operations
- Multipath Caching
- Interface Between the DST and Calling Protocols
- Flushing the Routing Cache
- Garbage Collection
- Egress ICMP REDIRECT Rate Limiting
-
Chapter 34 Routing: Routing Tables
- Organization of Routing Hash Tables
- Routing Table Initialization
- Adding and Removing Routes
- Policy Routing and Its Effects on Routing Table Definitions
-
Chapter 35 Routing: Lookups
- High-Level View of Lookup Functions
- Helper Routines
- The Table Lookup: fn_hash_lookup
- fib_lookup Function
- Setting Functions for Reception and Transmission
- General Structure of the Input and Output Routing Routines
- Input Routing
- Output Routing
- Effects of Multipath on Next Hop Selection
- Policy Routing
- Source Routing
- Policy Routing and Routing Table Based Classifier
-
Chapter 36 Routing: Miscellaneous Topics
- User-Space Configuration Tools
- Statistics
- Tuning via /proc Filesystem
- Enabling and Disabling Forwarding
- Data Structures Featured in This Part of the Book
- Functions and Variables Featured in This Part of the Book
- Files and Directories Featured in This Part of the Book
-
-
Colophon
Product Details
- Title:
- Understanding Linux Network Internals
- By:
- Christian Benvenuti
- Publisher:
- O'Reilly Media
- Formats:
-
- Ebook
- Safari Books Online
- Print Release:
- December 2005
- Ebook Release:
- February 2009
- Pages:
- 1072
- Print ISBN:
- 978-0-596-00255-8
- | ISBN 10:
- 0-596-00255-6
- Ebook ISBN:
- 978-0-596-10367-5
- | ISBN 10:
- 0-596-10367-0
Customer Reviews




