c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyNetwork Working Group Internet Engineering Task Force
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRequest for Comments: 1122 R. Braden, Editor
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Requirements for Internet Hosts -- Communication Layers
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyStatus of This Memo
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This RFC is an official specification for the Internet community. It
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley incorporates by reference, amends, corrects, and supplements the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley primary protocol standards documents relating to hosts. Distribution
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of this document is unlimited.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleySummary
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This is one RFC of a pair that defines and discusses the requirements
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for Internet host software. This RFC covers the communications
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocol layers: link layer, IP layer, and transport layer; its
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley companion RFC-1123 covers the application and support protocols.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Table of Contents
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1. INTRODUCTION ............................................... 5
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.1 The Internet Architecture .............................. 6
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.1.1 Internet Hosts .................................... 6
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.1.2 Architectural Assumptions ......................... 7
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.1.3 Internet Protocol Suite ........................... 8
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.1.4 Embedded Gateway Code ............................. 10
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.2 General Considerations ................................. 12
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.2.1 Continuing Internet Evolution ..................... 12
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.2.2 Robustness Principle .............................. 12
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.2.3 Error Logging ..................................... 13
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.2.4 Configuration ..................................... 14
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.3 Reading this Document .................................. 15
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.3.1 Organization ...................................... 15
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.3.2 Requirements ...................................... 16
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.3.3 Terminology ....................................... 17
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.4 Acknowledgments ........................................ 20
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2. LINK LAYER .................................................. 21
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.1 INTRODUCTION ........................................... 21
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 1]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.2 PROTOCOL WALK-THROUGH .................................. 21
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.3 SPECIFIC ISSUES ........................................ 21
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.3.1 Trailer Protocol Negotiation ...................... 21
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.3.2 Address Resolution Protocol -- ARP ................ 22
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.3.2.1 ARP Cache Validation ......................... 22
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.3.2.2 ARP Packet Queue ............................. 24
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.3.3 Ethernet and IEEE 802 Encapsulation ............... 24
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.4 LINK/INTERNET LAYER INTERFACE .......................... 25
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.5 LINK LAYER REQUIREMENTS SUMMARY ........................ 26
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3. INTERNET LAYER PROTOCOLS .................................... 27
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.1 INTRODUCTION ............................................ 27
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2 PROTOCOL WALK-THROUGH .................................. 29
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1 Internet Protocol -- IP ............................ 29
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.1 Version Number ............................... 29
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.2 Checksum ..................................... 29
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.3 Addressing ................................... 29
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.4 Fragmentation and Reassembly ................. 32
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.5 Identification ............................... 32
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.6 Type-of-Service .............................. 33
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.7 Time-to-Live ................................. 34
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.8 Options ...................................... 35
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2 Internet Control Message Protocol -- ICMP .......... 38
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.1 Destination Unreachable ...................... 39
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.2 Redirect ..................................... 40
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.3 Source Quench ................................ 41
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.4 Time Exceeded ................................ 41
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.5 Parameter Problem ............................ 42
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.6 Echo Request/Reply ........................... 42
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.7 Information Request/Reply .................... 43
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.8 Timestamp and Timestamp Reply ................ 43
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.9 Address Mask Request/Reply ................... 45
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.3 Internet Group Management Protocol IGMP ........... 47
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3 SPECIFIC ISSUES ........................................ 47
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1 Routing Outbound Datagrams ........................ 47
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1.1 Local/Remote Decision ........................ 47
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1.2 Gateway Selection ............................ 48
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1.3 Route Cache .................................. 49
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1.4 Dead Gateway Detection ....................... 51
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1.5 New Gateway Selection ........................ 55
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1.6 Initialization ............................... 56
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.2 Reassembly ........................................ 56
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.3 Fragmentation ..................................... 58
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.4 Local Multihoming ................................. 60
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.4.1 Introduction ................................. 60
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.4.2 Multihoming Requirements ..................... 61
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.4.3 Choosing a Source Address .................... 64
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.5 Source Route Forwarding ........................... 65
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 2]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.6 Broadcasts ........................................ 66
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.7 IP Multicasting ................................... 67
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.8 Error Reporting ................................... 69
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.4 INTERNET/TRANSPORT LAYER INTERFACE ..................... 69
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.5 INTERNET LAYER REQUIREMENTS SUMMARY .................... 72
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4. TRANSPORT PROTOCOLS ......................................... 77
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1 USER DATAGRAM PROTOCOL -- UDP .......................... 77
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.1 INTRODUCTION ...................................... 77
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.2 PROTOCOL WALK-THROUGH ............................. 77
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3 SPECIFIC ISSUES ................................... 77
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3.1 Ports ........................................ 77
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3.2 IP Options ................................... 77
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3.3 ICMP Messages ................................ 78
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3.4 UDP Checksums ................................ 78
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3.5 UDP Multihoming .............................. 79
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3.6 Invalid Addresses ............................ 79
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.4 UDP/APPLICATION LAYER INTERFACE ................... 79
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.5 UDP REQUIREMENTS SUMMARY .......................... 80
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2 TRANSMISSION CONTROL PROTOCOL -- TCP ................... 82
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.1 INTRODUCTION ...................................... 82
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2 PROTOCOL WALK-THROUGH ............................. 82
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.1 Well-Known Ports ............................. 82
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.2 Use of Push .................................. 82
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.3 Window Size .................................. 83
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.4 Urgent Pointer ............................... 84
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.5 TCP Options .................................. 85
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.6 Maximum Segment Size Option .................. 85
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.7 TCP Checksum ................................. 86
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.8 TCP Connection State Diagram ................. 86
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.9 Initial Sequence Number Selection ............ 87
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.10 Simultaneous Open Attempts .................. 87
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.11 Recovery from Old Duplicate SYN ............. 87
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.12 RST Segment ................................. 87
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.13 Closing a Connection ........................ 87
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.14 Data Communication .......................... 89
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.15 Retransmission Timeout ...................... 90
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.16 Managing the Window ......................... 91
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.17 Probing Zero Windows ........................ 92
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.18 Passive OPEN Calls .......................... 92
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.19 Time to Live ................................ 93
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.20 Event Processing ............................ 93
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.21 Acknowledging Queued Segments ............... 94
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3 SPECIFIC ISSUES ................................... 95
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.1 Retransmission Timeout Calculation ........... 95
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.2 When to Send an ACK Segment .................. 96
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.3 When to Send a Window Update ................. 97
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.4 When to Send Data ............................ 98
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 3]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.5 TCP Connection Failures ...................... 100
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.6 TCP Keep-Alives .............................. 101
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.7 TCP Multihoming .............................. 103
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.8 IP Options ................................... 103
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.9 ICMP Messages ................................ 103
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.10 Remote Address Validation ................... 104
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.11 TCP Traffic Patterns ........................ 104
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.12 Efficiency .................................. 105
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.4 TCP/APPLICATION LAYER INTERFACE ................... 106
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.4.1 Asynchronous Reports ......................... 106
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.4.2 Type-of-Service .............................. 107
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.4.3 Flush Call ................................... 107
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.4.4 Multihoming .................................. 108
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.5 TCP REQUIREMENT SUMMARY ........................... 108
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 5. REFERENCES ................................................. 112
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 4]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley1. INTRODUCTION
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This document is one of a pair that defines and discusses the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley requirements for host system implementations of the Internet protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley suite. This RFC covers the communication protocol layers: link
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer, IP layer, and transport layer. Its companion RFC,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "Requirements for Internet Hosts -- Application and Support"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [INTRO:1], covers the application layer protocols. This document
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley should also be read in conjunction with "Requirements for Internet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Gateways" [INTRO:2].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley These documents are intended to provide guidance for vendors,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementors, and users of Internet communication software. They
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley represent the consensus of a large body of technical experience and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley wisdom, contributed by the members of the Internet research and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley vendor communities.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This RFC enumerates standard protocols that a host connected to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet must use, and it incorporates by reference the RFCs and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley other documents describing the current specifications for these
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocols. It corrects errors in the referenced documents and adds
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley additional discussion and guidance for an implementor.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley For each protocol, this document also contains an explicit set of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley requirements, recommendations, and options. The reader must
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley understand that the list of requirements in this document is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley incomplete by itself; the complete set of requirements for an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet host is primarily defined in the standard protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specification documents, with the corrections, amendments, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley supplements contained in this RFC.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A good-faith implementation of the protocols that was produced after
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley careful reading of the RFC's and with some interaction with the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet technical community, and that followed good communications
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley software engineering practices, should differ from the requirements
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of this document in only minor ways. Thus, in many cases, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "requirements" in this RFC are already stated or implied in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley standard protocol documents, so that their inclusion here is, in a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sense, redundant. However, they were included because some past
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementation has made the wrong choice, causing problems of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interoperability, performance, and/or robustness.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This document includes discussion and explanation of many of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley requirements and recommendations. A simple list of requirements
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley would be dangerous, because:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Some required features are more important than others, and some
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley features are optional.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 5]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o There may be valid reasons why particular vendor products that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley are designed for restricted contexts might choose to use
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley different specifications.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley However, the specifications of this document must be followed to meet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the general goal of arbitrary host interoperation across the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley diversity and complexity of the Internet system. Although most
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley current implementations fail to meet these requirements in various
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ways, some minor and some major, this specification is the ideal
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley towards which we need to move.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley These requirements are based on the current level of Internet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley architecture. This document will be updated as required to provide
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley additional clarifications or to include additional information in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley those areas in which specifications are still evolving.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This introductory section begins with a brief overview of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet architecture as it relates to hosts, and then gives some
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley general advice to host software vendors. Finally, there is some
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley guidance on reading the rest of the document and some terminology.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.1 The Internet Architecture
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley General background and discussion on the Internet architecture and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley supporting protocol suite can be found in the DDN Protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Handbook [INTRO:3]; for background see for example [INTRO:9],
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [INTRO:10], and [INTRO:11]. Reference [INTRO:5] describes the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley procedure for obtaining Internet protocol documents, while
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [INTRO:6] contains a list of the numbers assigned within Internet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocols.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.1.1 Internet Hosts
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host computer, or simply "host," is the ultimate consumer of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley communication services. A host generally executes application
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley programs on behalf of user(s), employing network and/or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet communication services in support of this function.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An Internet host corresponds to the concept of an "End-System"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley used in the OSI protocol suite [INTRO:13].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An Internet communication system consists of interconnected
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley packet networks supporting communication among host computers
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley using the Internet protocols. The networks are interconnected
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley using packet-switching computers called "gateways" or "IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley routers" by the Internet community, and "Intermediate Systems"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley by the OSI world [INTRO:13]. The RFC "Requirements for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet Gateways" [INTRO:2] contains the official
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specifications for Internet gateways. That RFC together with
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 6]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the present document and its companion [INTRO:1] define the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley rules for the current realization of the Internet architecture.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet hosts span a wide range of size, speed, and function.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley They range in size from small microprocessors through
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley workstations to mainframes and supercomputers. In function,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley they range from single-purpose hosts (such as terminal servers)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to full-service hosts that support a variety of online network
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley services, typically including remote login, file transfer, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley electronic mail.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host is generally said to be multihomed if it has more than
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley one interface to the same or to different networks. See
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Section 1.1.3 on "Terminology".
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.1.2 Architectural Assumptions
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The current Internet architecture is based on a set of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley assumptions about the communication system. The assumptions
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley most relevant to hosts are as follows:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) The Internet is a network of networks.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Each host is directly connected to some particular
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network(s); its connection to the Internet is only
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley conceptual. Two hosts on the same network communicate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley with each other using the same set of protocols that they
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley would use to communicate with hosts on distant networks.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) Gateways don't keep connection state information.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley To improve robustness of the communication system,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateways are designed to be stateless, forwarding each IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram independently of other datagrams. As a result,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley redundant paths can be exploited to provide robust service
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in spite of failures of intervening gateways and networks.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley All state information required for end-to-end flow control
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and reliability is implemented in the hosts, in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transport layer or in application programs. All
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection control information is thus co-located with the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley end points of the communication, so it will be lost only
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley if an end point fails.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (c) Routing complexity should be in the gateways.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Routing is a complex and difficult problem, and ought to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be performed by the gateways, not the hosts. An important
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 7]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley objective is to insulate host software from changes caused
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley by the inevitable evolution of the Internet routing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley architecture.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (d) The System must tolerate wide network variation.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A basic objective of the Internet design is to tolerate a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley wide range of network characteristics -- e.g., bandwidth,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley delay, packet loss, packet reordering, and maximum packet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley size. Another objective is robustness against failure of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley individual networks, gateways, and hosts, using whatever
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley bandwidth is still available. Finally, the goal is full
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "open system interconnection": an Internet host must be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley able to interoperate robustly and effectively with any
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley other Internet host, across diverse Internet paths.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Sometimes host implementors have designed for less
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ambitious goals. For example, the LAN environment is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley typically much more benign than the Internet as a whole;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley LANs have low packet loss and delay and do not reorder
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley packets. Some vendors have fielded host implementations
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that are adequate for a simple LAN environment, but work
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley badly for general interoperation. The vendor justifies
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley such a product as being economical within the restricted
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley LAN market. However, isolated LANs seldom stay isolated
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for long; they are soon gatewayed to each other, to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley organization-wide internets, and eventually to the global
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet system. In the end, neither the customer nor the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley vendor is served by incomplete or substandard Internet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host software.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The requirements spelled out in this document are designed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for a full-function Internet host, capable of full
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interoperation over an arbitrary Internet path.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.1.3 Internet Protocol Suite
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley To communicate using the Internet system, a host must implement
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the layered set of protocols comprising the Internet protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley suite. A host typically must implement at least one protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley from each layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The protocol layers used in the Internet architecture are as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley follows [INTRO:4]:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Application Layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 8]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The application layer is the top layer of the Internet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocol suite. The Internet suite does not further
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley subdivide the application layer, although some of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet application layer protocols do contain some
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley internal sub-layering. The application layer of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet suite essentially combines the functions of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley top two layers -- Presentation and Application -- of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley OSI reference model.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley We distinguish two categories of application layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocols: user protocols that provide service directly
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to users, and support protocols that provide common system
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley functions. Requirements for user and support protocols
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley will be found in the companion RFC [INTRO:1].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The most common Internet user protocols are:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Telnet (remote login)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o FTP (file transfer)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o SMTP (electronic mail delivery)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There are a number of other standardized user protocols
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [INTRO:4] and many private user protocols.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Support protocols, used for host name mapping, booting,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and management, include SNMP, BOOTP, RARP, and the Domain
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Name System (DNS) protocols.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Transport Layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The transport layer provides end-to-end communication
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley services for applications. There are two primary
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transport layer protocols at present:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Transmission Control Protocol (TCP)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o User Datagram Protocol (UDP)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP is a reliable connection-oriented transport service
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that provides end-to-end reliability, resequencing, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley flow control. UDP is a connectionless ("datagram")
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transport service.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Other transport protocols have been developed by the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley research community, and the set of official Internet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transport protocols may be expanded in the future.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Transport layer protocols are discussed in Chapter 4.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 9]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Internet Layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley All Internet transport protocols use the Internet Protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (IP) to carry data from source host to destination host.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP is a connectionless or datagram internetwork service,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley providing no end-to-end delivery guarantees. Thus, IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagrams may arrive at the destination host damaged,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley duplicated, out of order, or not at all. The layers above
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP are responsible for reliable delivery service when it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is required. The IP protocol includes provision for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addressing, type-of-service specification, fragmentation
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and reassembly, and security information.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The datagram or connectionless nature of the IP protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is a fundamental and characteristic feature of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet architecture. Internet IP was the model for the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley OSI Connectionless Network Protocol [INTRO:12].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP is a control protocol that is considered to be an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley integral part of IP, although it is architecturally
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layered upon IP, i.e., it uses IP to carry its data end-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to-end just as a transport protocol like TCP or UDP does.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP provides error reporting, congestion reporting, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley first-hop gateway redirection.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IGMP is an Internet layer protocol used for establishing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley dynamic host groups for IP multicasting.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Internet layer protocols IP, ICMP, and IGMP are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley discussed in Chapter 3.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Link Layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley To communicate on its directly-connected network, a host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley must implement the communication protocol used to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interface to that network. We call this a link layer or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley media-access layer protocol.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There is a wide variety of link layer protocols,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley corresponding to the many different types of networks.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley See Chapter 2.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.1.4 Embedded Gateway Code
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some Internet host software includes embedded gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley functionality, so that these hosts can forward packets as a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 10]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway would, while still performing the application layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley functions of a host.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Such dual-purpose systems must follow the Gateway Requirements
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RFC [INTRO:2] with respect to their gateway functions, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley must follow the present document with respect to their host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley functions. In all overlapping cases, the two specifications
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley should be in agreement.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There are varying opinions in the Internet community about
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley embedded gateway functionality. The main arguments are as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley follows:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Pro: in a local network environment where networking is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley informal, or in isolated internets, it may be convenient
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and economical to use existing host systems as gateways.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There is also an architectural argument for embedded
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway functionality: multihoming is much more common
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley than originally foreseen, and multihoming forces a host to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley make routing decisions as if it were a gateway. If the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multihomed host contains an embedded gateway, it will
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley have full routing knowledge and as a result will be able
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to make more optimal routing decisions.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Con: Gateway algorithms and protocols are still changing,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and they will continue to change as the Internet system
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley grows larger. Attempting to include a general gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley function within the host IP layer will force host system
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley maintainers to track these (more frequent) changes. Also,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a larger pool of gateway implementations will make
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley coordinating the changes more difficult. Finally, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley complexity of a gateway IP layer is somewhat greater than
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that of a host, making the implementation and operation
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley tasks more complex.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In addition, the style of operation of some hosts is not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley appropriate for providing stable and robust gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley service.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There is considerable merit in both of these viewpoints. One
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley conclusion can be drawn: an host administrator must have
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley conscious control over whether or not a given host acts as a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway. See Section 3.1 for the detailed requirements.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 11]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.2 General Considerations
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There are two important lessons that vendors of Internet host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley software have learned and which a new vendor should consider
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley seriously.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.2.1 Continuing Internet Evolution
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The enormous growth of the Internet has revealed problems of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley management and scaling in a large datagram-based packet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley communication system. These problems are being addressed, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley as a result there will be continuing evolution of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specifications described in this document. These changes will
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be carefully planned and controlled, since there is extensive
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley participation in this planning by the vendors and by the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley organizations responsible for operations of the networks.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Development, evolution, and revision are characteristic of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley computer network protocols today, and this situation will
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley persist for some years. A vendor who develops computer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley communication software for the Internet protocol suite (or any
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley other protocol suite!) and then fails to maintain and update
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that software for changing specifications is going to leave a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley trail of unhappy customers. The Internet is a large
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley communication network, and the users are in constant contact
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley through it. Experience has shown that knowledge of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley deficiencies in vendor software propagates quickly through the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet technical community.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.2.2 Robustness Principle
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley At every layer of the protocols, there is a general rule whose
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application can lead to enormous benefits in robustness and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interoperability [IP:1]:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "Be liberal in what you accept, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley conservative in what you send"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Software should be written to deal with every conceivable
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley error, no matter how unlikely; sooner or later a packet will
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley come in with that particular combination of errors and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley attributes, and unless the software is prepared, chaos can
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ensue. In general, it is best to assume that the network is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley filled with malevolent entities that will send in packets
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley designed to have the worst possible effect. This assumption
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley will lead to suitable protective design, although the most
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley serious problems in the Internet have been caused by
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley unenvisaged mechanisms triggered by low-probability events;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 12]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mere human malice would never have taken so devious a course!
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Adaptability to change must be designed into all levels of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet host software. As a simple example, consider a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocol specification that contains an enumeration of values
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for a particular header field -- e.g., a type field, a port
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley number, or an error code; this enumeration must be assumed to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be incomplete. Thus, if a protocol specification defines four
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley possible error codes, the software must not break when a fifth
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley code shows up. An undefined code might be logged (see below),
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley but it must not cause a failure.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The second part of the principle is almost as important:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley software on other hosts may contain deficiencies that make it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley unwise to exploit legal but obscure protocol features. It is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley unwise to stray far from the obvious and simple, lest untoward
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley effects result elsewhere. A corollary of this is "watch out
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for misbehaving hosts"; host software should be prepared, not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley just to survive other misbehaving hosts, but also to cooperate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to limit the amount of disruption such hosts can cause to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley shared communication facility.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.2.3 Error Logging
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Internet includes a great variety of host and gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley systems, each implementing many protocols and protocol layers,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and some of these contain bugs and mis-features in their
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet protocol software. As a result of complexity,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley diversity, and distribution of function, the diagnosis of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet problems is often very difficult.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Problem diagnosis will be aided if host implementations include
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a carefully designed facility for logging erroneous or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "strange" protocol events. It is important to include as much
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley diagnostic information as possible when an error is logged. In
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley particular, it is often useful to record the header(s) of a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley packet that caused an error. However, care must be taken to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ensure that error logging does not consume prohibitive amounts
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of resources or otherwise interfere with the operation of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There is a tendency for abnormal but harmless protocol events
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to overflow error logging files; this can be avoided by using a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "circular" log, or by enabling logging only while diagnosing a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley known failure. It may be useful to filter and count duplicate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley successive messages. One strategy that seems to work well is:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) always count abnormalities and make such counts accessible
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley through the management protocol (see [INTRO:1]); and (2) allow
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 13]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the logging of a great variety of events to be selectively
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley enabled. For example, it might useful to be able to "log
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley everything" or to "log everything for host X".
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note that different managements may have differing policies
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley about the amount of error logging that they want normally
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley enabled in a host. Some will say, "if it doesn't hurt me, I
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley don't want to know about it", while others will want to take a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley more watchful and aggressive attitude about detecting and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley removing protocol abnormalities.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.2.4 Configuration
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It would be ideal if a host implementation of the Internet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocol suite could be entirely self-configuring. This would
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley allow the whole suite to be implemented in ROM or cast into
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley silicon, it would simplify diskless workstations, and it would
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be an immense boon to harried LAN administrators as well as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley system vendors. We have not reached this ideal; in fact, we
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley are not even close.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley At many points in this document, you will find a requirement
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that a parameter be a configurable option. There are several
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley different reasons behind such requirements. In a few cases,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley there is current uncertainty or disagreement about the best
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley value, and it may be necessary to update the recommended value
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in the future. In other cases, the value really depends on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley external factors -- e.g., the size of the host and the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley distribution of its communication load, or the speeds and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley topology of nearby networks -- and self-tuning algorithms are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley unavailable and may be insufficient. In some cases,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley configurability is needed because of administrative
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley requirements.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Finally, some configuration options are required to communicate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley with obsolete or incorrect implementations of the protocols,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley distributed without sources, that unfortunately persist in many
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley parts of the Internet. To make correct systems coexist with
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley these faulty systems, administrators often have to "mis-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley configure" the correct systems. This problem will correct
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley itself gradually as the faulty systems are retired, but it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley cannot be ignored by vendors.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When we say that a parameter must be configurable, we do not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley intend to require that its value be explicitly read from a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley configuration file at every boot time. We recommend that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementors set up a default for each parameter, so a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley configuration file is only necessary to override those defaults
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 14]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that are inappropriate in a particular installation. Thus, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley configurability requirement is an assurance that it will be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley POSSIBLE to override the default when necessary, even in a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley binary-only or ROM-based product.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This document requires a particular value for such defaults in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley some cases. The choice of default is a sensitive issue when
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the configuration item controls the accommodation to existing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley faulty systems. If the Internet is to converge successfully to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley complete interoperability, the default values built into
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementations must implement the official protocol, not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "mis-configurations" to accommodate faulty implementations.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Although marketing considerations have led some vendors to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley choose mis-configuration defaults, we urge vendors to choose
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley defaults that will conform to the standard.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Finally, we note that a vendor needs to provide adequate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley documentation on all configuration parameters, their limits and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley effects.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.3 Reading this Document
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.3.1 Organization
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Protocol layering, which is generally used as an organizing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley principle in implementing network software, has also been used
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to organize this document. In describing the rules, we assume
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that an implementation does strictly mirror the layering of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocols. Thus, the following three major sections specify
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the requirements for the link layer, the internet layer, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the transport layer, respectively. A companion RFC [INTRO:1]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley covers application level software. This layerist organization
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley was chosen for simplicity and clarity.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley However, strict layering is an imperfect model, both for the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocol suite and for recommended implementation approaches.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Protocols in different layers interact in complex and sometimes
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley subtle ways, and particular functions often involve multiple
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layers. There are many design choices in an implementation,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley many of which involve creative "breaking" of strict layering.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Every implementor is urged to read references [INTRO:7] and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [INTRO:8].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This document describes the conceptual service interface
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley between layers using a functional ("procedure call") notation,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley like that used in the TCP specification [TCP:1]. A host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementation must support the logical information flow
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 15]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implied by these calls, but need not literally implement the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley calls themselves. For example, many implementations reflect
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the coupling between the transport layer and the IP layer by
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley giving them shared access to common data structures. These
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley data structures, rather than explicit procedure calls, are then
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the agency for passing much of the information that is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley required.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In general, each major section of this document is organized
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley into the following subsections:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) Introduction
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) Protocol Walk-Through -- considers the protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specification documents section-by-section, correcting
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley errors, stating requirements that may be ambiguous or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ill-defined, and providing further clarification or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley explanation.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (3) Specific Issues -- discusses protocol design and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementation issues that were not included in the walk-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley through.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (4) Interfaces -- discusses the service interface to the next
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley higher layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (5) Summary -- contains a summary of the requirements of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley section.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Under many of the individual topics in this document, there is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley parenthetical material labeled "DISCUSSION" or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "IMPLEMENTATION". This material is intended to give
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley clarification and explanation of the preceding requirements
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley text. It also includes some suggestions on possible future
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley directions or developments. The implementation material
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley contains suggested approaches that an implementor may want to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley consider.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The summary sections are intended to be guides and indexes to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the text, but are necessarily cryptic and incomplete. The
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley summaries should never be used or referenced separately from
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the complete RFC.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.3.2 Requirements
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In this document, the words that are used to define the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley significance of each particular requirement are capitalized.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 16]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley These words are:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * "MUST"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This word or the adjective "REQUIRED" means that the item
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is an absolute requirement of the specification.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * "SHOULD"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This word or the adjective "RECOMMENDED" means that there
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley may exist valid reasons in particular circumstances to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ignore this item, but the full implications should be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley understood and the case carefully weighed before choosing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a different course.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * "MAY"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This word or the adjective "OPTIONAL" means that this item
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is truly optional. One vendor may choose to include the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley item because a particular marketplace requires it or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley because it enhances the product, for example; another
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley vendor may omit the same item.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An implementation is not compliant if it fails to satisfy one
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley or more of the MUST requirements for the protocols it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implements. An implementation that satisfies all the MUST and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley all the SHOULD requirements for its protocols is said to be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "unconditionally compliant"; one that satisfies all the MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley requirements but not all the SHOULD requirements for its
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocols is said to be "conditionally compliant".
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.3.3 Terminology
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This document uses the following technical terms:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Segment
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A segment is the unit of end-to-end transmission in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP protocol. A segment consists of a TCP header followed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley by application data. A segment is transmitted by
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley encapsulation inside an IP datagram.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Message
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In this description of the lower-layer protocols, a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley message is the unit of transmission in a transport layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocol. In particular, a TCP segment is a message. A
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley message consists of a transport protocol header followed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley by application protocol data. To be transmitted end-to-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 17]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley end through the Internet, a message must be encapsulated
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley inside a datagram.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP Datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An IP datagram is the unit of end-to-end transmission in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the IP protocol. An IP datagram consists of an IP header
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley followed by transport layer data, i.e., of an IP header
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley followed by a message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In the description of the internet layer (Section 3), the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley unqualified term "datagram" should be understood to refer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to an IP datagram.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Packet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A packet is the unit of data passed across the interface
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley between the internet layer and the link layer. It
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley includes an IP header and data. A packet may be a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley complete IP datagram or a fragment of an IP datagram.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Frame
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A frame is the unit of transmission in a link layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocol, and consists of a link-layer header followed by
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a packet.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Connected Network
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A network to which a host is interfaced is often known as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the "local network" or the "subnetwork" relative to that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host. However, these terms can cause confusion, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley therefore we use the term "connected network" in this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley document.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Multihomed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host is said to be multihomed if it has multiple IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addresses. For a discussion of multihoming, see Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.4 below.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Physical network interface
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This is a physical interface to a connected network and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley has a (possibly unique) link-layer address. Multiple
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley physical network interfaces on a single host may share the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley same link-layer address, but the address must be unique
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for different hosts on the same physical network.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Logical [network] interface
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley We define a logical [network] interface to be a logical
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley path, distinguished by a unique IP address, to a connected
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network. See Section 3.3.4.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 18]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Specific-destination address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This is the effective destination address of a datagram,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley even if it is broadcast or multicast; see Section 3.2.1.3.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Path
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley At a given moment, all the IP datagrams from a particular
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley source host to a particular destination host will
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley typically traverse the same sequence of gateways. We use
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the term "path" for this sequence. Note that a path is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley uni-directional; it is not unusual to have different paths
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in the two directions between a given host pair.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MTU
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The maximum transmission unit, i.e., the size of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley largest packet that can be transmitted.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The terms frame, packet, datagram, message, and segment are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley illustrated by the following schematic diagrams:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A. Transmission on connected network:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley _______________________________________________
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | LL hdr | IP hdr | (data) |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley |________|________|_____________________________|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley <---------- Frame ----------------------------->
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley <----------Packet -------------------->
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley B. Before IP fragmentation or after IP reassembly:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ______________________________________
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | IP hdr | transport| Application Data |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley |________|____hdr___|__________________|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley <-------- Datagram ------------------>
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley <-------- Message ----------->
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley or, for TCP:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ______________________________________
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | IP hdr | TCP hdr | Application Data |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley |________|__________|__________________|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley <-------- Datagram ------------------>
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley <-------- Segment ----------->
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 19]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTRODUCTION October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1.4 Acknowledgments
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This document incorporates contributions and comments from a large
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley group of Internet protocol experts, including representatives of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley university and research labs, vendors, and government agencies.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It was assembled primarily by the Host Requirements Working Group
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of the Internet Engineering Task Force (IETF).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Editor would especially like to acknowledge the tireless
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley dedication of the following people, who attended many long
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley meetings and generated 3 million bytes of electronic mail over the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley past 18 months in pursuit of this document: Philip Almquist, Dave
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Borman (Cray Research), Noel Chiappa, Dave Crocker (DEC), Steve
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Deering (Stanford), Mike Karels (Berkeley), Phil Karn (Bellcore),
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley John Lekashman (NASA), Charles Lynn (BBN), Keith McCloghrie (TWG),
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Paul Mockapetris (ISI), Thomas Narten (Purdue), Craig Partridge
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (BBN), Drew Perkins (CMU), and James Van Bokkelen (FTP Software).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In addition, the following people made major contributions to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley effort: Bill Barns (Mitre), Steve Bellovin (AT&T), Mike Brescia
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (BBN), Ed Cain (DCA), Annette DeSchon (ISI), Martin Gross (DCA),
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Phill Gross (NRI), Charles Hedrick (Rutgers), Van Jacobson (LBL),
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley John Klensin (MIT), Mark Lottor (SRI), Milo Medin (NASA), Bill
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Melohn (Sun Microsystems), Greg Minshall (Kinetics), Jeff Mogul
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (DEC), John Mullen (CMC), Jon Postel (ISI), John Romkey (Epilogue
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Technology), and Mike StJohns (DCA). The following also made
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley significant contributions to particular areas: Eric Allman
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (Berkeley), Rob Austein (MIT), Art Berggreen (ACC), Keith Bostic
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (Berkeley), Vint Cerf (NRI), Wayne Hathaway (NASA), Matt Korn
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (IBM), Erik Naggum (Naggum Software, Norway), Robert Ullmann
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (Prime Computer), David Waitzman (BBN), Frank Wancho (USA), Arun
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Welch (Ohio State), Bill Westfield (Cisco), and Rayan Zachariassen
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (Toronto).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley We are grateful to all, including any contributors who may have
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley been inadvertently omitted from this list.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 20]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 LINK LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley2. LINK LAYER
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.1 INTRODUCTION
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley All Internet systems, both hosts and gateways, have the same
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley requirements for link layer protocols. These requirements are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley given in Chapter 3 of "Requirements for Internet Gateways"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [INTRO:2], augmented with the material in this section.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.2 PROTOCOL WALK-THROUGH
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley None.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.3 SPECIFIC ISSUES
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.3.1 Trailer Protocol Negotiation
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The trailer protocol [LINK:1] for link-layer encapsulation MAY
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be used, but only when it has been verified that both systems
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (host or gateway) involved in the link-layer communication
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implement trailers. If the system does not dynamically
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley negotiate use of the trailer protocol on a per-destination
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley basis, the default configuration MUST disable the protocol.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The trailer protocol is a link-layer encapsulation
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley technique that rearranges the data contents of packets
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sent on the physical network. In some cases, trailers
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley improve the throughput of higher layer protocols by
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reducing the amount of data copying within the operating
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley system. Higher layer protocols are unaware of trailer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley use, but both the sending and receiving host MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley understand the protocol if it is used.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Improper use of trailers can result in very confusing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley symptoms. Only packets with specific size attributes are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley encapsulated using trailers, and typically only a small
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fraction of the packets being exchanged have these
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley attributes. Thus, if a system using trailers exchanges
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley packets with a system that does not, some packets
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley disappear into a black hole while others are delivered
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley successfully.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley On an Ethernet, packets encapsulated with trailers use a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley distinct Ethernet type [LINK:1], and trailer negotiation
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is performed at the time that ARP is used to discover the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley link-layer address of a destination system.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 21]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 LINK LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Specifically, the ARP exchange is completed in the usual
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley manner using the normal IP protocol type, but a host that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley wants to speak trailers will send an additional "trailer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ARP reply" packet, i.e., an ARP reply that specifies the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley trailer encapsulation protocol type but otherwise has the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley format of a normal ARP reply. If a host configured to use
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley trailers receives a trailer ARP reply message from a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley remote machine, it can add that machine to the list of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley machines that understand trailers, e.g., by marking the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley corresponding entry in the ARP cache.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Hosts wishing to receive trailer encapsulations send
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley trailer ARP replies whenever they complete exchanges of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley normal ARP messages for IP. Thus, a host that received an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ARP request for its IP protocol address would send a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley trailer ARP reply in addition to the normal IP ARP reply;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a host that sent the IP ARP request would send a trailer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ARP reply when it received the corresponding IP ARP reply.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In this way, either the requesting or responding host in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley an IP ARP exchange may request that it receive trailer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley encapsulations.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This scheme, using extra trailer ARP reply packets rather
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley than sending an ARP request for the trailer protocol type,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley was designed to avoid a continuous exchange of ARP packets
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley with a misbehaving host that, contrary to any
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specification or common sense, responded to an ARP reply
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for trailers with another ARP reply for IP. This problem
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is avoided by sending a trailer ARP reply in response to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley an IP ARP reply only when the IP ARP reply answers an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley outstanding request; this is true when the hardware
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address for the host is still unknown when the IP ARP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reply is received. A trailer ARP reply may always be sent
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley along with an IP ARP reply responding to an IP ARP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley request.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.3.2 Address Resolution Protocol -- ARP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.3.2.1 ARP Cache Validation
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An implementation of the Address Resolution Protocol (ARP)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [LINK:2] MUST provide a mechanism to flush out-of-date cache
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley entries. If this mechanism involves a timeout, it SHOULD be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley possible to configure the timeout value.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A mechanism to prevent ARP flooding (repeatedly sending an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ARP Request for the same IP address, at a high rate) MUST be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley included. The recommended maximum rate is 1 per second per
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 22]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 LINK LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The ARP specification [LINK:2] suggests but does not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley require a timeout mechanism to invalidate cache entries
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley when hosts change their Ethernet addresses. The
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley prevalence of proxy ARP (see Section 2.4 of [INTRO:2])
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley has significantly increased the likelihood that cache
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley entries in hosts will become invalid, and therefore
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley some ARP-cache invalidation mechanism is now required
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for hosts. Even in the absence of proxy ARP, a long-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley period cache timeout is useful in order to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley automatically correct any bad ARP data that might have
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley been cached.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Four mechanisms have been used, sometimes in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley combination, to flush out-of-date cache entries.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) Timeout -- Periodically time out cache entries,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley even if they are in use. Note that this timeout
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley should be restarted when the cache entry is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "refreshed" (by observing the source fields,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley regardless of target address, of an ARP broadcast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley from the system in question). For proxy ARP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley situations, the timeout needs to be on the order
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of a minute.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) Unicast Poll -- Actively poll the remote host by
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley periodically sending a point-to-point ARP Request
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to it, and delete the entry if no ARP Reply is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley received from N successive polls. Again, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley timeout should be on the order of a minute, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley typically N is 2.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (3) Link-Layer Advice -- If the link-layer driver
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley detects a delivery problem, flush the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley corresponding ARP cache entry.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (4) Higher-layer Advice -- Provide a call from the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet layer to the link layer to indicate a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley delivery problem. The effect of this call would
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be to invalidate the corresponding cache entry.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This call would be analogous to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "ADVISE_DELIVPROB()" call from the transport layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to the Internet layer (see Section 3.4), and in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fact the ADVISE_DELIVPROB routine might in turn
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley call the link-layer advice routine to invalidate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 23]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 LINK LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the ARP cache entry.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Approaches (1) and (2) involve ARP cache timeouts on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the order of a minute or less. In the absence of proxy
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ARP, a timeout this short could create noticeable
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley overhead traffic on a very large Ethernet. Therefore,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley it may be necessary to configure a host to lengthen the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ARP cache timeout.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.3.2.2 ARP Packet Queue
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The link layer SHOULD save (rather than discard) at least
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley one (the latest) packet of each set of packets destined to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the same unresolved IP address, and transmit the saved
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley packet when the address has been resolved.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Failure to follow this recommendation causes the first
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley packet of every exchange to be lost. Although higher-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer protocols can generally cope with packet loss by
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley retransmission, packet loss does impact performance.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley For example, loss of a TCP open request causes the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley initial round-trip time estimate to be inflated. UDP-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley based applications such as the Domain Name System are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley more seriously affected.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.3.3 Ethernet and IEEE 802 Encapsulation
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The IP encapsulation for Ethernets is described in RFC-894
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [LINK:3], while RFC-1042 [LINK:4] describes the IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley encapsulation for IEEE 802 networks. RFC-1042 elaborates and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley replaces the discussion in Section 3.4 of [INTRO:2].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Every Internet host connected to a 10Mbps Ethernet cable:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o MUST be able to send and receive packets using RFC-894
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley encapsulation;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o SHOULD be able to receive RFC-1042 packets, intermixed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley with RFC-894 packets; and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o MAY be able to send packets using RFC-1042 encapsulation.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An Internet host that implements sending both the RFC-894 and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the RFC-1042 encapsulations MUST provide a configuration switch
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to select which is sent, and this switch MUST default to RFC-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 894.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 24]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 LINK LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note that the standard IP encapsulation in RFC-1042 does not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley use the protocol id value (K1=6) that IEEE reserved for IP;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley instead, it uses a value (K1=170) that implies an extension
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (the "SNAP") which can be used to hold the Ether-Type field.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An Internet system MUST NOT send 802 packets using K1=6.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Address translation from Internet addresses to link-layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addresses on Ethernet and IEEE 802 networks MUST be managed by
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the Address Resolution Protocol (ARP).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The MTU for an Ethernet is 1500 and for 802.3 is 1492.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The IEEE 802.3 specification provides for operation over a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 10Mbps Ethernet cable, in which case Ethernet and IEEE
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 802.3 frames can be physically intermixed. A receiver can
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley distinguish Ethernet and 802.3 frames by the value of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 802.3 Length field; this two-octet field coincides in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley header with the Ether-Type field of an Ethernet frame. In
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley particular, the 802.3 Length field must be less than or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley equal to 1500, while all valid Ether-Type values are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley greater than 1500.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Another compatibility problem arises with link-layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley broadcasts. A broadcast sent with one framing will not be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley seen by hosts that can receive only the other framing.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The provisions of this section were designed to provide
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley direct interoperation between 894-capable and 1042-capable
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley systems on the same cable, to the maximum extent possible.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It is intended to support the present situation where
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 894-only systems predominate, while providing an easy
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transition to a possible future in which 1042-capable
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley systems become common.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note that 894-only systems cannot interoperate directly
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley with 1042-only systems. If the two system types are set
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley up as two different logical networks on the same cable,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley they can communicate only through an IP gateway.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Furthermore, it is not useful or even possible for a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley dual-format host to discover automatically which format to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley send, because of the problem of link-layer broadcasts.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.4 LINK/INTERNET LAYER INTERFACE
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The packet receive interface between the IP layer and the link
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer MUST include a flag to indicate whether the incoming packet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley was addressed to a link-layer broadcast address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 25]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 LINK LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Although the IP layer does not generally know link layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addresses (since every different network medium typically has
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a different address format), the broadcast address on a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley broadcast-capable medium is an important special case. See
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Section 3.2.2, especially the DISCUSSION concerning broadcast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley storms.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The packet send interface between the IP and link layers MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley include the 5-bit TOS field (see Section 3.2.1.6).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The link layer MUST NOT report a Destination Unreachable error to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP solely because there is no ARP cache entry for a destination.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2.5 LINK LAYER REQUIREMENTS SUMMARY
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | |S| |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | |H| |F
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | |O|M|o
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | |S| |U|U|o
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | |H| |L|S|t
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |M|O| |D|T|n
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |U|U|M| | |o
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |S|L|A|N|N|t
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |T|D|Y|O|O|t
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyFEATURE |SECTION| | | |T|T|e
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley--------------------------------------------------|-------|-|-|-|-|-|--
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyTrailer encapsulation |2.3.1 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleySend Trailers by default without negotiation |2.3.1 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyARP |2.3.2 | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Flush out-of-date ARP cache entries |2.3.2.1|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Prevent ARP floods |2.3.2.1|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Cache timeout configurable |2.3.2.1| |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Save at least one (latest) unresolved pkt |2.3.2.2| |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyEthernet and IEEE 802 Encapsulation |2.3.3 | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Host able to: |2.3.3 | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send & receive RFC-894 encapsulation |2.3.3 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Receive RFC-1042 encapsulation |2.3.3 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send RFC-1042 encapsulation |2.3.3 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Then config. sw. to select, RFC-894 dflt |2.3.3 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send K1=6 encapsulation |2.3.3 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Use ARP on Ethernet and IEEE 802 nets |2.3.3 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyLink layer report b'casts to IP layer |2.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyIP layer pass TOS to link layer |2.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyNo ARP cache entry treated as Dest. Unreach. |2.4 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 26]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley3. INTERNET LAYER PROTOCOLS
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.1 INTRODUCTION
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Robustness Principle: "Be liberal in what you accept, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley conservative in what you send" is particularly important in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet layer, where one misbehaving host can deny Internet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley service to many other hosts.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The protocol standards used in the Internet layer are:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o RFC-791 [IP:1] defines the IP protocol and gives an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley introduction to the architecture of the Internet.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o RFC-792 [IP:2] defines ICMP, which provides routing,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley diagnostic and error functionality for IP. Although ICMP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley messages are encapsulated within IP datagrams, ICMP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley processing is considered to be (and is typically implemented
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley as) part of the IP layer. See Section 3.2.2.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o RFC-950 [IP:3] defines the mandatory subnet extension to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addressing architecture.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o RFC-1112 [IP:4] defines the Internet Group Management
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Protocol IGMP, as part of a recommended extension to hosts
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and to the host-gateway interface to support Internet-wide
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multicasting at the IP level. See Section 3.2.3.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The target of an IP multicast may be an arbitrary group of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet hosts. IP multicasting is designed as a natural
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley extension of the link-layer multicasting facilities of some
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley networks, and it provides a standard means for local access
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to such link-layer multicasting facilities.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Other important references are listed in Section 5 of this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley document.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Internet layer of host software MUST implement both IP and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP. See Section 3.3.7 for the requirements on support of IGMP.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The host IP layer has two basic functions: (1) choose the "next
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley hop" gateway or host for outgoing IP datagrams and (2) reassemble
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley incoming IP datagrams. The IP layer may also (3) implement
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley intentional fragmentation of outgoing datagrams. Finally, the IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer must (4) provide diagnostic and error functionality. We
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley expect that IP layer functions may increase somewhat in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley future, as further Internet control and management facilities are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley developed.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 27]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley For normal datagrams, the processing is straightforward. For
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley incoming datagrams, the IP layer:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) verifies that the datagram is correctly formatted;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) verifies that it is destined to the local host;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (3) processes options;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (4) reassembles the datagram if necessary; and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (5) passes the encapsulated message to the appropriate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transport-layer protocol module.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley For outgoing datagrams, the IP layer:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) sets any fields not set by the transport layer;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) selects the correct first hop on the connected network (a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley process called "routing");
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (3) fragments the datagram if necessary and if intentional
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fragmentation is implemented (see Section 3.3.3); and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (4) passes the packet(s) to the appropriate link-layer driver.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host is said to be multihomed if it has multiple IP addresses.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Multihoming introduces considerable confusion and complexity into
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the protocol suite, and it is an area in which the Internet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley architecture falls seriously short of solving all problems. There
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley are two distinct problem areas in multihoming:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) Local multihoming -- the host itself is multihomed; or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) Remote multihoming -- the local host needs to communicate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley with a remote multihomed host.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley At present, remote multihoming MUST be handled at the application
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer, as discussed in the companion RFC [INTRO:1]. A host MAY
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley support local multihoming, which is discussed in this document,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and in particular in Section 3.3.4.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Any host that forwards datagrams generated by another host is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley acting as a gateway and MUST also meet the specifications laid out
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in the gateway requirements RFC [INTRO:2]. An Internet host that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley includes embedded gateway code MUST have a configuration switch to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley disable the gateway function, and this switch MUST default to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 28]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley non-gateway mode. In this mode, a datagram arriving through one
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interface will not be forwarded to another host or gateway (unless
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley it is source-routed), regardless of whether the host is single-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley homed or multihomed. The host software MUST NOT automatically
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley move into gateway mode if the host has more than one interface, as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the operator of the machine may neither want to provide that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley service nor be competent to do so.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In the following, the action specified in certain cases is to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "silently discard" a received datagram. This means that the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram will be discarded without further processing and that the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host will not send any ICMP error message (see Section 3.2.2) as a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley result. However, for diagnosis of problems a host SHOULD provide
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the capability of logging the error (see Section 1.2.3), including
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the contents of the silently-discarded datagram, and SHOULD record
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the event in a statistics counter.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Silent discard of erroneous datagrams is generally intended
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to prevent "broadcast storms".
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2 PROTOCOL WALK-THROUGH
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1 Internet Protocol -- IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.1 Version Number: RFC-791 Section 3.1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A datagram whose version number is not 4 MUST be silently
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley discarded.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.2 Checksum: RFC-791 Section 3.1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MUST verify the IP header checksum on every received
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram and silently discard every datagram that has a bad
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley checksum.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.3 Addressing: RFC-791 Section 3.2
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There are now five classes of IP addresses: Class A through
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Class E. Class D addresses are used for IP multicasting
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [IP:4], while Class E addresses are reserved for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley experimental use.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A multicast (Class D) address is a 28-bit logical address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that stands for a group of hosts, and may be either
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley permanent or transient. Permanent multicast addresses are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley allocated by the Internet Assigned Number Authority
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [INTRO:6], while transient addresses may be allocated
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 29]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley dynamically to transient groups. Group membership is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley determined dynamically using IGMP [IP:4].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley We now summarize the important special cases for Class A, B,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and C IP addresses, using the following notation for an IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley { <Network-number>, <Host-number> }
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley { <Network-number>, <Subnet-number>, <Host-number> }
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and the notation "-1" for a field that contains all 1 bits.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This notation is not intended to imply that the 1-bits in an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address mask need be contiguous.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) { 0, 0 }
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This host on this network. MUST NOT be sent, except as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a source address as part of an initialization procedure
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley by which the host learns its own IP address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley See also Section 3.3.6 for a non-standard use of {0,0}.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) { 0, <Host-number> }
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Specified host on this network. It MUST NOT be sent,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley except as a source address as part of an initialization
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley procedure by which the host learns its full IP address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (c) { -1, -1 }
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Limited broadcast. It MUST NOT be used as a source
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A datagram with this destination address will be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley received by every host on the connected physical
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network but will not be forwarded outside that network.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (d) { <Network-number>, -1 }
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Directed broadcast to the specified network. It MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley NOT be used as a source address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (e) { <Network-number>, <Subnet-number>, -1 }
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Directed broadcast to the specified subnet. It MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley NOT be used as a source address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 30]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (f) { <Network-number>, -1, -1 }
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Directed broadcast to all subnets of the specified
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley subnetted network. It MUST NOT be used as a source
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (g) { 127, <any> }
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internal host loopback address. Addresses of this form
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MUST NOT appear outside a host.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The <Network-number> is administratively assigned so that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley its value will be unique in the entire world.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP addresses are not permitted to have the value 0 or -1 for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley any of the <Host-number>, <Network-number>, or <Subnet-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley number> fields (except in the special cases listed above).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This implies that each of these fields will be at least two
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley bits long.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley For further discussion of broadcast addresses, see Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.6.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MUST support the subnet extensions to IP [IP:3]. As
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a result, there will be an address mask of the form:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley {-1, -1, 0} associated with each of the host's local IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addresses; see Sections 3.2.2.9 and 3.3.1.1.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When a host sends any datagram, the IP source address MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be one of its own IP addresses (but not a broadcast or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multicast address).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MUST silently discard an incoming datagram that is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley not destined for the host. An incoming datagram is destined
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for the host if the datagram's destination address field is:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) (one of) the host's IP address(es); or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) an IP broadcast address valid for the connected
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network; or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (3) the address for a multicast group of which the host is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a member on the incoming physical interface.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley For most purposes, a datagram addressed to a broadcast or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multicast destination is processed as if it had been
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addressed to one of the host's IP addresses; we use the term
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "specific-destination address" for the equivalent local IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 31]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address of the host. The specific-destination address is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley defined to be the destination address in the IP header
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley unless the header contains a broadcast or multicast address,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in which case the specific-destination is an IP address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley assigned to the physical interface on which the datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley arrived.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MUST silently discard an incoming datagram containing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley an IP source address that is invalid by the rules of this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley section. This validation could be done in either the IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer or by each protocol in the transport layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A mis-addressed datagram might be caused by a link-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer broadcast of a unicast datagram or by a gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley or host that is confused or mis-configured.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An architectural goal for Internet hosts was to allow
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP addresses to be featureless 32-bit numbers, avoiding
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley algorithms that required a knowledge of the IP address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley format. Otherwise, any future change in the format or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interpretation of IP addresses will require host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley software changes. However, validation of broadcast and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multicast addresses violates this goal; a few other
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley violations are described elsewhere in this document.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Implementers should be aware that applications
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley depending upon the all-subnets directed broadcast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address (f) may be unusable on some networks. All-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley subnets broadcast is not widely implemented in vendor
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateways at present, and even when it is implemented, a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley particular network administration may disable it in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway configuration.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.4 Fragmentation and Reassembly: RFC-791 Section 3.2
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Internet model requires that every host support
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reassembly. See Sections 3.3.2 and 3.3.3 for the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley requirements on fragmentation and reassembly.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.5 Identification: RFC-791 Section 3.2
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When sending an identical copy of an earlier datagram, a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host MAY optionally retain the same Identification field in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the copy.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 32]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some Internet protocol experts have maintained that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley when a host sends an identical copy of an earlier
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram, the new copy should contain the same
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Identification value as the original. There are two
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley suggested advantages: (1) if the datagrams are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fragmented and some of the fragments are lost, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley receiver may be able to reconstruct a complete datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley from fragments of the original and the copies; (2) a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley congested gateway might use the IP Identification field
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (and Fragment Offset) to discard duplicate datagrams
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley from the queue.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley However, the observed patterns of datagram loss in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet do not favor the probability of retransmitted
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fragments filling reassembly gaps, while other
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mechanisms (e.g., TCP repacketizing upon
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley retransmission) tend to prevent retransmission of an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley identical datagram [IP:9]. Therefore, we believe that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley retransmitting the same Identification field is not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley useful. Also, a connectionless transport protocol like
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley UDP would require the cooperation of the application
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley programs to retain the same Identification value in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley identical datagrams.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.6 Type-of-Service: RFC-791 Section 3.2
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The "Type-of-Service" byte in the IP header is divided into
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley two sections: the Precedence field (high-order 3 bits), and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a field that is customarily called "Type-of-Service" or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "TOS" (low-order 5 bits). In this document, all references
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to "TOS" or the "TOS field" refer to the low-order 5 bits
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley only.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Precedence field is intended for Department of Defense
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley applications of the Internet protocols. The use of non-zero
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley values in this field is outside the scope of this document
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and the IP standard specification. Vendors should consult
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the Defense Communication Agency (DCA) for guidance on the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP Precedence field and its implications for other protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layers. However, vendors should note that the use of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley precedence will most likely require that its value be passed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley between protocol layers in just the same way as the TOS
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley field is passed.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The IP layer MUST provide a means for the transport layer to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley set the TOS field of every datagram that is sent; the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley default is all zero bits. The IP layer SHOULD pass received
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 33]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TOS values up to the transport layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The particular link-layer mappings of TOS contained in RFC-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 795 SHOULD NOT be implemented.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley While the TOS field has been little used in the past,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley it is expected to play an increasing role in the near
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley future. The TOS field is expected to be used to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley control two aspects of gateway operations: routing and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley queueing algorithms. See Section 2 of [INTRO:1] for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the requirements on application programs to specify TOS
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley values.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The TOS field may also be mapped into link-layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley service selectors. This has been applied to provide
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley effective sharing of serial lines by different classes
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of TCP traffic, for example. However, the mappings
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley suggested in RFC-795 for networks that were included in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the Internet as of 1981 are now obsolete.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.7 Time-to-Live: RFC-791 Section 3.2
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MUST NOT send a datagram with a Time-to-Live (TTL)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley value of zero.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MUST NOT discard a datagram just because it was
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley received with TTL less than 2.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The IP layer MUST provide a means for the transport layer to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley set the TTL field of every datagram that is sent. When a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fixed TTL value is used, it MUST be configurable. The
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley current suggested value will be published in the "Assigned
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Numbers" RFC.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The TTL field has two functions: limit the lifetime of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP segments (see RFC-793 [TCP:1], p. 28), and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley terminate Internet routing loops. Although TTL is a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley time in seconds, it also has some attributes of a hop-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley count, since each gateway is required to reduce the TTL
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley field by at least one.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The intent is that TTL expiration will cause a datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to be discarded by a gateway but not by the destination
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host; however, hosts that act as gateways by forwarding
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagrams must follow the gateway rules for TTL.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 34]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A higher-layer protocol may want to set the TTL in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley order to implement an "expanding scope" search for some
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet resource. This is used by some diagnostic
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley tools, and is expected to be useful for locating the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "nearest" server of a given class using IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multicasting, for example. A particular transport
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocol may also want to specify its own TTL bound on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley maximum datagram lifetime.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A fixed value must be at least big enough for the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet "diameter," i.e., the longest possible path.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A reasonable value is about twice the diameter, to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley allow for continued Internet growth.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.8 Options: RFC-791 Section 3.2
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There MUST be a means for the transport layer to specify IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley options to be included in transmitted IP datagrams (see
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Section 3.4).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley All IP options (except NOP or END-OF-LIST) received in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagrams MUST be passed to the transport layer (or to ICMP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley processing when the datagram is an ICMP message). The IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and transport layer MUST each interpret those IP options
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that they understand and silently ignore the others.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Later sections of this document discuss specific IP option
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley support required by each of ICMP, TCP, and UDP.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Passing all received IP options to the transport layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is a deliberate "violation of strict layering" that is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley designed to ease the introduction of new transport-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley relevant IP options in the future. Each layer must
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley pick out any options that are relevant to its own
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley processing and ignore the rest. For this purpose,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley every IP option except NOP and END-OF-LIST will include
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a specification of its own length.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This document does not define the order in which a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley receiver must process multiple options in the same IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley header. Hosts sending multiple options must be aware
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that this introduces an ambiguity in the meaning of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley certain options when combined with a source-route
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley option.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The IP layer must not crash as the result of an option
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 35]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley length that is outside the possible range. For
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley example, erroneous option lengths have been observed to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley put some IP implementations into infinite loops.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Here are the requirements for specific IP options:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) Security Option
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some environments require the Security option in every
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram; such a requirement is outside the scope of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley this document and the IP standard specification. Note,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley however, that the security options described in RFC-791
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and RFC-1038 are obsolete. For DoD applications,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley vendors should consult [IP:8] for guidance.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) Stream Identifier Option
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This option is obsolete; it SHOULD NOT be sent, and it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MUST be silently ignored if received.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (c) Source Route Options
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MUST support originating a source route and MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be able to act as the final destination of a source
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley route.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If host receives a datagram containing a completed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley source route (i.e., the pointer points beyond the last
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley field), the datagram has reached its final destination;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the option as received (the recorded route) MUST be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley passed up to the transport layer (or to ICMP message
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley processing). This recorded route will be reversed and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley used to form a return source route for reply datagrams
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (see discussion of IP Options in Section 4). When a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley return source route is built, it MUST be correctly
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley formed even if the recorded route included the source
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host (see case (B) in the discussion below).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An IP header containing more than one Source Route
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley option MUST NOT be sent; the effect on routing of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multiple Source Route options is implementation-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specific.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Section 3.3.5 presents the rules for a host acting as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley an intermediate hop in a source route, i.e., forwarding
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 36]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a source-routed datagram.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If a source-routed datagram is fragmented, each
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fragment will contain a copy of the source route.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Since the processing of IP options (including a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley source route) must precede reassembly, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley original datagram will not be reassembled until
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the final destination is reached.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Suppose a source routed datagram is to be routed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley from host S to host D via gateways G1, G2, ... Gn.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There was an ambiguity in the specification over
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley whether the source route option in a datagram sent
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley out by S should be (A) or (B):
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (A): {>>G2, G3, ... Gn, D} <--- CORRECT
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (B): {S, >>G2, G3, ... Gn, D} <---- WRONG
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (where >> represents the pointer). If (A) is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sent, the datagram received at D will contain the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley option: {G1, G2, ... Gn >>}, with S and D as the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP source and destination addresses. If (B) were
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sent, the datagram received at D would again
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley contain S and D as the same IP source and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination addresses, but the option would be:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley {S, G1, ...Gn >>}; i.e., the originating host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley would be the first hop in the route.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (d) Record Route Option
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Implementation of originating and processing the Record
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Route option is OPTIONAL.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (e) Timestamp Option
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Implementation of originating and processing the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Timestamp option is OPTIONAL. If it is implemented,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the following rules apply:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o The originating host MUST record a timestamp in a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Timestamp option whose Internet address fields are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley not pre-specified or whose first pre-specified
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address is the host's interface address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 37]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o The destination host MUST (if possible) add the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley current timestamp to a Timestamp option before
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley passing the option to the transport layer or to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP for processing.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o A timestamp value MUST follow the rules given in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Section 3.2.2.8 for the ICMP Timestamp message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2 Internet Control Message Protocol -- ICMP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP messages are grouped into two classes.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley *
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP error messages:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Destination Unreachable (see Section 3.2.2.1)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Redirect (see Section 3.2.2.2)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Source Quench (see Section 3.2.2.3)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Time Exceeded (see Section 3.2.2.4)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Parameter Problem (see Section 3.2.2.5)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley *
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP query messages:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Echo (see Section 3.2.2.6)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Information (see Section 3.2.2.7)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Timestamp (see Section 3.2.2.8)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Address Mask (see Section 3.2.2.9)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If an ICMP message of unknown type is received, it MUST be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley silently discarded.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Every ICMP error message includes the Internet header and at
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley least the first 8 data octets of the datagram that triggered
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the error; more than 8 octets MAY be sent; this header and data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MUST be unchanged from the received datagram.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In those cases where the Internet layer is required to pass an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP error message to the transport layer, the IP protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley number MUST be extracted from the original header and used to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley select the appropriate transport protocol entity to handle the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley error.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An ICMP error message SHOULD be sent with normal (i.e., zero)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TOS bits.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 38]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An ICMP error message MUST NOT be sent as the result of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley receiving:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * an ICMP error message, or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * a datagram destined to an IP broadcast or IP multicast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address, or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * a datagram sent as a link-layer broadcast, or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * a non-initial fragment, or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * a datagram whose source address does not define a single
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host -- e.g., a zero address, a loopback address, a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley broadcast address, a multicast address, or a Class E
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley NOTE: THESE RESTRICTIONS TAKE PRECEDENCE OVER ANY REQUIREMENT
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ELSEWHERE IN THIS DOCUMENT FOR SENDING ICMP ERROR MESSAGES.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley These rules will prevent the "broadcast storms" that have
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley resulted from hosts returning ICMP error messages in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley response to broadcast datagrams. For example, a broadcast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley UDP segment to a non-existent port could trigger a flood
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of ICMP Destination Unreachable datagrams from all
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley machines that do not have a client for that destination
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley port. On a large Ethernet, the resulting collisions can
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley render the network useless for a second or more.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Every datagram that is broadcast on the connected network
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley should have a valid IP broadcast address as its IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination (see Section 3.3.6). However, some hosts
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley violate this rule. To be certain to detect broadcast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagrams, therefore, hosts are required to check for a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley link-layer broadcast as well as an IP-layer broadcast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This requires that the link layer inform the IP layer when
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a link-layer broadcast datagram has been received; see
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Section 2.4.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.1 Destination Unreachable: RFC-792
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The following additional codes are hereby defined:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 6 = destination network unknown
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 39]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 7 = destination host unknown
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 8 = source host isolated
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 9 = communication with destination network
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley administratively prohibited
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 10 = communication with destination host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley administratively prohibited
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 11 = network unreachable for type of service
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 12 = host unreachable for type of service
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host SHOULD generate Destination Unreachable messages with
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley code:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2 (Protocol Unreachable), when the designated transport
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocol is not supported; or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3 (Port Unreachable), when the designated transport
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocol (e.g., UDP) is unable to demultiplex the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram but has no protocol mechanism to inform the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sender.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A Destination Unreachable message that is received MUST be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reported to the transport layer. The transport layer SHOULD
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley use the information appropriately; for example, see Sections
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3.3, 4.2.3.9, and 4.2.4 below. A transport protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that has its own mechanism for notifying the sender that a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley port is unreachable (e.g., TCP, which sends RST segments)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MUST nevertheless accept an ICMP Port Unreachable for the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley same purpose.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A Destination Unreachable message that is received with code
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 0 (Net), 1 (Host), or 5 (Bad Source Route) may result from a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley routing transient and MUST therefore be interpreted as only
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a hint, not proof, that the specified destination is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley unreachable [IP:11]. For example, it MUST NOT be used as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley proof of a dead gateway (see Section 3.3.1).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.2 Redirect: RFC-792
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host SHOULD NOT send an ICMP Redirect message; Redirects
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley are to be sent only by gateways.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host receiving a Redirect message MUST update its routing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley information accordingly. Every host MUST be prepared to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 40]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley accept both Host and Network Redirects and to process them
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley as described in Section 3.3.1.2 below.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A Redirect message SHOULD be silently discarded if the new
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway address it specifies is not on the same connected
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (sub-) net through which the Redirect arrived [INTRO:2,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Appendix A], or if the source of the Redirect is not the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley current first-hop gateway for the specified destination (see
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Section 3.3.1).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.3 Source Quench: RFC-792
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MAY send a Source Quench message if it is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley approaching, or has reached, the point at which it is forced
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to discard incoming datagrams due to a shortage of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reassembly buffers or other resources. See Section 2.2.3 of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [INTRO:2] for suggestions on when to send Source Quench.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If a Source Quench message is received, the IP layer MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley report it to the transport layer (or ICMP processing). In
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley general, the transport or application layer SHOULD implement
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a mechanism to respond to Source Quench for any protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that can send a sequence of datagrams to the same
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination and which can reasonably be expected to maintain
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley enough state information to make this feasible. See Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4 for the handling of Source Quench by TCP and UDP.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A Source Quench may be generated by the target host or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley by some gateway in the path of a datagram. The host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley receiving a Source Quench should throttle itself back
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for a period of time, then gradually increase the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transmission rate again. The mechanism to respond to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Source Quench may be in the transport layer (for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection-oriented protocols like TCP) or in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application layer (for protocols that are built on top
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of UDP).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A mechanism has been proposed [IP:14] to make the IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer respond directly to Source Quench by controlling
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the rate at which datagrams are sent, however, this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley proposal is currently experimental and not currently
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley recommended.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.4 Time Exceeded: RFC-792
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An incoming Time Exceeded message MUST be passed to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transport layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 41]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A gateway will send a Time Exceeded Code 0 (In Transit)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley message when it discards a datagram due to an expired
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TTL field. This indicates either a gateway routing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley loop or too small an initial TTL value.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host may receive a Time Exceeded Code 1 (Reassembly
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Timeout) message from a destination host that has timed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley out and discarded an incomplete datagram; see Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.2 below. In the future, receipt of this message
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley might be part of some "MTU discovery" procedure, to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley discover the maximum datagram size that can be sent on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the path without fragmentation.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.5 Parameter Problem: RFC-792
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host SHOULD generate Parameter Problem messages. An
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley incoming Parameter Problem message MUST be passed to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transport layer, and it MAY be reported to the user.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The ICMP Parameter Problem message is sent to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley source host for any problem not specifically covered by
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley another ICMP message. Receipt of a Parameter Problem
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley message generally indicates some local or remote
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementation error.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A new variant on the Parameter Problem message is hereby
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley defined:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Code 1 = required option is missing.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This variant is currently in use in the military
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley community for a missing security option.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.6 Echo Request/Reply: RFC-792
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Every host MUST implement an ICMP Echo server function that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley receives Echo Requests and sends corresponding Echo Replies.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host SHOULD also implement an application-layer interface
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for sending an Echo Request and receiving an Echo Reply, for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley diagnostic purposes.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An ICMP Echo Request destined to an IP broadcast or IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multicast address MAY be silently discarded.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 42]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This neutral provision results from a passionate debate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley between those who feel that ICMP Echo to a broadcast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address provides a valuable diagnostic capability and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley those who feel that misuse of this feature can too
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley easily create packet storms.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The IP source address in an ICMP Echo Reply MUST be the same
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley as the specific-destination address (defined in Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.3) of the corresponding ICMP Echo Request message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Data received in an ICMP Echo Request MUST be entirely
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley included in the resulting Echo Reply. However, if sending
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the Echo Reply requires intentional fragmentation that is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley not implemented, the datagram MUST be truncated to maximum
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transmission size (see Section 3.3.3) and sent.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Echo Reply messages MUST be passed to the ICMP user
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interface, unless the corresponding Echo Request originated
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in the IP layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If a Record Route and/or Time Stamp option is received in an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP Echo Request, this option (these options) SHOULD be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley updated to include the current host and included in the IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley header of the Echo Reply message, without "truncation".
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Thus, the recorded route will be for the entire round trip.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If a Source Route option is received in an ICMP Echo
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Request, the return route MUST be reversed and used as a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Source Route option for the Echo Reply message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.7 Information Request/Reply: RFC-792
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host SHOULD NOT implement these messages.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Information Request/Reply pair was intended to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley support self-configuring systems such as diskless
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley workstations, to allow them to discover their IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network numbers at boot time. However, the RARP and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley BOOTP protocols provide better mechanisms for a host to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley discover its own IP address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.8 Timestamp and Timestamp Reply: RFC-792
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MAY implement Timestamp and Timestamp Reply. If they
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley are implemented, the following rules MUST be followed.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 43]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o The ICMP Timestamp server function returns a Timestamp
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Reply to every Timestamp message that is received. If
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley this function is implemented, it SHOULD be designed for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley minimum variability in delay (e.g., implemented in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley kernel to avoid delay in scheduling a user process).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The following cases for Timestamp are to be handled
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley according to the corresponding rules for ICMP Echo:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o An ICMP Timestamp Request message to an IP broadcast or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP multicast address MAY be silently discarded.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o The IP source address in an ICMP Timestamp Reply MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be the same as the specific-destination address of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley corresponding Timestamp Request message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o If a Source-route option is received in an ICMP Echo
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Request, the return route MUST be reversed and used as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a Source Route option for the Timestamp Reply message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o If a Record Route and/or Timestamp option is received
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in a Timestamp Request, this (these) option(s) SHOULD
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be updated to include the current host and included in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the IP header of the Timestamp Reply message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Incoming Timestamp Reply messages MUST be passed up to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the ICMP user interface.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The preferred form for a timestamp value (the "standard
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley value") is in units of milliseconds since midnight Universal
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Time. However, it may be difficult to provide this value
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley with millisecond resolution. For example, many systems use
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley clocks that update only at line frequency, 50 or 60 times
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley per second. Therefore, some latitude is allowed in a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "standard value":
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) A "standard value" MUST be updated at least 15 times
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley per second (i.e., at most the six low-order bits of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley value may be undefined).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) The accuracy of a "standard value" MUST approximate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that of operator-set CPU clocks, i.e., correct within a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley few minutes.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 44]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.2.9 Address Mask Request/Reply: RFC-950
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MUST support the first, and MAY implement all three,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of the following methods for determining the address mask(s)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley corresponding to its IP address(es):
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) static configuration information;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) obtaining the address mask(s) dynamically as a side-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley effect of the system initialization process (see
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [INTRO:1]); and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (3) sending ICMP Address Mask Request(s) and receiving ICMP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Address Mask Reply(s).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The choice of method to be used in a particular host MUST be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley configurable.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When method (3), the use of Address Mask messages, is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley enabled, then:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) When it initializes, the host MUST broadcast an Address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Mask Request message on the connected network
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley corresponding to the IP address. It MUST retransmit
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley this message a small number of times if it does not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley receive an immediate Address Mask Reply.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) Until it has received an Address Mask Reply, the host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SHOULD assume a mask appropriate for the address class
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of the IP address, i.e., assume that the connected
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network is not subnetted.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (c) The first Address Mask Reply message received MUST be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley used to set the address mask corresponding to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley particular local IP address. This is true even if the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley first Address Mask Reply message is "unsolicited", in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley which case it will have been broadcast and may arrive
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley after the host has ceased to retransmit Address Mask
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Requests. Once the mask has been set by an Address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Mask Reply, later Address Mask Reply messages MUST be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (silently) ignored.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Conversely, if Address Mask messages are disabled, then no
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP Address Mask Requests will be sent, and any ICMP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Address Mask Replies received for that local IP address MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be (silently) ignored.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host SHOULD make some reasonableness check on any address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 45]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mask it installs; see IMPLEMENTATION section below.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A system MUST NOT send an Address Mask Reply unless it is an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley authoritative agent for address masks. An authoritative
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley agent may be a host or a gateway, but it MUST be explicitly
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley configured as a address mask agent. Receiving an address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mask via an Address Mask Reply does not give the receiver
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley authority and MUST NOT be used as the basis for issuing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Address Mask Replies.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley With a statically configured address mask, there SHOULD be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley an additional configuration flag that determines whether the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host is to act as an authoritative agent for this mask,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley i.e., whether it will answer Address Mask Request messages
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley using this mask.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If it is configured as an agent, the host MUST broadcast an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Address Mask Reply for the mask on the appropriate interface
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley when it initializes.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley See "System Initialization" in [INTRO:1] for more
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley information about the use of Address Mask Request/Reply
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley messages.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Hosts that casually send Address Mask Replies with
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley invalid address masks have often been a serious
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley nuisance. To prevent this, Address Mask Replies ought
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to be sent only by authoritative agents that have been
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley selected by explicit administrative action.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When an authoritative agent receives an Address Mask
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Request message, it will send a unicast Address Mask
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Reply to the source IP address. If the network part of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley this address is zero (see (a) and (b) in 3.2.1.3), the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Reply will be broadcast.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Getting no reply to its Address Mask Request messages,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a host will assume there is no agent and use an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley unsubnetted mask, but the agent may be only temporarily
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley unreachable. An agent will broadcast an unsolicited
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Address Mask Reply whenever it initializes, in order to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley update the masks of all hosts that have initialized in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the meantime.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The following reasonableness check on an address mask
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is suggested: the mask is not all 1 bits, and it is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 46]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley either zero or else the 8 highest-order bits are on.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.3 Internet Group Management Protocol IGMP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IGMP [IP:4] is a protocol used between hosts and gateways on a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley single network to establish hosts' membership in particular
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multicast groups. The gateways use this information, in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley conjunction with a multicast routing protocol, to support IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multicasting across the Internet.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley At this time, implementation of IGMP is OPTIONAL; see Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.7 for more information. Without IGMP, a host can still
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley participate in multicasting local to its connected networks.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3 SPECIFIC ISSUES
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1 Routing Outbound Datagrams
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The IP layer chooses the correct next hop for each datagram it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sends. If the destination is on a connected network, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram is sent directly to the destination host; otherwise,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley it has to be routed to a gateway on a connected network.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1.1 Local/Remote Decision
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley To decide if the destination is on a connected network, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley following algorithm MUST be used [see IP:3]:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) The address mask (particular to a local IP address for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a multihomed host) is a 32-bit mask that selects the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network number and subnet number fields of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley corresponding IP address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) If the IP destination address bits extracted by the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address mask match the IP source address bits extracted
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley by the same mask, then the destination is on the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley corresponding connected network, and the datagram is to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be transmitted directly to the destination host.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (c) If not, then the destination is accessible only through
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a gateway. Selection of a gateway is described below
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (3.3.1.2).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A special-case destination address is handled as follows:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * For a limited broadcast or a multicast address, simply
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley pass the datagram to the link layer for the appropriate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interface.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 47]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * For a (network or subnet) directed broadcast, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram can use the standard routing algorithms.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The host IP layer MUST operate correctly in a minimal
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network environment, and in particular, when there are no
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateways. For example, if the IP layer of a host insists on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley finding at least one gateway to initialize, the host will be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley unable to operate on a single isolated broadcast net.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1.2 Gateway Selection
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley To efficiently route a series of datagrams to the same
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination, the source host MUST keep a "route cache" of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mappings to next-hop gateways. A host uses the following
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley basic algorithm on this cache to route a datagram; this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley algorithm is designed to put the primary routing burden on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the gateways [IP:11].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) If the route cache contains no information for a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley particular destination, the host chooses a "default"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway and sends the datagram to it. It also builds a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley corresponding Route Cache entry.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) If that gateway is not the best next hop to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination, the gateway will forward the datagram to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the best next-hop gateway and return an ICMP Redirect
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley message to the source host.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (c) When it receives a Redirect, the host updates the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley next-hop gateway in the appropriate route cache entry,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley so later datagrams to the same destination will go
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley directly to the best gateway.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Since the subnet mask appropriate to the destination address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is generally not known, a Network Redirect message SHOULD be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley treated identically to a Host Redirect message; i.e., the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley cache entry for the destination host (only) would be updated
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (or created, if an entry for that host did not exist) for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the new gateway.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This recommendation is to protect against gateways that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley erroneously send Network Redirects for a subnetted
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network, in violation of the gateway requirements
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [INTRO:2].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When there is no route cache entry for the destination host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address (and the destination is not on the connected
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 48]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network), the IP layer MUST pick a gateway from its list of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "default" gateways. The IP layer MUST support multiple
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley default gateways.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley As an extra feature, a host IP layer MAY implement a table
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of "static routes". Each such static route MAY include a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley flag specifying whether it may be overridden by ICMP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Redirects.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host generally needs to know at least one default
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway to get started. This information can be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley obtained from a configuration file or else from the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host startup sequence, e.g., the BOOTP protocol (see
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [INTRO:1]).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It has been suggested that a host can augment its list
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of default gateways by recording any new gateways it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley learns about. For example, it can record every gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to which it is ever redirected. Such a feature, while
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley possibly useful in some circumstances, may cause
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley problems in other cases (e.g., gateways are not all
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley equal), and it is not recommended.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A static route is typically a particular preset mapping
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley from destination host or network into a particular
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley next-hop gateway; it might also depend on the Type-of-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Service (see next section). Static routes would be set
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley up by system administrators to override the normal
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley automatic routing mechanism, to handle exceptional
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley situations. However, any static routing information is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a potential source of failure as configurations change
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley or equipment fails.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1.3 Route Cache
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Each route cache entry needs to include the following
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fields:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) Local IP address (for a multihomed host)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) Destination IP address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (3) Type(s)-of-Service
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (4) Next-hop gateway IP address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Field (2) MAY be the full IP address of the destination
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 49]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host, or only the destination network number. Field (3),
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the TOS, SHOULD be included.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley See Section 3.3.4.2 for a discussion of the implications of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multihoming for the lookup procedure in this cache.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Including the Type-of-Service field in the route cache
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and considering it in the host route algorithm will
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley provide the necessary mechanism for the future when
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Type-of-Service routing is commonly used in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet. See Section 3.2.1.6.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Each route cache entry defines the endpoints of an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet path. Although the connecting path may change
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley dynamically in an arbitrary way, the transmission
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley characteristics of the path tend to remain
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley approximately constant over a time period longer than a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley single typical host-host transport connection.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Therefore, a route cache entry is a natural place to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley cache data on the properties of the path. Examples of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley such properties might be the maximum unfragmented
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram size (see Section 3.3.3), or the average
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley round-trip delay measured by a transport protocol.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This data will generally be both gathered and used by a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley higher layer protocol, e.g., by TCP, or by an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application using UDP. Experiments are currently in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley progress on caching path properties in this manner.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There is no consensus on whether the route cache should
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be keyed on destination host addresses alone, or allow
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley both host and network addresses. Those who favor the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley use of only host addresses argue that:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) As required in Section 3.3.1.2, Redirect messages
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley will generally result in entries keyed on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination host addresses; the simplest and most
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley general scheme would be to use host addresses
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley always.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) The IP layer may not always know the address mask
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for a network address in a complex subnetted
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley environment.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (3) The use of only host addresses allows the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination address to be used as a pure 32-bit
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley number, which may allow the Internet architecture
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to be more easily extended in the future without
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 50]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley any change to the hosts.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The opposing view is that allowing a mixture of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination hosts and networks in the route cache:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) Saves memory space.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) Leads to a simpler data structure, easily
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley combining the cache with the tables of default and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley static routes (see below).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (3) Provides a more useful place to cache path
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley properties, as discussed earlier.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The cache needs to be large enough to include entries
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for the maximum number of destination hosts that may be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in use at one time.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A route cache entry may also include control
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley information used to choose an entry for replacement.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This might take the form of a "recently used" bit, a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley use count, or a last-used timestamp, for example. It
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is recommended that it include the time of last
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley modification of the entry, for diagnostic purposes.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An implementation may wish to reduce the overhead of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley scanning the route cache for every datagram to be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transmitted. This may be accomplished with a hash
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley table to speed the lookup, or by giving a connection-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley oriented transport protocol a "hint" or temporary
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley handle on the appropriate cache entry, to be passed to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the IP layer with each subsequent datagram.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Although we have described the route cache, the lists
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of default gateways, and a table of static routes as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley conceptually distinct, in practice they may be combined
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley into a single "routing table" data structure.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1.4 Dead Gateway Detection
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The IP layer MUST be able to detect the failure of a "next-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley hop" gateway that is listed in its route cache and to choose
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley an alternate gateway (see Section 3.3.1.5).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Dead gateway detection is covered in some detail in RFC-816
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [IP:11]. Experience to date has not produced a complete
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 51]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley algorithm which is totally satisfactory, though it has
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley identified several forbidden paths and promising techniques.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * A particular gateway SHOULD NOT be used indefinitely in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the absence of positive indications that it is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley functioning.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * Active probes such as "pinging" (i.e., using an ICMP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Echo Request/Reply exchange) are expensive and scale
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley poorly. In particular, hosts MUST NOT actively check
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the status of a first-hop gateway by simply pinging the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway continuously.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * Even when it is the only effective way to verify a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway's status, pinging MUST be used only when
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley traffic is being sent to the gateway and when there is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley no other positive indication to suggest that the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway is functioning.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * To avoid pinging, the layers above and/or below the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet layer SHOULD be able to give "advice" on the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley status of route cache entries when either positive
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (gateway OK) or negative (gateway dead) information is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley available.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If an implementation does not include an adequate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mechanism for detecting a dead gateway and re-routing,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a gateway failure may cause datagrams to apparently
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley vanish into a "black hole". This failure can be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley extremely confusing for users and difficult for network
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley personnel to debug.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The dead-gateway detection mechanism must not cause
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley unacceptable load on the host, on connected networks,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley or on first-hop gateway(s). The exact constraints on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the timeliness of dead gateway detection and on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley acceptable load may vary somewhat depending on the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley nature of the host's mission, but a host generally
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley needs to detect a failed first-hop gateway quickly
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley enough that transport-layer connections will not break
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley before an alternate gateway can be selected.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Passing advice from other layers of the protocol stack
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley complicates the interfaces between the layers, but it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is the preferred approach to dead gateway detection.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Advice can come from almost any part of the IP/TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 52]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley architecture, but it is expected to come primarily from
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the transport and link layers. Here are some possible
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sources for gateway advice:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o TCP or any connection-oriented transport protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley should be able to give negative advice, e.g.,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley triggered by excessive retransmissions.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o TCP may give positive advice when (new) data is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley acknowledged. Even though the route may be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley asymmetric, an ACK for new data proves that the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley acknowleged data must have been transmitted
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley successfully.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o An ICMP Redirect message from a particular gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley should be used as positive advice about that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Link-layer information that reliably detects and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reports host failures (e.g., ARPANET Destination
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Dead messages) should be used as negative advice.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Failure to ARP or to re-validate ARP mappings may
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be used as negative advice for the corresponding
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Packets arriving from a particular link-layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address are evidence that the system at this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address is alive. However, turning this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley information into advice about gateways requires
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mapping the link-layer address into an IP address,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and then checking that IP address against the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateways pointed to by the route cache. This is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley probably prohibitively inefficient.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note that positive advice that is given for every
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram received may cause unacceptable overhead in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the implementation.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley While advice might be passed using required arguments
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in all interfaces to the IP layer, some transport and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application layer protocols cannot deduce the correct
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley advice. These interfaces must therefore allow a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley neutral value for advice, since either always-positive
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley or always-negative advice leads to incorrect behavior.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There is another technique for dead gateway detection
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that has been commonly used but is not recommended.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 53]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This technique depends upon the host passively
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley receiving ("wiretapping") the Interior Gateway Protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (IGP) datagrams that the gateways are broadcasting to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley each other. This approach has the drawback that a host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley needs to recognize all the interior gateway protocols
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that gateways may use (see [INTRO:2]). In addition, it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley only works on a broadcast network.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley At present, pinging (i.e., using ICMP Echo messages) is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the mechanism for gateway probing when absolutely
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley required. A successful ping guarantees that the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addressed interface and its associated machine are up,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley but it does not guarantee that the machine is a gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley as opposed to a host. The normal inference is that if
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a Redirect or other evidence indicates that a machine
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley was a gateway, successful pings will indicate that the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley machine is still up and hence still a gateway.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley However, since a host silently discards packets that a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway would forward or redirect, this assumption
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley could sometimes fail. To avoid this problem, a new
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP message under development will ask "are you a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway?"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The following specific algorithm has been suggested:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Associate a "reroute timer" with each gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley pointed to by the route cache. Initialize the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley timer to a value Tr, which must be small enough to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley allow detection of a dead gateway before transport
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connections time out.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Positive advice would reset the reroute timer to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Tr. Negative advice would reduce or zero the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reroute timer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Whenever the IP layer used a particular gateway to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley route a datagram, it would check the corresponding
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reroute timer. If the timer had expired (reached
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley zero), the IP layer would send a ping to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway, followed immediately by the datagram.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o The ping (ICMP Echo) would be sent again if
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley necessary, up to N times. If no ping reply was
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley received in N tries, the gateway would be assumed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to have failed, and a new first-hop gateway would
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be chosen for all cache entries pointing to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley failed gateway.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 54]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note that the size of Tr is inversely related to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley amount of advice available. Tr should be large enough
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to insure that:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * Any pinging will be at a low level (e.g., <10%) of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley all packets sent to a gateway from the host, AND
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * pinging is infrequent (e.g., every 3 minutes)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Since the recommended algorithm is concerned with the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateways pointed to by route cache entries, rather than
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the cache entries themselves, a two level data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley structure (perhaps coordinated with ARP or similar
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley caches) may be desirable for implementing a route
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley cache.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1.5 New Gateway Selection
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If the failed gateway is not the current default, the IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer can immediately switch to a default gateway. If it is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the current default that failed, the IP layer MUST select a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley different default gateway (assuming more than one default is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley known) for the failed route and for establishing new routes.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When a gateway does fail, the other gateways on the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connected network will learn of the failure through
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley some inter-gateway routing protocol. However, this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley will not happen instantaneously, since gateway routing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocols typically have a settling time of 30-60
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley seconds. If the host switches to an alternative
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway before the gateways have agreed on the failure,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the new target gateway will probably forward the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram to the failed gateway and send a Redirect back
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to the host pointing to the failed gateway (!). The
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley result is likely to be a rapid oscillation in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley contents of the host's route cache during the gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley settling period. It has been proposed that the dead-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway logic should include some hysteresis mechanism
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to prevent such oscillations. However, experience has
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley not shown any harm from such oscillations, since
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley service cannot be restored to the host until the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateways' routing information does settle down.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley One implementation technique for choosing a new default
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateway is to simply round-robin among the default
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateways in the host's list. Another is to rank the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 55]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateways in priority order, and when the current
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley default gateway is not the highest priority one, to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "ping" the higher-priority gateways slowly to detect
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley when they return to service. This pinging can be at a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley very low rate, e.g., 0.005 per second.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1.6 Initialization
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The following information MUST be configurable:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) IP address(es).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) Address mask(s).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (3) A list of default gateways, with a preference level.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A manual method of entering this configuration data MUST be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley provided. In addition, a variety of methods can be used to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley determine this information dynamically; see the section on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "Host Initialization" in [INTRO:1].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some host implementations use "wiretapping" of gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocols on a broadcast network to learn what gateways
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley exist. A standard method for default gateway discovery
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is under development.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.2 Reassembly
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The IP layer MUST implement reassembly of IP datagrams.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley We designate the largest datagram size that can be reassembled
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley by EMTU_R ("Effective MTU to receive"); this is sometimes
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley called the "reassembly buffer size". EMTU_R MUST be greater
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley than or equal to 576, SHOULD be either configurable or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley indefinite, and SHOULD be greater than or equal to the MTU of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the connected network(s).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A fixed EMTU_R limit should not be built into the code
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley because some application layer protocols require EMTU_R
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley values larger than 576.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An implementation may use a contiguous reassembly buffer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for each datagram, or it may use a more complex data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley structure that places no definite limit on the reassembled
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram size; in the latter case, EMTU_R is said to be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 56]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "indefinite".
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Logically, reassembly is performed by simply copying each
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fragment into the packet buffer at the proper offset.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note that fragments may overlap if successive
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley retransmissions use different packetizing but the same
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reassembly Id.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The tricky part of reassembly is the bookkeeping to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley determine when all bytes of the datagram have been
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reassembled. We recommend Clark's algorithm [IP:10] that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley requires no additional data space for the bookkeeping.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley However, note that, contrary to [IP:10], the first
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fragment header needs to be saved for inclusion in a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley possible ICMP Time Exceeded (Reassembly Timeout) message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There MUST be a mechanism by which the transport layer can
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley learn MMS_R, the maximum message size that can be received and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reassembled in an IP datagram (see GET_MAXSIZES calls in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Section 3.4). If EMTU_R is not indefinite, then the value of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MMS_R is given by:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MMS_R = EMTU_R - 20
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley since 20 is the minimum size of an IP header.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There MUST be a reassembly timeout. The reassembly timeout
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley value SHOULD be a fixed value, not set from the remaining TTL.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It is recommended that the value lie between 60 seconds and 120
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley seconds. If this timeout expires, the partially-reassembled
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram MUST be discarded and an ICMP Time Exceeded message
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sent to the source host (if fragment zero has been received).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The IP specification says that the reassembly timeout
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley should be the remaining TTL from the IP header, but this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley does not work well because gateways generally treat TTL as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a simple hop count rather than an elapsed time. If the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reassembly timeout is too small, datagrams will be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley discarded unnecessarily, and communication may fail. The
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley timeout needs to be at least as large as the typical
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley maximum delay across the Internet. A realistic minimum
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reassembly timeout would be 60 seconds.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It has been suggested that a cache might be kept of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley round-trip times measured by transport protocols for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley various destinations, and that these values might be used
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to dynamically determine a reasonable reassembly timeout
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 57]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley value. Further investigation of this approach is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley required.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If the reassembly timeout is set too high, buffer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley resources in the receiving host will be tied up too long,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and the MSL (Maximum Segment Lifetime) [TCP:1] will be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley larger than necessary. The MSL controls the maximum rate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley at which fragmented datagrams can be sent using distinct
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley values of the 16-bit Ident field; a larger MSL lowers the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley maximum rate. The TCP specification [TCP:1] arbitrarily
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley assumes a value of 2 minutes for MSL. This sets an upper
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley limit on a reasonable reassembly timeout value.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.3 Fragmentation
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Optionally, the IP layer MAY implement a mechanism to fragment
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley outgoing datagrams intentionally.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley We designate by EMTU_S ("Effective MTU for sending") the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley maximum IP datagram size that may be sent, for a particular
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley combination of IP source and destination addresses and perhaps
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TOS.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MUST implement a mechanism to allow the transport layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to learn MMS_S, the maximum transport-layer message size that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley may be sent for a given {source, destination, TOS} triplet (see
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley GET_MAXSIZES call in Section 3.4). If no local fragmentation
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is performed, the value of MMS_S will be:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MMS_S = EMTU_S - <IP header size>
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and EMTU_S must be less than or equal to the MTU of the network
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interface corresponding to the source address of the datagram.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note that <IP header size> in this equation will be 20, unless
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the IP reserves space to insert IP options for its own purposes
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in addition to any options inserted by the transport layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host that does not implement local fragmentation MUST ensure
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that the transport layer (for TCP) or the application layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (for UDP) obtains MMS_S from the IP layer and does not send a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram exceeding MMS_S in size.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It is generally desirable to avoid local fragmentation and to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley choose EMTU_S low enough to avoid fragmentation in any gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley along the path. In the absence of actual knowledge of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley minimum MTU along the path, the IP layer SHOULD use
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley EMTU_S <= 576 whenever the destination address is not on a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connected network, and otherwise use the connected network's
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 58]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MTU.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The MTU of each physical interface MUST be configurable.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host IP layer implementation MAY have a configuration flag
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "All-Subnets-MTU", indicating that the MTU of the connected
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network is to be used for destinations on different subnets
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley within the same network, but not for other networks. Thus,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley this flag causes the network class mask, rather than the subnet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address mask, to be used to choose an EMTU_S. For a multihomed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host, an "All-Subnets-MTU" flag is needed for each network
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interface.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Picking the correct datagram size to use when sending data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is a complex topic [IP:9].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) In general, no host is required to accept an IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram larger than 576 bytes (including header and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley data), so a host must not send a larger datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley without explicit knowledge or prior arrangement with
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the destination host. Thus, MMS_S is only an upper
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley bound on the datagram size that a transport protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley may send; even when MMS_S exceeds 556, the transport
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer must limit its messages to 556 bytes in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley absence of other knowledge about the destination
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) Some transport protocols (e.g., TCP) provide a way to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley explicitly inform the sender about the largest
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram the other end can receive and reassemble
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [IP:7]. There is no corresponding mechanism in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A transport protocol that assumes an EMTU_R larger
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley than 576 (see Section 3.3.2), can send a datagram of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley this larger size to another host that implements the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley same protocol.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (c) Hosts should ideally limit their EMTU_S for a given
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination to the minimum MTU of all the networks
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley along the path, to avoid any fragmentation. IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fragmentation, while formally correct, can create a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley serious transport protocol performance problem,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley because loss of a single fragment means all the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fragments in the segment must be retransmitted
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [IP:9].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 59]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Since nearly all networks in the Internet currently
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley support an MTU of 576 or greater, we strongly recommend
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the use of 576 for datagrams sent to non-local networks.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It has been suggested that a host could determine the MTU
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley over a given path by sending a zero-offset datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fragment and waiting for the receiver to time out the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reassembly (which cannot complete!) and return an ICMP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Time Exceeded message. This message would include the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley largest remaining fragment header in its body. More
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley direct mechanisms are being experimented with, but have
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley not yet been adopted (see e.g., RFC-1063).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.4 Local Multihoming
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.4.1 Introduction
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A multihomed host has multiple IP addresses, which we may
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley think of as "logical interfaces". These logical interfaces
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley may be associated with one or more physical interfaces, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley these physical interfaces may be connected to the same or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley different networks.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Here are some important cases of multihoming:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) Multiple Logical Networks
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Internet architects envisioned that each physical
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network would have a single unique IP network (or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley subnet) number. However, LAN administrators have
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sometimes found it useful to violate this assumption,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley operating a LAN with multiple logical networks per
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley physical connected network.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If a host connected to such a physical network is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley configured to handle traffic for each of N different
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley logical networks, then the host will have N logical
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interfaces. These could share a single physical
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interface, or might use N physical interfaces to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley same network.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) Multiple Logical Hosts
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When a host has multiple IP addresses that all have the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley same <Network-number> part (and the same <Subnet-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley number> part, if any), the logical interfaces are known
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley as "logical hosts". These logical interfaces might
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley share a single physical interface or might use separate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 60]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley physical interfaces to the same physical network.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (c) Simple Multihoming
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In this case, each logical interface is mapped into a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley separate physical interface and each physical interface
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is connected to a different physical network. The term
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "multihoming" was originally applied only to this case,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley but it is now applied more generally.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host with embedded gateway functionality will
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley typically fall into the simple multihoming case. Note,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley however, that a host may be simply multihomed without
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley containing an embedded gateway, i.e., without
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley forwarding datagrams from one connected network to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley another.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This case presents the most difficult routing problems.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The choice of interface (i.e., the choice of first-hop
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network) may significantly affect performance or even
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reachability of remote parts of the Internet.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Finally, we note another possibility that is NOT
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multihoming: one logical interface may be bound to multiple
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley physical interfaces, in order to increase the reliability or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley throughput between directly connected machines by providing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley alternative physical paths between them. For instance, two
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley systems might be connected by multiple point-to-point links.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley We call this "link-layer multiplexing". With link-layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multiplexing, the protocols above the link layer are unaware
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that multiple physical interfaces are present; the link-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer device driver is responsible for multiplexing and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley routing packets across the physical interfaces.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In the Internet protocol architecture, a transport protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley instance ("entity") has no address of its own, but instead
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley uses a single Internet Protocol (IP) address. This has
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implications for the IP, transport, and application layers,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and for the interfaces between them. In particular, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application software may have to be aware of the multiple IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addresses of a multihomed host; in other cases, the choice
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley can be made within the network software.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.4.2 Multihoming Requirements
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The following general rules apply to the selection of an IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley source address for sending a datagram from a multihomed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 61]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) If the datagram is sent in response to a received
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram, the source address for the response SHOULD be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the specific-destination address of the request. See
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Sections 4.1.3.5 and 4.2.3.7 and the "General Issues"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley section of [INTRO:1] for more specific requirements on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley higher layers.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Otherwise, a source address must be selected.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) An application MUST be able to explicitly specify the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley source address for initiating a connection or a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley request.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (3) In the absence of such a specification, the networking
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley software MUST choose a source address. Rules for this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley choice are described below.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There are two key requirement issues related to multihoming:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (A) A host MAY silently discard an incoming datagram whose
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination address does not correspond to the physical
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interface through which it is received.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (B) A host MAY restrict itself to sending (non-source-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley routed) IP datagrams only through the physical
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interface that corresponds to the IP source address of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the datagrams.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet host implementors have used two different
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley conceptual models for multihoming, briefly summarized
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in the following discussion. This document takes no
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley stand on which model is preferred; each seems to have a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley place. This ambivalence is reflected in the issues (A)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and (B) being optional.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Strong ES Model
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Strong ES (End System, i.e., host) model
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley emphasizes the host/gateway (ES/IS) distinction,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and would therefore substitute MUST for MAY in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley issues (A) and (B) above. It tends to model a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multihomed host as a set of logical hosts within
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the same physical host.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 62]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley With respect to (A), proponents of the Strong ES
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley model note that automatic Internet routing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mechanisms could not route a datagram to a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley physical interface that did not correspond to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Under the Strong ES model, the route computation
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for an outgoing datagram is the mapping:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley route(src IP addr, dest IP addr, TOS)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley -> gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Here the source address is included as a parameter
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in order to select a gateway that is directly
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reachable on the corresponding physical interface.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note that this model logically requires that in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley general there be at least one default gateway, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley preferably multiple defaults, for each IP source
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Weak ES Model
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This view de-emphasizes the ES/IS distinction, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley would therefore substitute MUST NOT for MAY in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley issues (A) and (B). This model may be the more
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley natural one for hosts that wiretap gateway routing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocols, and is necessary for hosts that have
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley embedded gateway functionality.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Weak ES Model may cause the Redirect mechanism
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to fail. If a datagram is sent out a physical
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interface that does not correspond to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination address, the first-hop gateway will
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley not realize when it needs to send a Redirect. On
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the other hand, if the host has embedded gateway
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley functionality, then it has routing information
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley without listening to Redirects.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In the Weak ES model, the route computation for an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley outgoing datagram is the mapping:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley route(dest IP addr, TOS) -> gateway, interface
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 63]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.4.3 Choosing a Source Address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When it sends an initial connection request (e.g., a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP "SYN" segment) or a datagram service request (e.g.,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a UDP-based query), the transport layer on a multihomed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host needs to know which source address to use. If the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application does not specify it, the transport layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley must ask the IP layer to perform the conceptual
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mapping:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley GET_SRCADDR(remote IP addr, TOS)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley -> local IP address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Here TOS is the Type-of-Service value (see Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.6), and the result is the desired source address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The following rules are suggested for implementing this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mapping:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) If the remote Internet address lies on one of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (sub-) nets to which the host is directly
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connected, a corresponding source address may be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley chosen, unless the corresponding interface is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley known to be down.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) The route cache may be consulted, to see if there
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is an active route to the specified destination
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network through any network interface; if so, a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley local IP address corresponding to that interface
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley may be chosen.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (c) The table of static routes, if any (see Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.1.2) may be similarly consulted.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (d) The default gateways may be consulted. If these
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateways are assigned to different interfaces, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interface corresponding to the gateway with the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley highest preference may be chosen.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In the future, there may be a defined way for a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multihomed host to ask the gateways on all connected
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley networks for advice about the best network to use for a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley given destination.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It will be noted that this process is essentially the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley same as datagram routing (see Section 3.3.1), and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley therefore hosts may be able to combine the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 64]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementation of the two functions.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.5 Source Route Forwarding
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Subject to restrictions given below, a host MAY be able to act
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley as an intermediate hop in a source route, forwarding a source-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley routed datagram to the next specified hop.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley However, in performing this gateway-like function, the host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MUST obey all the relevant rules for a gateway forwarding
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley source-routed datagrams [INTRO:2]. This includes the following
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specific provisions, which override the corresponding host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley provisions given earlier in this document:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (A) TTL (ref. Section 3.2.1.7)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The TTL field MUST be decremented and the datagram perhaps
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley discarded as specified for a gateway in [INTRO:2].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (B) ICMP Destination Unreachable (ref. Section 3.2.2.1)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MUST be able to generate Destination Unreachable
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley messages with the following codes:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4 (Fragmentation Required but DF Set) when a source-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley routed datagram cannot be fragmented to fit into the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley target network;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 5 (Source Route Failed) when a source-routed datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley cannot be forwarded, e.g., because of a routing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley problem or because the next hop of a strict source
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley route is not on a connected network.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (C) IP Source Address (ref. Section 3.2.1.3)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A source-routed datagram being forwarded MAY (and normally
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley will) have a source address that is not one of the IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addresses of the forwarding host.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (D) Record Route Option (ref. Section 3.2.1.8d)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host that is forwarding a source-routed datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley containing a Record Route option MUST update that option,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley if it has room.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (E) Timestamp Option (ref. Section 3.2.1.8e)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host that is forwarding a source-routed datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 65]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley containing a Timestamp Option MUST add the current
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley timestamp to that option, according to the rules for this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley option.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley To define the rules restricting host forwarding of source-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley routed datagrams, we use the term "local source-routing" if the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley next hop will be through the same physical interface through
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley which the datagram arrived; otherwise, it is "non-local
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley source-routing".
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o A host is permitted to perform local source-routing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley without restriction.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o A host that supports non-local source-routing MUST have a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley configurable switch to disable forwarding, and this switch
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MUST default to disabled.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o The host MUST satisfy all gateway requirements for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley configurable policy filters [INTRO:2] restricting non-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley local forwarding.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If a host receives a datagram with an incomplete source route
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley but does not forward it for some reason, the host SHOULD return
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley an ICMP Destination Unreachable (code 5, Source Route Failed)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley message, unless the datagram was itself an ICMP error message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.6 Broadcasts
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Section 3.2.1.3 defined the four standard IP broadcast address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley forms:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Limited Broadcast: {-1, -1}
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Directed Broadcast: {<Network-number>,-1}
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Subnet Directed Broadcast:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley {<Network-number>,<Subnet-number>,-1}
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley All-Subnets Directed Broadcast: {<Network-number>,-1,-1}
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MUST recognize any of these forms in the destination
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address of an incoming datagram.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There is a class of hosts* that use non-standard broadcast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address forms, substituting 0 for -1. All hosts SHOULD
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley_________________________
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley*4.2BSD Unix and its derivatives, but not 4.3BSD.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 66]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley recognize and accept any of these non-standard broadcast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addresses as the destination address of an incoming datagram.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MAY optionally have a configuration option to choose the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 0 or the -1 form of broadcast address, for each physical
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interface, but this option SHOULD default to the standard (-1)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley form.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When a host sends a datagram to a link-layer broadcast address,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the IP destination address MUST be a legal IP broadcast or IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multicast address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host SHOULD silently discard a datagram that is received via
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a link-layer broadcast (see Section 2.4) but does not specify
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley an IP multicast or broadcast destination address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Hosts SHOULD use the Limited Broadcast address to broadcast to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a connected network.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Using the Limited Broadcast address instead of a Directed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Broadcast address may improve system robustness. Problems
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley are often caused by machines that do not understand the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley plethora of broadcast addresses (see Section 3.2.1.3), or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that may have different ideas about which broadcast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addresses are in use. The prime example of the latter is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley machines that do not understand subnetting but are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley attached to a subnetted net. Sending a Subnet Broadcast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for the connected network will confuse those machines,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley which will see it as a message to some other host.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There has been discussion on whether a datagram addressed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to the Limited Broadcast address ought to be sent from all
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the interfaces of a multihomed host. This specification
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley takes no stand on the issue.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.7 IP Multicasting
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host SHOULD support local IP multicasting on all connected
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley networks for which a mapping from Class D IP addresses to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley link-layer addresses has been specified (see below). Support
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for local IP multicasting includes sending multicast datagrams,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley joining multicast groups and receiving multicast datagrams, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley leaving multicast groups. This implies support for all of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [IP:4] except the IGMP protocol itself, which is OPTIONAL.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 67]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IGMP provides gateways that are capable of multicast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley routing with the information required to support IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multicasting across multiple networks. At this time,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multicast-routing gateways are in the experimental stage
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and are not widely available. For hosts that are not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connected to networks with multicast-routing gateways or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that do not need to receive multicast datagrams
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley originating on other networks, IGMP serves no purpose and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is therefore optional for now. However, the rest of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [IP:4] is currently recommended for the purpose of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley providing IP-layer access to local network multicast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addressing, as a preferable alternative to local broadcast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addressing. It is expected that IGMP will become
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley recommended at some future date, when multicast-routing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gateways have become more widely available.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If IGMP is not implemented, a host SHOULD still join the "all-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley hosts" group (224.0.0.1) when the IP layer is initialized and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley remain a member for as long as the IP layer is active.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Joining the "all-hosts" group will support strictly local
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley uses of multicasting, e.g., a gateway discovery protocol,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley even if IGMP is not implemented.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The mapping of IP Class D addresses to local addresses is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley currently specified for the following types of networks:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Ethernet/IEEE 802.3, as defined in [IP:4].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Any network that supports broadcast but not multicast,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley addressing: all IP Class D addresses map to the local
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley broadcast address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Any type of point-to-point link (e.g., SLIP or HDLC
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley links): no mapping required. All IP multicast datagrams
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley are sent as-is, inside the local framing.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Mappings for other types of networks will be specified in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley future.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host SHOULD provide a way for higher-layer protocols or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley applications to determine which of the host's connected
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley network(s) support IP multicast addressing.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 68]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3.8 Error Reporting
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Wherever practical, hosts MUST return ICMP error datagrams on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley detection of an error, except in those cases where returning an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP error message is specifically prohibited.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A common phenomenon in datagram networks is the "black
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley hole disease": datagrams are sent out, but nothing comes
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley back. Without any error datagrams, it is difficult for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the user to figure out what the problem is.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.4 INTERNET/TRANSPORT LAYER INTERFACE
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The interface between the IP layer and the transport layer MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley provide full access to all the mechanisms of the IP layer,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley including options, Type-of-Service, and Time-to-Live. The
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transport layer MUST either have mechanisms to set these interface
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley parameters, or provide a path to pass them through from an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application, or both.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Applications are urged to make use of these mechanisms where
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley applicable, even when the mechanisms are not currently
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley effective in the Internet (e.g., TOS). This will allow these
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mechanisms to be immediately useful when they do become
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley effective, without a large amount of retrofitting of host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley software.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley We now describe a conceptual interface between the transport layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and the IP layer, as a set of procedure calls. This is an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley extension of the information in Section 3.3 of RFC-791 [IP:1].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * Send Datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SEND(src, dst, prot, TOS, TTL, BufPTR, len, Id, DF, opt
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley => result )
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley where the parameters are defined in RFC-791. Passing an Id
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley parameter is optional; see Section 3.2.1.5.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * Receive Datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RECV(BufPTR, prot
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley => result, src, dst, SpecDest, TOS, len, opt)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 69]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley All the parameters are defined in RFC-791, except for:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SpecDest = specific-destination address of datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (defined in Section 3.2.1.3)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The result parameter dst contains the datagram's destination
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address. Since this may be a broadcast or multicast address,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the SpecDest parameter (not shown in RFC-791) MUST be passed.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The parameter opt contains all the IP options received in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagram; these MUST also be passed to the transport layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * Select Source Address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley GET_SRCADDR(remote, TOS) -> local
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley remote = remote IP address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TOS = Type-of-Service
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley local = local IP address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley See Section 3.3.4.3.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * Find Maximum Datagram Sizes
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley GET_MAXSIZES(local, remote, TOS) -> MMS_R, MMS_S
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MMS_R = maximum receive transport-message size.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MMS_S = maximum send transport-message size.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (local, remote, TOS defined above)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley See Sections 3.3.2 and 3.3.3.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * Advice on Delivery Success
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ADVISE_DELIVPROB(sense, local, remote, TOS)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Here the parameter sense is a 1-bit flag indicating whether
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley positive or negative advice is being given; see the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley discussion in Section 3.3.1.4. The other parameters were
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley defined earlier.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * Send ICMP Message
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SEND_ICMP(src, dst, TOS, TTL, BufPTR, len, Id, DF, opt)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley -> result
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 70]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (Parameters defined in RFC-791).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Passing an Id parameter is optional; see Section 3.2.1.5.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The transport layer MUST be able to send certain ICMP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley messages: Port Unreachable or any of the query-type
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley messages. This function could be considered to be a special
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley case of the SEND() call, of course; we describe it separately
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for clarity.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * Receive ICMP Message
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RECV_ICMP(BufPTR ) -> result, src, dst, len, opt
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (Parameters defined in RFC-791).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The IP layer MUST pass certain ICMP messages up to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley appropriate transport-layer routine. This function could be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley considered to be a special case of the RECV() call, of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley course; we describe it separately for clarity.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley For an ICMP error message, the data that is passed up MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley include the original Internet header plus all the octets of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the original message that are included in the ICMP message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This data will be used by the transport layer to locate the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection state information, if any.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In particular, the following ICMP messages are to be passed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley up:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Destination Unreachable
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Source Quench
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Echo Reply (to ICMP user interface, unless the Echo
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Request originated in the IP layer)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Timestamp Reply (to ICMP user interface)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Time Exceeded
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In the future, there may be additions to this interface to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley pass path data (see Section 3.3.1.3) between the IP and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transport layers.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 71]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.5 INTERNET LAYER REQUIREMENTS SUMMARY
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | |S| |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | |H| |F
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | |O|M|o
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | |S| |U|U|o
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | |H| |L|S|t
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |M|O| |D|T|n
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |U|U|M| | |o
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |S|L|A|N|N|t
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |T|D|Y|O|O|t
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyFEATURE |SECTION | | | |T|T|e
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley-------------------------------------------------|--------|-|-|-|-|-|--
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyImplement IP and ICMP |3.1 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyHandle remote multihoming in application layer |3.1 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleySupport local multihoming |3.1 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyMeet gateway specs if forward datagrams |3.1 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyConfiguration switch for embedded gateway |3.1 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Config switch default to non-gateway |3.1 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Auto-config based on number of interfaces |3.1 | | | | |x|1
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyAble to log discarded datagrams |3.1 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Record in counter |3.1 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleySilently discard Version != 4 |3.2.1.1 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyVerify IP checksum, silently discard bad dgram |3.2.1.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyAddressing: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Subnet addressing (RFC-950) |3.2.1.3 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Src address must be host's own IP address |3.2.1.3 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Silently discard datagram with bad dest addr |3.2.1.3 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Silently discard datagram with bad src addr |3.2.1.3 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleySupport reassembly |3.2.1.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRetain same Id field in identical datagram |3.2.1.5 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyTOS: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Allow transport layer to set TOS |3.2.1.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Pass received TOS up to transport layer |3.2.1.6 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Use RFC-795 link-layer mappings for TOS |3.2.1.6 | | | |x| |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyTTL: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send packet with TTL of 0 |3.2.1.7 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Discard received packets with TTL < 2 |3.2.1.7 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Allow transport layer to set TTL |3.2.1.7 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Fixed TTL is configurable |3.2.1.7 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyIP Options: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Allow transport layer to send IP options |3.2.1.8 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Pass all IP options rcvd to higher layer |3.2.1.8 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 72]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP layer silently ignore unknown options |3.2.1.8 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Security option |3.2.1.8a| | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send Stream Identifier option |3.2.1.8b| | | |x| |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Silently ignore Stream Identifer option |3.2.1.8b|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Record Route option |3.2.1.8d| | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Timestamp option |3.2.1.8e| | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleySource Route Option: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Originate & terminate Source Route options |3.2.1.8c|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Datagram with completed SR passed up to TL |3.2.1.8c|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Build correct (non-redundant) return route |3.2.1.8c|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send multiple SR options in one header |3.2.1.8c| | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyICMP: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Silently discard ICMP msg with unknown type |3.2.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Include more than 8 octets of orig datagram |3.2.2 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Included octets same as received |3.2.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Demux ICMP Error to transport protocol |3.2.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send ICMP error message with TOS=0 |3.2.2 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send ICMP error message for: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - ICMP error msg |3.2.2 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - IP b'cast or IP m'cast |3.2.2 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Link-layer b'cast |3.2.2 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Non-initial fragment |3.2.2 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Datagram with non-unique src address |3.2.2 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Return ICMP error msgs (when not prohibited) |3.3.8 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Dest Unreachable: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Generate Dest Unreachable (code 2/3) |3.2.2.1 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Pass ICMP Dest Unreachable to higher layer |3.2.2.1 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Higher layer act on Dest Unreach |3.2.2.1 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Interpret Dest Unreach as only hint |3.2.2.1 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Redirect: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Host send Redirect |3.2.2.2 | | | |x| |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Update route cache when recv Redirect |3.2.2.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Handle both Host and Net Redirects |3.2.2.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Discard illegal Redirect |3.2.2.2 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Source Quench: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send Source Quench if buffering exceeded |3.2.2.3 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Pass Source Quench to higher layer |3.2.2.3 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Higher layer act on Source Quench |3.2.2.3 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Time Exceeded: pass to higher layer |3.2.2.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Parameter Problem: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send Parameter Problem messages |3.2.2.5 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Pass Parameter Problem to higher layer |3.2.2.5 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Report Parameter Problem to user |3.2.2.5 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP Echo Request or Reply: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Echo server and Echo client |3.2.2.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 73]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Echo client |3.2.2.6 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Discard Echo Request to broadcast address |3.2.2.6 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Discard Echo Request to multicast address |3.2.2.6 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Use specific-dest addr as Echo Reply src |3.2.2.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send same data in Echo Reply |3.2.2.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Pass Echo Reply to higher layer |3.2.2.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Reflect Record Route, Time Stamp options |3.2.2.6 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Reverse and reflect Source Route option |3.2.2.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP Information Request or Reply: |3.2.2.7 | | | |x| |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP Timestamp and Timestamp Reply: |3.2.2.8 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Minimize delay variability |3.2.2.8 | |x| | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Silently discard b'cast Timestamp |3.2.2.8 | | |x| | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Silently discard m'cast Timestamp |3.2.2.8 | | |x| | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Use specific-dest addr as TS Reply src |3.2.2.8 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Reflect Record Route, Time Stamp options |3.2.2.6 | |x| | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Reverse and reflect Source Route option |3.2.2.8 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Pass Timestamp Reply to higher layer |3.2.2.8 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Obey rules for "standard value" |3.2.2.8 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ICMP Address Mask Request and Reply: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Addr Mask source configurable |3.2.2.9 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Support static configuration of addr mask |3.2.2.9 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Get addr mask dynamically during booting |3.2.2.9 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Get addr via ICMP Addr Mask Request/Reply |3.2.2.9 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Retransmit Addr Mask Req if no Reply |3.2.2.9 |x| | | | |3
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Assume default mask if no Reply |3.2.2.9 | |x| | | |3
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Update address mask from first Reply only |3.2.2.9 |x| | | | |3
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Reasonableness check on Addr Mask |3.2.2.9 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send unauthorized Addr Mask Reply msgs |3.2.2.9 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Explicitly configured to be agent |3.2.2.9 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Static config=> Addr-Mask-Authoritative flag |3.2.2.9 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Broadcast Addr Mask Reply when init. |3.2.2.9 |x| | | | |3
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyROUTING OUTBOUND DATAGRAMS: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Use address mask in local/remote decision |3.3.1.1 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Operate with no gateways on conn network |3.3.1.1 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Maintain "route cache" of next-hop gateways |3.3.1.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Treat Host and Net Redirect the same |3.3.1.2 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If no cache entry, use default gateway |3.3.1.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Support multiple default gateways |3.3.1.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Provide table of static routes |3.3.1.2 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Flag: route overridable by Redirects |3.3.1.2 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Key route cache on host, not net address |3.3.1.3 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Include TOS in route cache |3.3.1.3 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Able to detect failure of next-hop gateway |3.3.1.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Assume route is good forever |3.3.1.4 | | | |x| |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 74]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Ping gateways continuously |3.3.1.4 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Ping only when traffic being sent |3.3.1.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Ping only when no positive indication |3.3.1.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Higher and lower layers give advice |3.3.1.4 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Switch from failed default g'way to another |3.3.1.5 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Manual method of entering config info |3.3.1.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyREASSEMBLY and FRAGMENTATION: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Able to reassemble incoming datagrams |3.3.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley At least 576 byte datagrams |3.3.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley EMTU_R configurable or indefinite |3.3.2 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Transport layer able to learn MMS_R |3.3.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send ICMP Time Exceeded on reassembly timeout |3.3.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Fixed reassembly timeout value |3.3.2 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Pass MMS_S to higher layers |3.3.3 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Local fragmentation of outgoing packets |3.3.3 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Else don't send bigger than MMS_S |3.3.3 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send max 576 to off-net destination |3.3.3 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley All-Subnets-MTU configuration flag |3.3.3 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyMULTIHOMING: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Reply with same addr as spec-dest addr |3.3.4.2 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Allow application to choose local IP addr |3.3.4.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Silently discard d'gram in "wrong" interface |3.3.4.2 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Only send d'gram through "right" interface |3.3.4.2 | | |x| | |4
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleySOURCE-ROUTE FORWARDING: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Forward datagram with Source Route option |3.3.5 | | |x| | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Obey corresponding gateway rules |3.3.5 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Update TTL by gateway rules |3.3.5 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Able to generate ICMP err code 4, 5 |3.3.5 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP src addr not local host |3.3.5 | | |x| | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Update Timestamp, Record Route options |3.3.5 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Configurable switch for non-local SRing |3.3.5 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Defaults to OFF |3.3.5 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Satisfy gwy access rules for non-local SRing |3.3.5 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If not forward, send Dest Unreach (cd 5) |3.3.5 | |x| | | |2
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyBROADCAST: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Broadcast addr as IP source addr |3.2.1.3 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Receive 0 or -1 broadcast formats OK |3.3.6 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Config'ble option to send 0 or -1 b'cast |3.3.6 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Default to -1 broadcast |3.3.6 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Recognize all broadcast address formats |3.3.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Use IP b'cast/m'cast addr in link-layer b'cast |3.3.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Silently discard link-layer-only b'cast dg's |3.3.6 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Use Limited Broadcast addr for connected net |3.3.6 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 75]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 INTERNET LAYER October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyMULTICAST: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Support local IP multicasting (RFC-1112) |3.3.7 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Support IGMP (RFC-1112) |3.3.7 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Join all-hosts group at startup |3.3.7 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Higher layers learn i'face m'cast capability |3.3.7 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyINTERFACE: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Allow transport layer to use all IP mechanisms |3.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Pass interface ident up to transport layer |3.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Pass all IP options up to transport layer |3.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Transport layer can send certain ICMP messages |3.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Pass spec'd ICMP messages up to transp. layer |3.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Include IP hdr+8 octets or more from orig. |3.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Able to leap tall buildings at a single bound |3.5 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyFootnotes:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley(1) Only if feature is implemented.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley(2) This requirement is overruled if datagram is an ICMP error message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley(3) Only if feature is implemented and is configured "on".
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley(4) Unless has embedded gateway functionality or is source routed.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 76]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- UDP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley4. TRANSPORT PROTOCOLS
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1 USER DATAGRAM PROTOCOL -- UDP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.1 INTRODUCTION
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The User Datagram Protocol UDP [UDP:1] offers only a minimal
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transport service -- non-guaranteed datagram delivery -- and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley gives applications direct access to the datagram service of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP layer. UDP is used by applications that do not require the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley level of service of TCP or that wish to use communications
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley services (e.g., multicast or broadcast delivery) not available
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley from TCP.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley UDP is almost a null protocol; the only services it provides
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley over IP are checksumming of data and multiplexing by port
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley number. Therefore, an application program running over UDP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley must deal directly with end-to-end communication problems that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a connection-oriented protocol would have handled -- e.g.,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley retransmission for reliable delivery, packetization and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reassembly, flow control, congestion avoidance, etc., when
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley these are required. The fairly complex coupling between IP and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP will be mirrored in the coupling between UDP and many
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley applications using UDP.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.2 PROTOCOL WALK-THROUGH
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There are no known errors in the specification of UDP.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3 SPECIFIC ISSUES
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3.1 Ports
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley UDP well-known ports follow the same rules as TCP well-known
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ports; see Section 4.2.2.1 below.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If a datagram arrives addressed to a UDP port for which
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley there is no pending LISTEN call, UDP SHOULD send an ICMP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Port Unreachable message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3.2 IP Options
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley UDP MUST pass any IP option that it receives from the IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer transparently to the application layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An application MUST be able to specify IP options to be sent
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in its UDP datagrams, and UDP MUST pass these options to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 77]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- UDP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley At present, the only options that need be passed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley through UDP are Source Route, Record Route, and Time
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Stamp. However, new options may be defined in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley future, and UDP need not and should not make any
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley assumptions about the format or content of options it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley passes to or from the application; an exception to this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley might be an IP-layer security option.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An application based on UDP will need to obtain a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley source route from a request datagram and supply a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reversed route for sending the corresponding reply.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3.3 ICMP Messages
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley UDP MUST pass to the application layer all ICMP error
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley messages that it receives from the IP layer. Conceptually
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley at least, this may be accomplished with an upcall to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ERROR_REPORT routine (see Section 4.2.4.1).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note that ICMP error messages resulting from sending a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley UDP datagram are received asynchronously. A UDP-based
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application that wants to receive ICMP error messages
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is responsible for maintaining the state necessary to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley demultiplex these messages when they arrive; for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley example, the application may keep a pending receive
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley operation for this purpose. The application is also
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley responsible to avoid confusion from a delayed ICMP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley error message resulting from an earlier use of the same
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley port(s).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3.4 UDP Checksums
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MUST implement the facility to generate and validate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley UDP checksums. An application MAY optionally be able to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley control whether a UDP checksum will be generated, but it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MUST default to checksumming on.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If a UDP datagram is received with a checksum that is non-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley zero and invalid, UDP MUST silently discard the datagram.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An application MAY optionally be able to control whether UDP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley datagrams without checksums should be discarded or passed to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the application.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some applications that normally run only across local
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley area networks have chosen to turn off UDP checksums for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 78]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- UDP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley efficiency. As a result, numerous cases of undetected
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley errors have been reported. The advisability of ever
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley turning off UDP checksumming is very controversial.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There is a common implementation error in UDP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley checksums. Unlike the TCP checksum, the UDP checksum
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is optional; the value zero is transmitted in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley checksum field of a UDP header to indicate the absence
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of a checksum. If the transmitter really calculates a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley UDP checksum of zero, it must transmit the checksum as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley all 1's (65535). No special action is required at the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley receiver, since zero and 65535 are equivalent in 1's
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley complement arithmetic.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3.5 UDP Multihoming
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When a UDP datagram is received, its specific-destination
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address MUST be passed up to the application layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An application program MUST be able to specify the IP source
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address to be used for sending a UDP datagram or to leave it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley unspecified (in which case the networking software will
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley choose an appropriate source address). There SHOULD be a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley way to communicate the chosen source address up to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application layer (e.g, so that the application can later
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley receive a reply datagram only from the corresponding
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley interface).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A request/response application that uses UDP should use
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a source address for the response that is the same as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the specific destination address of the request. See
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the "General Issues" section of [INTRO:1].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.3.6 Invalid Addresses
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A UDP datagram received with an invalid IP source address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (e.g., a broadcast or multicast address) must be discarded
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley by UDP or by the IP layer (see Section 3.2.1.3).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When a host sends a UDP datagram, the source address MUST be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (one of) the IP address(es) of the host.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.4 UDP/APPLICATION LAYER INTERFACE
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The application interface to UDP MUST provide the full services
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of the IP/transport interface described in Section 3.4 of this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 79]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- UDP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley document. Thus, an application using UDP needs the functions
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of the GET_SRCADDR(), GET_MAXSIZES(), ADVISE_DELIVPROB(), and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RECV_ICMP() calls described in Section 3.4. For example,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley GET_MAXSIZES() can be used to learn the effective maximum UDP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley maximum datagram size for a particular {interface,remote
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley host,TOS} triplet.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An application-layer program MUST be able to set the TTL and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TOS values as well as IP options for sending a UDP datagram,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and these values must be passed transparently to the IP layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley UDP MAY pass the received TOS up to the application layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.1.5 UDP REQUIREMENTS SUMMARY
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | |S| |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | |H| |F
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | |O|M|o
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | |S| |U|U|o
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | |H| |L|S|t
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |M|O| |D|T|n
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |U|U|M| | |o
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |S|L|A|N|N|t
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |T|D|Y|O|O|t
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyFEATURE |SECTION | | | |T|T|e
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley-------------------------------------------------|--------|-|-|-|-|-|--
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley UDP | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley-------------------------------------------------|--------|-|-|-|-|-|--
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyUDP send Port Unreachable |4.1.3.1 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyIP Options in UDP | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Pass rcv'd IP options to applic layer |4.1.3.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Applic layer can specify IP options in Send |4.1.3.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - UDP passes IP options down to IP layer |4.1.3.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyPass ICMP msgs up to applic layer |4.1.3.3 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyUDP checksums: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Able to generate/check checksum |4.1.3.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Silently discard bad checksum |4.1.3.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Sender Option to not generate checksum |4.1.3.4 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Default is to checksum |4.1.3.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Receiver Option to require checksum |4.1.3.4 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyUDP Multihoming | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Pass spec-dest addr to application |4.1.3.5 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 80]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- UDP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Applic layer can specify Local IP addr |4.1.3.5 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Applic layer specify wild Local IP addr |4.1.3.5 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Applic layer notified of Local IP addr used |4.1.3.5 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyBad IP src addr silently discarded by UDP/IP |4.1.3.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyOnly send valid IP source address |4.1.3.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyUDP Application Interface Services | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyFull IP interface of 3.4 for application |4.1.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Able to spec TTL, TOS, IP opts when send dg |4.1.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Pass received TOS up to applic layer |4.1.4 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 81]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2 TRANSMISSION CONTROL PROTOCOL -- TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.1 INTRODUCTION
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Transmission Control Protocol TCP [TCP:1] is the primary
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley virtual-circuit transport protocol for the Internet suite. TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley provides reliable, in-sequence delivery of a full-duplex stream
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of octets (8-bit bytes). TCP is used by those applications
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley needing reliable, connection-oriented transport service, e.g.,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mail (SMTP), file transfer (FTP), and virtual terminal service
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (Telnet); requirements for these application-layer protocols
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley are described in [INTRO:1].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2 PROTOCOL WALK-THROUGH
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.1 Well-Known Ports: RFC-793 Section 2.7
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP reserves port numbers in the range 0-255 for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "well-known" ports, used to access services that are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley standardized across the Internet. The remainder of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley port space can be freely allocated to application
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley processes. Current well-known port definitions are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley listed in the RFC entitled "Assigned Numbers"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [INTRO:6]. A prerequisite for defining a new well-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley known port is an RFC documenting the proposed service
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in enough detail to allow new implementations.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some systems extend this notion by adding a third
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley subdivision of the TCP port space: reserved ports,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley which are generally used for operating-system-specific
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley services. For example, reserved ports might fall
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley between 256 and some system-dependent upper limit.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some systems further choose to protect well-known and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reserved ports by permitting only privileged users to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley open TCP connections with those port values. This is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley perfectly reasonable as long as the host does not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley assume that all hosts protect their low-numbered ports
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in this manner.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.2 Use of Push: RFC-793 Section 2.8
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When an application issues a series of SEND calls without
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley setting the PUSH flag, the TCP MAY aggregate the data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley internally without sending it. Similarly, when a series of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segments is received without the PSH bit, a TCP MAY queue
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the data internally without passing it to the receiving
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 82]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The PSH bit is not a record marker and is independent of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segment boundaries. The transmitter SHOULD collapse
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley successive PSH bits when it packetizes data, to send the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley largest possible segment.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP MAY implement PUSH flags on SEND calls. If PUSH flags
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley are not implemented, then the sending TCP: (1) must not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley buffer data indefinitely, and (2) MUST set the PSH bit in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the last buffered segment (i.e., when there is no more
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley queued data to be sent).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The discussion in RFC-793 on pages 48, 50, and 74
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley erroneously implies that a received PSH flag must be passed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to the application layer. Passing a received PSH flag to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the application layer is now OPTIONAL.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An application program is logically required to set the PUSH
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley flag in a SEND call whenever it needs to force delivery of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the data to avoid a communication deadlock. However, a TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SHOULD send a maximum-sized segment whenever possible, to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley improve performance (see Section 4.2.3.4).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When the PUSH flag is not implemented on SEND calls,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley i.e., when the application/TCP interface uses a pure
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley streaming model, responsibility for aggregating any
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley tiny data fragments to form reasonable sized segments
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is partially borne by the application layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Generally, an interactive application protocol must set
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the PUSH flag at least in the last SEND call in each
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley command or response sequence. A bulk transfer protocol
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley like FTP should set the PUSH flag on the last segment
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of a file or when necessary to prevent buffer deadlock.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley At the receiver, the PSH bit forces buffered data to be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley delivered to the application (even if less than a full
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley buffer has been received). Conversely, the lack of a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley PSH bit can be used to avoid unnecessary wakeup calls
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to the application process; this can be an important
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley performance optimization for large timesharing hosts.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Passing the PSH bit to the receiving application allows
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley an analogous optimization within the application.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.3 Window Size: RFC-793 Section 3.1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The window size MUST be treated as an unsigned number, or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley else large window sizes will appear like negative windows
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 83]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and TCP will not work. It is RECOMMENDED that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementations reserve 32-bit fields for the send and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley receive window sizes in the connection record and do all
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley window computations with 32 bits.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It is known that the window field in the TCP header is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley too small for high-speed, long-delay paths.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Experimental TCP options have been defined to extend
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the window size; see for example [TCP:11]. In
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley anticipation of the adoption of such an extension, TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementors should treat windows as 32 bits.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.4 Urgent Pointer: RFC-793 Section 3.1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The second sentence is in error: the urgent pointer points
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to the sequence number of the LAST octet (not LAST+1) in a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sequence of urgent data. The description on page 56 (last
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sentence) is correct.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP MUST support a sequence of urgent data of any length.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP MUST inform the application layer asynchronously
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley whenever it receives an Urgent pointer and there was
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley previously no pending urgent data, or whenever the Urgent
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley pointer advances in the data stream. There MUST be a way
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for the application to learn how much urgent data remains to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be read from the connection, or at least to determine
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley whether or not more urgent data remains to be read.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Although the Urgent mechanism may be used for any
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application, it is normally used to send "interrupt"-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley type commands to a Telnet program (see "Using Telnet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Synch Sequence" section in [INTRO:1]).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The asynchronous or "out-of-band" notification will
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley allow the application to go into "urgent mode", reading
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley data from the TCP connection. This allows control
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley commands to be sent to an application whose normal
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley input buffers are full of unprocessed data.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The generic ERROR-REPORT() upcall described in Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.4.1 is a possible mechanism for informing the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application of the arrival of urgent data.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 84]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.5 TCP Options: RFC-793 Section 3.1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP MUST be able to receive a TCP option in any segment.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP MUST ignore without error any TCP option it does not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implement, assuming that the option has a length field (all
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP options defined in the future will have length fields).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP MUST be prepared to handle an illegal option length
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (e.g., zero) without crashing; a suggested procedure is to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reset the connection and log the reason.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.6 Maximum Segment Size Option: RFC-793 Section 3.1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP MUST implement both sending and receiving the Maximum
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Segment Size option [TCP:4].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP SHOULD send an MSS (Maximum Segment Size) option in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley every SYN segment when its receive MSS differs from the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley default 536, and MAY send it always.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If an MSS option is not received at connection setup, TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MUST assume a default send MSS of 536 (576-40) [TCP:4].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The maximum size of a segment that TCP really sends, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "effective send MSS," MUST be the smaller of the send MSS
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (which reflects the available reassembly buffer size at the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley remote host) and the largest size permitted by the IP layer:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Eff.snd.MSS =
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley min(SendMSS+20, MMS_S) - TCPhdrsize - IPoptionsize
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley where:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * SendMSS is the MSS value received from the remote host,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley or the default 536 if no MSS option is received.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * MMS_S is the maximum size for a transport-layer message
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that TCP may send.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * TCPhdrsize is the size of the TCP header; this is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley normally 20, but may be larger if TCP options are to be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sent.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * IPoptionsize is the size of any IP options that TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley will pass to the IP layer with the current message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The MSS value to be sent in an MSS option must be less than
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 85]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley or equal to:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MMS_R - 20
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley where MMS_R is the maximum size for a transport-layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley message that can be received (and reassembled). TCP obtains
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MMS_R and MMS_S from the IP layer; see the generic call
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley GET_MAXSIZES in Section 3.4.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The choice of TCP segment size has a strong effect on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley performance. Larger segments increase throughput by
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley amortizing header size and per-datagram processing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley overhead over more data bytes; however, if the packet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is so large that it causes IP fragmentation, efficiency
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley drops sharply if any fragments are lost [IP:9].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some TCP implementations send an MSS option only if the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley destination host is on a non-connected network.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley However, in general the TCP layer may not have the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley appropriate information to make this decision, so it is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley preferable to leave to the IP layer the task of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley determining a suitable MTU for the Internet path. We
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley therefore recommend that TCP always send the option (if
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley not 536) and that the IP layer determine MMS_R as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specified in 3.3.3 and 3.4. A proposed IP-layer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mechanism to measure the MTU would then modify the IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer without changing TCP.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.7 TCP Checksum: RFC-793 Section 3.1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Unlike the UDP checksum (see Section 4.1.3.4), the TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley checksum is never optional. The sender MUST generate it and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the receiver MUST check it.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.8 TCP Connection State Diagram: RFC-793 Section 3.2,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley page 23
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There are several problems with this diagram:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) The arrow from SYN-SENT to SYN-RCVD should be labeled
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley with "snd SYN,ACK", to agree with the text on page 68
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and with Figure 8.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) There could be an arrow from SYN-RCVD state to LISTEN
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley state, conditioned on receiving a RST after a passive
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley open (see text page 70).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 86]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (c) It is possible to go directly from FIN-WAIT-1 to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TIME-WAIT state (see page 75 of the spec).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.9 Initial Sequence Number Selection: RFC-793 Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.3, page 27
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP MUST use the specified clock-driven selection of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley initial sequence numbers.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.10 Simultaneous Open Attempts: RFC-793 Section 3.4, page
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 32
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There is an error in Figure 8: the packet on line 7 should
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be identical to the packet on line 5.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP MUST support simultaneous open attempts.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It sometimes surprises implementors that if two
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley applications attempt to simultaneously connect to each
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley other, only one connection is generated instead of two.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This was an intentional design decision; don't try to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "fix" it.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.11 Recovery from Old Duplicate SYN: RFC-793 Section 3.4,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley page 33
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note that a TCP implementation MUST keep track of whether a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection has reached SYN_RCVD state as the result of a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley passive OPEN or an active OPEN.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.12 RST Segment: RFC-793 Section 3.4
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP SHOULD allow a received RST segment to include data.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It has been suggested that a RST segment could contain
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ASCII text that encoded and explained the cause of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RST. No standard has yet been established for such
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley data.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.13 Closing a Connection: RFC-793 Section 3.5
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP connection may terminate in two ways: (1) the normal
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP close sequence using a FIN handshake, and (2) an "abort"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in which one or more RST segments are sent and the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection state is immediately discarded. If a TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 87]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection is closed by the remote site, the local
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application MUST be informed whether it closed normally or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley was aborted.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The normal TCP close sequence delivers buffered data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reliably in both directions. Since the two directions of a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP connection are closed independently, it is possible for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a connection to be "half closed," i.e., closed in only one
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley direction, and a host is permitted to continue sending data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in the open direction on a half-closed connection.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host MAY implement a "half-duplex" TCP close sequence, so
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that an application that has called CLOSE cannot continue to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley read data from the connection. If such a host issues a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley CLOSE call while received data is still pending in TCP, or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley if new data is received after CLOSE is called, its TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SHOULD send a RST to show that data was lost.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When a connection is closed actively, it MUST linger in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TIME-WAIT state for a time 2xMSL (Maximum Segment Lifetime).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley However, it MAY accept a new SYN from the remote TCP to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reopen the connection directly from TIME-WAIT state, if it:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) assigns its initial sequence number for the new
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection to be larger than the largest sequence
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley number it used on the previous connection incarnation,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) returns to TIME-WAIT state if the SYN turns out to be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley an old duplicate.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP's full-duplex data-preserving close is a feature
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that is not included in the analogous ISO transport
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley protocol TP4.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some systems have not implemented half-closed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connections, presumably because they do not fit into
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the I/O model of their particular operating system. On
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley these systems, once an application has called CLOSE, it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley can no longer read input data from the connection; this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is referred to as a "half-duplex" TCP close sequence.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The graceful close algorithm of TCP requires that the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection state remain defined on (at least) one end
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of the connection, for a timeout period of 2xMSL, i.e.,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4 minutes. During this period, the (remote socket,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 88]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley local socket) pair that defines the connection is busy
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and cannot be reused. To shorten the time that a given
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley port pair is tied up, some TCPs allow a new SYN to be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley accepted in TIME-WAIT state.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.14 Data Communication: RFC-793 Section 3.7, page 40
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Since RFC-793 was written, there has been extensive work on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP algorithms to achieve efficient data communication.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Later sections of the present document describe required and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley recommended TCP algorithms to determine when to send data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (Section 4.2.3.4), when to send an acknowledgment (Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.2), and when to update the window (Section 4.2.3.3).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley One important performance issue is "Silly Window
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Syndrome" or "SWS" [TCP:5], a stable pattern of small
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley incremental window movements resulting in extremely
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley poor TCP performance. Algorithms to avoid SWS are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley described below for both the sending side (Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.4) and the receiving side (Section 4.2.3.3).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In brief, SWS is caused by the receiver advancing the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley right window edge whenever it has any new buffer space
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley available to receive data and by the sender using any
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley incremental window, no matter how small, to send more
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley data [TCP:5]. The result can be a stable pattern of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sending tiny data segments, even though both sender and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley receiver have a large total buffer space for the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection. SWS can only occur during the transmission
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of a large amount of data; if the connection goes
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley quiescent, the problem will disappear. It is caused by
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley typical straightforward implementation of window
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley management, but the sender and receiver algorithms
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley given below will avoid it.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Another important TCP performance issue is that some
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley applications, especially remote login to character-at-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a-time hosts, tend to send streams of one-octet data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segments. To avoid deadlocks, every TCP SEND call from
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley such applications must be "pushed", either explicitly
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley by the application or else implicitly by TCP. The
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley result may be a stream of TCP segments that contain one
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley data octet each, which makes very inefficient use of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the Internet and contributes to Internet congestion.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Nagle Algorithm described in Section 4.2.3.4
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley provides a simple and effective solution to this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley problem. It does have the effect of clumping
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 89]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley characters over Telnet connections; this may initially
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley surprise users accustomed to single-character echo, but
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley user acceptance has not been a problem.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note that the Nagle algorithm and the send SWS
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley avoidance algorithm play complementary roles in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley improving performance. The Nagle algorithm discourages
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sending tiny segments when the data to be sent
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley increases in small increments, while the SWS avoidance
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley algorithm discourages small segments resulting from the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley right window edge advancing in small increments.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A careless implementation can send two or more
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley acknowledgment segments per data segment received. For
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley example, suppose the receiver acknowledges every data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segment immediately. When the application program
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley subsequently consumes the data and increases the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley available receive buffer space again, the receiver may
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley send a second acknowledgment segment to update the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley window at the sender. The extreme case occurs with
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley single-character segments on TCP connections using the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Telnet protocol for remote login service. Some
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementations have been observed in which each
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley incoming 1-character segment generates three return
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segments: (1) the acknowledgment, (2) a one byte
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley increase in the window, and (3) the echoed character,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley respectively.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.15 Retransmission Timeout: RFC-793 Section 3.7, page 41
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The algorithm suggested in RFC-793 for calculating the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley retransmission timeout is now known to be inadequate; see
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Section 4.2.3.1 below.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Recent work by Jacobson [TCP:7] on Internet congestion and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP retransmission stability has produced a transmission
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley algorithm combining "slow start" with "congestion
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley avoidance". A TCP MUST implement this algorithm.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If a retransmitted packet is identical to the original
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley packet (which implies not only that the data boundaries have
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley not changed, but also that the window and acknowledgment
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fields of the header have not changed), then the same IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Identification field MAY be used (see Section 3.2.1.5).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some TCP implementors have chosen to "packetize" the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley data stream, i.e., to pick segment boundaries when
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 90]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segments are originally sent and to queue these
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segments in a "retransmission queue" until they are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley acknowledged. Another design (which may be simpler) is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to defer packetizing until each time data is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transmitted or retransmitted, so there will be no
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segment retransmission queue.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In an implementation with a segment retransmission
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley queue, TCP performance may be enhanced by repacketizing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the segments awaiting acknowledgment when the first
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley retransmission timeout occurs. That is, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley outstanding segments that fitted would be combined into
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley one maximum-sized segment, with a new IP Identification
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley value. The TCP would then retain this combined segment
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley in the retransmit queue until it was acknowledged.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley However, if the first two segments in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley retransmission queue totalled more than one maximum-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sized segment, the TCP would retransmit only the first
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segment using the original IP Identification field.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.16 Managing the Window: RFC-793 Section 3.7, page 41
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP receiver SHOULD NOT shrink the window, i.e., move the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley right window edge to the left. However, a sending TCP MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be robust against window shrinking, which may cause the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "useable window" (see Section 4.2.3.4) to become negative.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If this happens, the sender SHOULD NOT send new data, but
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SHOULD retransmit normally the old unacknowledged data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley between SND.UNA and SND.UNA+SND.WND. The sender MAY also
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley retransmit old data beyond SND.UNA+SND.WND, but SHOULD NOT
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley time out the connection if data beyond the right window edge
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is not acknowledged. If the window shrinks to zero, the TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MUST probe it in the standard way (see next Section).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Many TCP implementations become confused if the window
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley shrinks from the right after data has been sent into a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley larger window. Note that TCP has a heuristic to select
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the latest window update despite possible datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reordering; as a result, it may ignore a window update
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley with a smaller window than previously offered if
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley neither the sequence number nor the acknowledgment
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley number is increased.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 91]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.17 Probing Zero Windows: RFC-793 Section 3.7, page 42
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Probing of zero (offered) windows MUST be supported.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP MAY keep its offered receive window closed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley indefinitely. As long as the receiving TCP continues to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley send acknowledgments in response to the probe segments, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sending TCP MUST allow the connection to stay open.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It is extremely important to remember that ACK
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (acknowledgment) segments that contain no data are not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reliably transmitted by TCP. If zero window probing is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley not supported, a connection may hang forever when an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ACK segment that re-opens the window is lost.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The delay in opening a zero window generally occurs
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley when the receiving application stops taking data from
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley its TCP. For example, consider a printer daemon
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application, stopped because the printer ran out of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley paper.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The transmitting host SHOULD send the first zero-window
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley probe when a zero window has existed for the retransmission
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley timeout period (see Section 4.2.2.15), and SHOULD increase
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley exponentially the interval between successive probes.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This procedure minimizes delay if the zero-window
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley condition is due to a lost ACK segment containing a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley window-opening update. Exponential backoff is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley recommended, possibly with some maximum interval not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specified here. This procedure is similar to that of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the retransmission algorithm, and it may be possible to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley combine the two procedures in the implementation.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.18 Passive OPEN Calls: RFC-793 Section 3.8
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Every passive OPEN call either creates a new connection
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley record in LISTEN state, or it returns an error; it MUST NOT
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley affect any previously created connection record.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP that supports multiple concurrent users MUST provide
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley an OPEN call that will functionally allow an application to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley LISTEN on a port while a connection block with the same
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley local port is in SYN-SENT or SYN-RECEIVED state.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 92]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some applications (e.g., SMTP servers) may need to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley handle multiple connection attempts at about the same
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley time. The probability of a connection attempt failing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is reduced by giving the application some means of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley listening for a new connection at the same time that an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley earlier connection attempt is going through the three-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley way handshake.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Acceptable implementations of concurrent opens may
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley permit multiple passive OPEN calls, or they may allow
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "cloning" of LISTEN-state connections from a single
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley passive OPEN call.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.19 Time to Live: RFC-793 Section 3.9, page 52
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RFC-793 specified that TCP was to request the IP layer to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley send TCP segments with TTL = 60. This is obsolete; the TTL
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley value used to send TCP segments MUST be configurable. See
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Section 3.2.1.7 for discussion.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.20 Event Processing: RFC-793 Section 3.9
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley While it is not strictly required, a TCP SHOULD be capable
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of queueing out-of-order TCP segments. Change the "may" in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the last sentence of the first paragraph on page 70 to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "should".
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some small-host implementations have omitted segment
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley queueing because of limited buffer space. This
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley omission may be expected to adversely affect TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley throughput, since loss of a single segment causes all
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley later segments to appear to be "out of sequence".
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In general, the processing of received segments MUST be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implemented to aggregate ACK segments whenever possible.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley For example, if the TCP is processing a series of queued
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segments, it MUST process them all before sending any ACK
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segments.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Here are some detailed error corrections and notes on the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Event Processing section of RFC-793.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) CLOSE Call, CLOSE-WAIT state, p. 61: enter LAST-ACK
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley state, not CLOSING.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) LISTEN state, check for SYN (pp. 65, 66): With a SYN
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 93]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley bit, if the security/compartment or the precedence is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley wrong for the segment, a reset is sent. The wrong form
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of reset is shown in the text; it should be:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley <SEQ=0><ACK=SEG.SEQ+SEG.LEN><CTL=RST,ACK>
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (c) SYN-SENT state, Check for SYN, p. 68: When the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection enters ESTABLISHED state, the following
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley variables must be set:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SND.WND <- SEG.WND
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SND.WL1 <- SEG.SEQ
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SND.WL2 <- SEG.ACK
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (d) Check security and precedence, p. 71: The first heading
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "ESTABLISHED STATE" should really be a list of all
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley states other than SYN-RECEIVED: ESTABLISHED, FIN-WAIT-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TIME-WAIT.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (e) Check SYN bit, p. 71: "In SYN-RECEIVED state and if
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the connection was initiated with a passive OPEN, then
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley return this connection to the LISTEN state and return.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Otherwise...".
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (f) Check ACK field, SYN-RECEIVED state, p. 72: When the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection enters ESTABLISHED state, the variables
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley listed in (c) must be set.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (g) Check ACK field, ESTABLISHED state, p. 72: The ACK is a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley duplicate if SEG.ACK =< SND.UNA (the = was omitted).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Similarly, the window should be updated if: SND.UNA =<
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SEG.ACK =< SND.NXT.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (h) USER TIMEOUT, p. 77:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It would be better to notify the application of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley timeout rather than letting TCP force the connection
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley closed. However, see also Section 4.2.3.5.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.21 Acknowledging Queued Segments: RFC-793 Section 3.9
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP MAY send an ACK segment acknowledging RCV.NXT when a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley valid segment arrives that is in the window but not at the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley left window edge.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 94]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RFC-793 (see page 74) was ambiguous about whether or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley not an ACK segment should be sent when an out-of-order
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segment was received, i.e., when SEG.SEQ was unequal to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RCV.NXT.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley One reason for ACKing out-of-order segments might be to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley support an experimental algorithm known as "fast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley retransmit". With this algorithm, the sender uses the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "redundant" ACK's to deduce that a segment has been
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley lost before the retransmission timer has expired. It
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley counts the number of times an ACK has been received
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley with the same value of SEG.ACK and with the same right
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley window edge. If more than a threshold number of such
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ACK's is received, then the segment containing the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley octets starting at SEG.ACK is assumed to have been lost
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and is retransmitted, without awaiting a timeout. The
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley threshold is chosen to compensate for the maximum
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley likely segment reordering in the Internet. There is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley not yet enough experience with the fast retransmit
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley algorithm to determine how useful it is.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3 SPECIFIC ISSUES
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.1 Retransmission Timeout Calculation
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host TCP MUST implement Karn's algorithm and Jacobson's
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley algorithm for computing the retransmission timeout ("RTO").
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Jacobson's algorithm for computing the smoothed round-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley trip ("RTT") time incorporates a simple measure of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley variance [TCP:7].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Karn's algorithm for selecting RTT measurements ensures
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that ambiguous round-trip times will not corrupt the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley calculation of the smoothed round-trip time [TCP:6].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This implementation also MUST include "exponential backoff"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for successive RTO values for the same segment.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Retransmission of SYN segments SHOULD use the same algorithm
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley as data segments.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There were two known problems with the RTO calculations
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specified in RFC-793. First, the accurate measurement
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of RTTs is difficult when there are retransmissions.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Second, the algorithm to compute the smoothed round-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley trip time is inadequate [TCP:7], because it incorrectly
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 95]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley assumed that the variance in RTT values would be small
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and constant. These problems were solved by Karn's and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Jacobson's algorithm, respectively.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The performance increase resulting from the use of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley these improvements varies from noticeable to dramatic.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Jacobson's algorithm for incorporating the measured RTT
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley variance is especially important on a low-speed link,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley where the natural variation of packet sizes causes a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley large variation in RTT. One vendor found link
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley utilization on a 9.6kb line went from 10% to 90% as a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley result of implementing Jacobson's variance algorithm in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The following values SHOULD be used to initialize the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley estimation parameters for a new connection:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) RTT = 0 seconds.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) RTO = 3 seconds. (The smoothed variance is to be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley initialized to the value that will result in this RTO).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The recommended upper and lower bounds on the RTO are known
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to be inadequate on large internets. The lower bound SHOULD
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be measured in fractions of a second (to accommodate high
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley speed LANs) and the upper bound should be 2*MSL, i.e., 240
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley seconds.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Experience has shown that these initialization values
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley are reasonable, and that in any case the Karn and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Jacobson algorithms make TCP behavior reasonably
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley insensitive to the initial parameter choices.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.2 When to Send an ACK Segment
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A host that is receiving a stream of TCP data segments can
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley increase efficiency in both the Internet and the hosts by
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley sending fewer than one ACK (acknowledgment) segment per data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segment received; this is known as a "delayed ACK" [TCP:5].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP SHOULD implement a delayed ACK, but an ACK should not
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be excessively delayed; in particular, the delay MUST be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley less than 0.5 seconds, and in a stream of full-sized
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segments there SHOULD be an ACK for at least every second
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segment.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 96]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A delayed ACK gives the application an opportunity to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley update the window and perhaps to send an immediate
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley response. In particular, in the case of character-mode
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley remote login, a delayed ACK can reduce the number of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segments sent by the server by a factor of 3 (ACK,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley window update, and echo character all combined in one
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segment).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In addition, on some large multi-user hosts, a delayed
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ACK can substantially reduce protocol processing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley overhead by reducing the total number of packets to be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley processed [TCP:5]. However, excessive delays on ACK's
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley can disturb the round-trip timing and packet "clocking"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley algorithms [TCP:7].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.3 When to Send a Window Update
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP MUST include a SWS avoidance algorithm in the receiver
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [TCP:5].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The receiver's SWS avoidance algorithm determines when
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the right window edge may be advanced; this is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley customarily known as "updating the window". This
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley algorithm combines with the delayed ACK algorithm (see
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Section 4.2.3.2) to determine when an ACK segment
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley containing the current window will really be sent to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the receiver. We use the notation of RFC-793; see
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Figures 4 and 5 in that document.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The solution to receiver SWS is to avoid advancing the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley right window edge RCV.NXT+RCV.WND in small increments,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley even if data is received from the network in small
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segments.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Suppose the total receive buffer space is RCV.BUFF. At
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley any given moment, RCV.USER octets of this total may be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley tied up with data that has been received and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley acknowledged but which the user process has not yet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley consumed. When the connection is quiescent, RCV.WND =
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RCV.BUFF and RCV.USER = 0.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Keeping the right window edge fixed as data arrives and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is acknowledged requires that the receiver offer less
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley than its full buffer space, i.e., the receiver must
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specify a RCV.WND that keeps RCV.NXT+RCV.WND constant
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley as RCV.NXT increases. Thus, the total buffer space
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RCV.BUFF is generally divided into three parts:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 97]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley |<------- RCV.BUFF ---------------->|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1 2 3
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ----|---------|------------------|------|----
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RCV.NXT ^
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (Fixed)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1 - RCV.USER = data received but not yet consumed;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 2 - RCV.WND = space advertised to sender;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3 - Reduction = space available but not yet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley advertised.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The suggested SWS avoidance algorithm for the receiver
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is to keep RCV.NXT+RCV.WND fixed until the reduction
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley satisfies:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RCV.BUFF - RCV.USER - RCV.WND >=
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley min( Fr * RCV.BUFF, Eff.snd.MSS )
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley where Fr is a fraction whose recommended value is 1/2,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and Eff.snd.MSS is the effective send MSS for the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection (see Section 4.2.2.6). When the inequality
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is satisfied, RCV.WND is set to RCV.BUFF-RCV.USER.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note that the general effect of this algorithm is to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley advance RCV.WND in increments of Eff.snd.MSS (for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley realistic receive buffers: Eff.snd.MSS < RCV.BUFF/2).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note also that the receiver must use its own
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Eff.snd.MSS, assuming it is the same as the sender's.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.4 When to Send Data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP MUST include a SWS avoidance algorithm in the sender.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP SHOULD implement the Nagle Algorithm [TCP:9] to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley coalesce short segments. However, there MUST be a way for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley an application to disable the Nagle algorithm on an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley individual connection. In all cases, sending data is also
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley subject to the limitation imposed by the Slow Start
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley algorithm (Section 4.2.2.15).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Nagle algorithm is generally as follows:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If there is unacknowledged data (i.e., SND.NXT >
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SND.UNA), then the sending TCP buffers all user
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 98]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley data (regardless of the PSH bit), until the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley outstanding data has been acknowledged or until
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the TCP can send a full-sized segment (Eff.snd.MSS
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley bytes; see Section 4.2.2.6).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some applications (e.g., real-time display window
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley updates) require that the Nagle algorithm be turned
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley off, so small data segments can be streamed out at the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley maximum rate.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The sender's SWS avoidance algorithm is more difficult
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley than the receivers's, because the sender does not know
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (directly) the receiver's total buffer space RCV.BUFF.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An approach which has been found to work well is for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the sender to calculate Max(SND.WND), the maximum send
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley window it has seen so far on the connection, and to use
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley this value as an estimate of RCV.BUFF. Unfortunately,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley this can only be an estimate; the receiver may at any
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley time reduce the size of RCV.BUFF. To avoid a resulting
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley deadlock, it is necessary to have a timeout to force
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transmission of data, overriding the SWS avoidance
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley algorithm. In practice, this timeout should seldom
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley occur.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The "useable window" [TCP:5] is:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley U = SND.UNA + SND.WND - SND.NXT
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley i.e., the offered window less the amount of data sent
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley but not acknowledged. If D is the amount of data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley queued in the sending TCP but not yet sent, then the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley following set of rules is recommended.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send data:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (1) if a maximum-sized segment can be sent, i.e, if:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley min(D,U) >= Eff.snd.MSS;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (2) or if the data is pushed and all queued data can
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be sent now, i.e., if:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [SND.NXT = SND.UNA and] PUSHED and D <= U
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (the bracketed condition is imposed by the Nagle
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley algorithm);
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 99]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (3) or if at least a fraction Fs of the maximum window
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley can be sent, i.e., if:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [SND.NXT = SND.UNA and]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley min(D.U) >= Fs * Max(SND.WND);
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (4) or if data is PUSHed and the override timeout
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley occurs.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Here Fs is a fraction whose recommended value is 1/2.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The override timeout should be in the range 0.1 - 1.0
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley seconds. It may be convenient to combine this timer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley with the timer used to probe zero windows (Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.2.17).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Finally, note that the SWS avoidance algorithm just
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specified is to be used instead of the sender-side
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley algorithm contained in [TCP:5].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.5 TCP Connection Failures
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Excessive retransmission of the same segment by TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley indicates some failure of the remote host or the Internet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley path. This failure may be of short or long duration. The
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley following procedure MUST be used to handle excessive
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley retransmissions of data segments [IP:11]:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) There are two thresholds R1 and R2 measuring the amount
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of retransmission that has occurred for the same
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segment. R1 and R2 might be measured in time units or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley as a count of retransmissions.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) When the number of transmissions of the same segment
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reaches or exceeds threshold R1, pass negative advice
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (see Section 3.3.1.4) to the IP layer, to trigger
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley dead-gateway diagnosis.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (c) When the number of transmissions of the same segment
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reaches a threshold R2 greater than R1, close the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (d) An application MUST be able to set the value for R2 for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a particular connection. For example, an interactive
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application might set R2 to "infinity," giving the user
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley control over when to disconnect.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 100]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (d) TCP SHOULD inform the application of the delivery
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley problem (unless such information has been disabled by
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the application; see Section 4.2.4.1), when R1 is
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reached and before R2. This will allow a remote login
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (User Telnet) application program to inform the user,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for example.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The value of R1 SHOULD correspond to at least 3
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley retransmissions, at the current RTO. The value of R2 SHOULD
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley correspond to at least 100 seconds.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An attempt to open a TCP connection could fail with
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley excessive retransmissions of the SYN segment or by receipt
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of a RST segment or an ICMP Port Unreachable. SYN
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley retransmissions MUST be handled in the general way just
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley described for data retransmissions, including notification
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of the application layer.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley However, the values of R1 and R2 may be different for SYN
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and data segments. In particular, R2 for a SYN segment MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be set large enough to provide retransmission of the segment
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for at least 3 minutes. The application can close the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection (i.e., give up on the open attempt) sooner, of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley course.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some Internet paths have significant setup times, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the number of such paths is likely to increase in the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley future.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.6 TCP Keep-Alives
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Implementors MAY include "keep-alives" in their TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementations, although this practice is not universally
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley accepted. If keep-alives are included, the application MUST
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be able to turn them on or off for each TCP connection, and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley they MUST default to off.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Keep-alive packets MUST only be sent when no data or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley acknowledgement packets have been received for the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection within an interval. This interval MUST be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley configurable and MUST default to no less than two hours.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It is extremely important to remember that ACK segments that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley contain no data are not reliably transmitted by TCP.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Consequently, if a keep-alive mechanism is implemented it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MUST NOT interpret failure to respond to any specific probe
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley as a dead connection.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 101]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An implementation SHOULD send a keep-alive segment with no
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley data; however, it MAY be configurable to send a keep-alive
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segment containing one garbage octet, for compatibility with
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley erroneous TCP implementations.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A "keep-alive" mechanism periodically probes the other
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley end of a connection when the connection is otherwise
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley idle, even when there is no data to be sent. The TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specification does not include a keep-alive mechanism
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley because it could: (1) cause perfectly good connections
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to break during transient Internet failures; (2)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley consume unnecessary bandwidth ("if no one is using the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection, who cares if it is still good?"); and (3)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley cost money for an Internet path that charges for
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley packets.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some TCP implementations, however, have included a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley keep-alive mechanism. To confirm that an idle
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection is still active, these implementations send
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a probe segment designed to elicit a response from the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley peer TCP. Such a segment generally contains SEG.SEQ =
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SND.NXT-1 and may or may not contain one garbage octet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of data. Note that on a quiet connection SND.NXT =
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RCV.NXT, so that this SEG.SEQ will be outside the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley window. Therefore, the probe causes the receiver to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley return an acknowledgment segment, confirming that the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection is still live. If the peer has dropped the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection due to a network partition or a crash, it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley will respond with a RST instead of an acknowledgment
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segment.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Unfortunately, some misbehaved TCP implementations fail
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to respond to a segment with SEG.SEQ = SND.NXT-1 unless
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the segment contains data. Alternatively, an
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementation could determine whether a peer responded
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley correctly to keep-alive packets with no garbage data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley octet.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP keep-alive mechanism should only be invoked in
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley server applications that might otherwise hang
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley indefinitely and consume resources unnecessarily if a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley client crashes or aborts a connection during a network
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley failure.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 102]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.7 TCP Multihoming
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If an application on a multihomed host does not specify the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley local IP address when actively opening a TCP connection,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley then the TCP MUST ask the IP layer to select a local IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address before sending the (first) SYN. See the function
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley GET_SRCADDR() in Section 3.4.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley At all other times, a previous segment has either been sent
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley or received on this connection, and TCP MUST use the same
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley local address is used that was used in those previous
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segments.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.8 IP Options
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When received options are passed up to TCP from the IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer, TCP MUST ignore options that it does not understand.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP MAY support the Time Stamp and Record Route options.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An application MUST be able to specify a source route when
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley it actively opens a TCP connection, and this MUST take
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley precedence over a source route received in a datagram.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When a TCP connection is OPENed passively and a packet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley arrives with a completed IP Source Route option (containing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley a return route), TCP MUST save the return route and use it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for all segments sent on this connection. If a different
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley source route arrives in a later segment, the later
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley definition SHOULD override the earlier one.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.9 ICMP Messages
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP MUST act on an ICMP error message passed up from the IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley layer, directing it to the connection that created the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley error. The necessary demultiplexing information can be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley found in the IP header contained within the ICMP message.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Source Quench
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP MUST react to a Source Quench by slowing
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley transmission on the connection. The RECOMMENDED
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley procedure is for a Source Quench to trigger a "slow
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley start," as if a retransmission timeout had occurred.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Destination Unreachable -- codes 0, 1, 5
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Since these Unreachable messages indicate soft error
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 103]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley conditions, TCP MUST NOT abort the connection, and it
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SHOULD make the information available to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP could report the soft error condition directly
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to the application layer with an upcall to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ERROR_REPORT routine, or it could merely note the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley message and report it to the application only when
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and if the TCP connection times out.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Destination Unreachable -- codes 2-4
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley These are hard error conditions, so TCP SHOULD abort
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the connection.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Time Exceeded -- codes 0, 1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This should be handled the same way as Destination
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Unreachable codes 0, 1, 5 (see above).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Parameter Problem
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This should be handled the same way as Destination
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Unreachable codes 0, 1, 5 (see above).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.10 Remote Address Validation
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP implementation MUST reject as an error a local OPEN
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley call for an invalid remote IP address (e.g., a broadcast or
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley multicast address).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley An incoming SYN with an invalid source address must be
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ignored either by TCP or by the IP layer (see Section
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 3.2.1.3).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A TCP implementation MUST silently discard an incoming SYN
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segment that is addressed to a broadcast or multicast
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.11 TCP Traffic Patterns
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The TCP protocol specification [TCP:1] gives the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementor much freedom in designing the algorithms
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that control the message flow over the connection --
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley packetizing, managing the window, sending
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 104]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley acknowledgments, etc. These design decisions are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley difficult because a TCP must adapt to a wide range of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley traffic patterns. Experience has shown that a TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementor needs to verify the design on two extreme
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley traffic patterns:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Single-character Segments
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Even if the sender is using the Nagle Algorithm,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley when a TCP connection carries remote login traffic
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley across a low-delay LAN the receiver will generally
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley get a stream of single-character segments. If
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley remote terminal echo mode is in effect, the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley receiver's system will generally echo each
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley character as it is received.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley o Bulk Transfer
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley When TCP is used for bulk transfer, the data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley stream should be made up (almost) entirely of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley segments of the size of the effective MSS.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Although TCP uses a sequence number space with
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley byte (octet) granularity, in bulk-transfer mode
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley its operation should be as if TCP used a sequence
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley space that counted only segments.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Experience has furthermore shown that a single TCP can
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley effectively and efficiently handle these two extremes.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The most important tool for verifying a new TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementation is a packet trace program. There is a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley large volume of experience showing the importance of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley tracing a variety of traffic patterns with other TCP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementations and studying the results carefully.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.3.12 Efficiency
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Extensive experience has led to the following
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley suggestions for efficient implementation of TCP:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (a) Don't Copy Data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In bulk data transfer, the primary CPU-intensive
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley tasks are copying data from one place to another
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and checksumming the data. It is vital to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley minimize the number of copies of TCP data. Since
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 105]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the ultimate speed limitation may be fetching data
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley across the memory bus, it may be useful to combine
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the copy with checksumming, doing both with a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley single memory fetch.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (b) Hand-Craft the Checksum Routine
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A good TCP checksumming routine is typically two
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to five times faster than a simple and direct
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley implementation of the definition. Great care and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley clever coding are often required and advisable to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley make the checksumming code "blazing fast". See
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley [TCP:10].
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (c) Code for the Common Case
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP protocol processing can be complicated, but
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley for most segments there are only a few simple
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley decisions to be made. Per-segment processing will
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be greatly speeded up by coding the main line to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley minimize the number of decisions in the most
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley common case.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.4 TCP/APPLICATION LAYER INTERFACE
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.4.1 Asynchronous Reports
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There MUST be a mechanism for reporting soft TCP error
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley conditions to the application. Generically, we assume this
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley takes the form of an application-supplied ERROR_REPORT
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley routine that may be upcalled [INTRO:7] asynchronously from
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the transport layer:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ERROR_REPORT(local connection name, reason, subreason)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The precise encoding of the reason and subreason parameters
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is not specified here. However, the conditions that are
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reported asynchronously to the application MUST include:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * ICMP error message arrived (see 4.2.3.9)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * Excessive retransmissions (see 4.2.3.5)
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley * Urgent pointer advance (see 4.2.2.4).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley However, an application program that does not want to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley receive such ERROR_REPORT calls SHOULD be able to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 106]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley effectively disable these calls.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley These error reports generally reflect soft errors that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley can be ignored without harm by many applications. It
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley has been suggested that these error report calls should
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley default to "disabled," but this is not required.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.4.2 Type-of-Service
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The application layer MUST be able to specify the Type-of-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Service (TOS) for segments that are sent on a connection.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley It not required, but the application SHOULD be able to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley change the TOS during the connection lifetime. TCP SHOULD
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley pass the current TOS value without change to the IP layer,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley when it sends segments on the connection.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The TOS will be specified independently in each direction on
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the connection, so that the receiver application will
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specify the TOS used for ACK segments.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley TCP MAY pass the most recently received TOS up to the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley application.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some applications (e.g., SMTP) change the nature of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley their communication during the lifetime of a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley connection, and therefore would like to change the TOS
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley specification.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Note also that the OPEN call specified in RFC-793
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley includes a parameter ("options") in which the caller
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley can specify IP options such as source route, record
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley route, or timestamp.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.4.3 Flush Call
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some TCP implementations have included a FLUSH call, which
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley will empty the TCP send queue of any data for which the user
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley has issued SEND calls but which is still to the right of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley current send window. That is, it flushes as much queued
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley send data as possible without losing sequence number
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley synchronization. This is useful for implementing the "abort
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley output" function of Telnet.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 107]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.4.4 Multihoming
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The user interface outlined in sections 2.7 and 3.8 of RFC-
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 793 needs to be extended for multihoming. The OPEN call
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley MUST have an optional parameter:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley OPEN( ... [local IP address,] ... )
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to allow the specification of the local IP address.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley DISCUSSION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Some TCP-based applications need to specify the local
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IP address to be used to open a particular connection;
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley FTP is an example.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IMPLEMENTATION:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley A passive OPEN call with a specified "local IP address"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley parameter will await an incoming connection request to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that address. If the parameter is unspecified, a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley passive OPEN will await an incoming connection request
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley to any local IP address, and then bind the local IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley address of the connection to the particular address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that is used.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley For an active OPEN call, a specified "local IP address"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley parameter will be used for opening the connection. If
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the parameter is unspecified, the networking software
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley will choose an appropriate local IP address (see
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Section 3.3.4.2) for the connection
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4.2.5 TCP REQUIREMENT SUMMARY
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | |S| |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | |H| |F
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | |O|M|o
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | |S| |U|U|o
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | |H| |L|S|t
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |M|O| |D|T|n
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |U|U|M| | |o
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |S|L|A|N|N|t
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | |T|D|Y|O|O|t
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyFEATURE |SECTION | | | |T|T|e
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley-------------------------------------------------|--------|-|-|-|-|-|--
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyPush flag | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Aggregate or queue un-pushed data |4.2.2.2 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Sender collapse successive PSH flags |4.2.2.2 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SEND call can specify PUSH |4.2.2.2 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 108]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If cannot: sender buffer indefinitely |4.2.2.2 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley If cannot: PSH last segment |4.2.2.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Notify receiving ALP of PSH |4.2.2.2 | | |x| | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send max size segment when possible |4.2.2.2 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyWindow | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Treat as unsigned number |4.2.2.3 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Handle as 32-bit number |4.2.2.3 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Shrink window from right |4.2.2.16| | | |x| |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Robust against shrinking window |4.2.2.16|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Receiver's window closed indefinitely |4.2.2.17| | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Sender probe zero window |4.2.2.17|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley First probe after RTO |4.2.2.17| |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Exponential backoff |4.2.2.17| |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Allow window stay zero indefinitely |4.2.2.17|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Sender timeout OK conn with zero wind |4.2.2.17| | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyUrgent Data | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Pointer points to last octet |4.2.2.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Arbitrary length urgent data sequence |4.2.2.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Inform ALP asynchronously of urgent data |4.2.2.4 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ALP can learn if/how much urgent data Q'd |4.2.2.4 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyTCP Options | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Receive TCP option in any segment |4.2.2.5 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Ignore unsupported options |4.2.2.5 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Cope with illegal option length |4.2.2.5 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Implement sending & receiving MSS option |4.2.2.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send MSS option unless 536 |4.2.2.6 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send MSS option always |4.2.2.6 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send-MSS default is 536 |4.2.2.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Calculate effective send seg size |4.2.2.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyTCP Checksums | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Sender compute checksum |4.2.2.7 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Receiver check checksum |4.2.2.7 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyUse clock-driven ISN selection |4.2.2.9 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyOpening Connections | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Support simultaneous open attempts |4.2.2.10|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SYN-RCVD remembers last state |4.2.2.11|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Passive Open call interfere with others |4.2.2.18| | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Function: simultan. LISTENs for same port |4.2.2.18|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Ask IP for src address for SYN if necc. |4.2.3.7 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Otherwise, use local addr of conn. |4.2.3.7 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley OPEN to broadcast/multicast IP Address |4.2.3.14| | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Silently discard seg to bcast/mcast addr |4.2.3.14|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 109]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyClosing Connections | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RST can contain data |4.2.2.12| |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Inform application of aborted conn |4.2.2.13|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Half-duplex close connections |4.2.2.13| | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send RST to indicate data lost |4.2.2.13| |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley In TIME-WAIT state for 2xMSL seconds |4.2.2.13|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Accept SYN from TIME-WAIT state |4.2.2.13| | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRetransmissions | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Jacobson Slow Start algorithm |4.2.2.15|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Jacobson Congestion-Avoidance algorithm |4.2.2.15|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Retransmit with same IP ident |4.2.2.15| | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Karn's algorithm |4.2.3.1 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Jacobson's RTO estimation alg. |4.2.3.1 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Exponential backoff |4.2.3.1 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SYN RTO calc same as data |4.2.3.1 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Recommended initial values and bounds |4.2.3.1 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyGenerating ACK's: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Queue out-of-order segments |4.2.2.20| |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Process all Q'd before send ACK |4.2.2.20|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Send ACK for out-of-order segment |4.2.2.21| | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Delayed ACK's |4.2.3.2 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Delay < 0.5 seconds |4.2.3.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Every 2nd full-sized segment ACK'd |4.2.3.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Receiver SWS-Avoidance Algorithm |4.2.3.3 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleySending data | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Configurable TTL |4.2.2.19|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Sender SWS-Avoidance Algorithm |4.2.3.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Nagle algorithm |4.2.3.4 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Application can disable Nagle algorithm |4.2.3.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyConnection Failures: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Negative advice to IP on R1 retxs |4.2.3.5 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Close connection on R2 retxs |4.2.3.5 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ALP can set R2 |4.2.3.5 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Inform ALP of R1<=retxs<R2 |4.2.3.5 | |x| | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Recommended values for R1, R2 |4.2.3.5 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Same mechanism for SYNs |4.2.3.5 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley R2 at least 3 minutes for SYN |4.2.3.5 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleySend Keep-alive Packets: |4.2.3.6 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Application can request |4.2.3.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Default is "off" |4.2.3.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Only send if idle for interval |4.2.3.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Interval configurable |4.2.3.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 110]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Default at least 2 hrs. |4.2.3.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley - Tolerant of lost ACK's |4.2.3.6 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyIP Options | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Ignore options TCP doesn't understand |4.2.3.8 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Time Stamp support |4.2.3.8 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Record Route support |4.2.3.8 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Source Route: | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ALP can specify |4.2.3.8 |x| | | | |1
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Overrides src rt in datagram |4.2.3.8 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Build return route from src rt |4.2.3.8 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Later src route overrides |4.2.3.8 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyReceiving ICMP Messages from IP |4.2.3.9 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Dest. Unreach (0,1,5) => inform ALP |4.2.3.9 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Dest. Unreach (0,1,5) => abort conn |4.2.3.9 | | | | |x|
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Dest. Unreach (2-4) => abort conn |4.2.3.9 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Source Quench => slow start |4.2.3.9 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Time Exceeded => tell ALP, don't abort |4.2.3.9 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Param Problem => tell ALP, don't abort |4.2.3.9 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyAddress Validation | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Reject OPEN call to invalid IP address |4.2.3.10|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Reject SYN from invalid IP address |4.2.3.10|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Silently discard SYN to bcast/mcast addr |4.2.3.10|x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyTCP/ALP Interface Services | | | | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Error Report mechanism |4.2.4.1 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ALP can disable Error Report Routine |4.2.4.1 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ALP can specify TOS for sending |4.2.4.2 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Passed unchanged to IP |4.2.4.2 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley ALP can change TOS during connection |4.2.4.2 | |x| | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Pass received TOS up to ALP |4.2.4.2 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley FLUSH call |4.2.4.3 | | |x| | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Optional local IP addr parm. in OPEN |4.2.4.4 |x| | | | |
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley-------------------------------------------------|--------|-|-|-|-|-|--
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley-------------------------------------------------|--------|-|-|-|-|-|--
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyFOOTNOTES:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley(1) "ALP" means Application-Layer program.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 111]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley5. REFERENCES
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyINTRODUCTORY REFERENCES
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[INTRO:1] "Requirements for Internet Hosts -- Application and Support,"
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley IETF Host Requirements Working Group, R. Braden, Ed., RFC-1123,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley October 1989.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[INTRO:2] "Requirements for Internet Gateways," R. Braden and J.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Postel, RFC-1009, June 1987.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[INTRO:3] "DDN Protocol Handbook," NIC-50004, NIC-50005, NIC-50006,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (three volumes), SRI International, December 1985.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[INTRO:4] "Official Internet Protocols," J. Reynolds and J. Postel,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RFC-1011, May 1987.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This document is republished periodically with new RFC numbers; the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley latest version must be used.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[INTRO:5] "Protocol Document Order Information," O. Jacobsen and J.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Postel, RFC-980, March 1986.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[INTRO:6] "Assigned Numbers," J. Reynolds and J. Postel, RFC-1010, May
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1987.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This document is republished periodically with new RFC numbers; the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley latest version must be used.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[INTRO:7] "Modularity and Efficiency in Protocol Implementations," D.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Clark, RFC-817, July 1982.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[INTRO:8] "The Structuring of Systems Using Upcalls," D. Clark, 10th ACM
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SOSP, Orcas Island, Washington, December 1985.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleySecondary References:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[INTRO:9] "A Protocol for Packet Network Intercommunication," V. Cerf
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley and R. Kahn, IEEE Transactions on Communication, May 1974.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[INTRO:10] "The ARPA Internet Protocol," J. Postel, C. Sunshine, and D.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Cohen, Computer Networks, Vol. 5, No. 4, July 1981.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[INTRO:11] "The DARPA Internet Protocol Suite," B. Leiner, J. Postel,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley R. Cole and D. Mills, Proceedings INFOCOM 85, IEEE, Washington DC,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 112]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley March 1985. Also in: IEEE Communications Magazine, March 1985.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Also available as ISI-RS-85-153.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[INTRO:12] "Final Text of DIS8473, Protocol for Providing the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Connectionless Mode Network Service," ANSI, published as RFC-994,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley March 1986.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[INTRO:13] "End System to Intermediate System Routing Exchange
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Protocol," ANSI X3S3.3, published as RFC-995, April 1986.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyLINK LAYER REFERENCES
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[LINK:1] "Trailer Encapsulations," S. Leffler and M. Karels, RFC-893,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley April 1984.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[LINK:2] "An Ethernet Address Resolution Protocol," D. Plummer, RFC-826,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley November 1982.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[LINK:3] "A Standard for the Transmission of IP Datagrams over Ethernet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Networks," C. Hornig, RFC-894, April 1984.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[LINK:4] "A Standard for the Transmission of IP Datagrams over IEEE 802
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley "Networks," J. Postel and J. Reynolds, RFC-1042, February 1988.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This RFC contains a great deal of information of importance to
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet implementers planning to use IEEE 802 networks.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyIP LAYER REFERENCES
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:1] "Internet Protocol (IP)," J. Postel, RFC-791, September 1981.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:2] "Internet Control Message Protocol (ICMP)," J. Postel, RFC-792,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley September 1981.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:3] "Internet Standard Subnetting Procedure," J. Mogul and J. Postel,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RFC-950, August 1985.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:4] "Host Extensions for IP Multicasting," S. Deering, RFC-1112,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley August 1989.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:5] "Military Standard Internet Protocol," MIL-STD-1777, Department
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley of Defense, August 1983.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This specification, as amended by RFC-963, is intended to describe
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 113]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the Internet Protocol but has some serious omissions (e.g., the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley mandatory subnet extension [IP:3] and the optional multicasting
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley extension [IP:4]). It is also out of date. If there is a
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley conflict, RFC-791, RFC-792, and RFC-950 must be taken as
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley authoritative, while the present document is authoritative over
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley all.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:6] "Some Problems with the Specification of the Military Standard
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet Protocol," D. Sidhu, RFC-963, November 1985.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:7] "The TCP Maximum Segment Size and Related Topics," J. Postel,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RFC-879, November 1983.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Discusses and clarifies the relationship between the TCP Maximum
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Segment Size option and the IP datagram size.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:8] "Internet Protocol Security Options," B. Schofield, RFC-1108,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley October 1989.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:9] "Fragmentation Considered Harmful," C. Kent and J. Mogul, ACM
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SIGCOMM-87, August 1987. Published as ACM Comp Comm Review, Vol.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 17, no. 5.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This useful paper discusses the problems created by Internet
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley fragmentation and presents alternative solutions.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:10] "IP Datagram Reassembly Algorithms," D. Clark, RFC-815, July
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1982.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This and the following paper should be read by every implementor.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:11] "Fault Isolation and Recovery," D. Clark, RFC-816, July 1982.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleySECONDARY IP REFERENCES:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:12] "Broadcasting Internet Datagrams in the Presence of Subnets," J.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Mogul, RFC-922, October 1984.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:13] "Name, Addresses, Ports, and Routes," D. Clark, RFC-814, July
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1982.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[IP:14] "Something a Host Could Do with Source Quench: The Source Quench
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Introduced Delay (SQUID)," W. Prue and J. Postel, RFC-1016, July
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1987.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This RFC first described directed broadcast addresses. However,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the bulk of the RFC is concerned with gateways, not hosts.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 114]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyUDP REFERENCES:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[UDP:1] "User Datagram Protocol," J. Postel, RFC-768, August 1980.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyTCP REFERENCES:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[TCP:1] "Transmission Control Protocol," J. Postel, RFC-793, September
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 1981.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[TCP:2] "Transmission Control Protocol," MIL-STD-1778, US Department of
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Defense, August 1984.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley This specification as amended by RFC-964 is intended to describe
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the same protocol as RFC-793 [TCP:1]. If there is a conflict,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RFC-793 takes precedence, and the present document is authoritative
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley over both.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[TCP:3] "Some Problems with the Specification of the Military Standard
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Transmission Control Protocol," D. Sidhu and T. Blumer, RFC-964,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley November 1985.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[TCP:4] "The TCP Maximum Segment Size and Related Topics," J. Postel,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RFC-879, November 1983.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[TCP:5] "Window and Acknowledgment Strategy in TCP," D. Clark, RFC-813,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley July 1982.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[TCP:6] "Round Trip Time Estimation," P. Karn & C. Partridge, ACM
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley SIGCOMM-87, August 1987.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[TCP:7] "Congestion Avoidance and Control," V. Jacobson, ACM SIGCOMM-88,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley August 1988.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleySECONDARY TCP REFERENCES:
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[TCP:8] "Modularity and Efficiency in Protocol Implementation," D.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Clark, RFC-817, July 1982.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 115]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyRFC1122 TRANSPORT LAYER -- TCP October 1989
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[TCP:9] "Congestion Control in IP/TCP," J. Nagle, RFC-896, January 1984.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[TCP:10] "Computing the Internet Checksum," R. Braden, D. Borman, and C.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Partridge, RFC-1071, September 1988.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley[TCP:11] "TCP Extensions for Long-Delay Paths," V. Jacobson & R. Braden,
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley RFC-1072, October 1988.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleySecurity Considerations
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley There are many security issues in the communication layers of host
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley software, but a full discussion is beyond the scope of this RFC.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley The Internet architecture generally provides little protection
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley against spoofing of IP source addresses, so any security mechanism
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley that is based upon verifying the IP source address of a datagram
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley should be treated with suspicion. However, in restricted
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley environments some source-address checking may be possible. For
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley example, there might be a secure LAN whose gateway to the rest of the
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Internet discarded any incoming datagram with a source address that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley spoofed the LAN address. In this case, a host on the LAN could use
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley the source address to test for local vs. remote source. This problem
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley is complicated by source routing, and some have suggested that
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley source-routed datagram forwarding by hosts (see Section 3.3.5) should
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley be outlawed for security reasons.
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Security-related issues are mentioned in sections concerning the IP
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Security option (Section 3.2.1.8), the ICMP Parameter Problem message
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley (Section 3.2.2.5), IP options in UDP datagrams (Section 4.1.3.2), and
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley reserved TCP ports (Section 4.2.2.1).
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyAuthor's Address
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Robert Braden
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley USC/Information Sciences Institute
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley 4676 Admiralty Way
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Marina del Rey, CA 90292-6695
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley Phone: (213) 822 1511
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley EMail: Braden@ISI.EDU
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley
c7ddab7655021d96211a26f99d9f694396c53284Bob HalleyInternet Engineering Task Force [Page 116]
c7ddab7655021d96211a26f99d9f694396c53284Bob Halley