IEN: 97
FLEXIBLE DATAGRAM PROTOCOL
Version 1
April 1979
prepared for
Defense Communication Agency
WWMCCS ADP Directorate
Command and Control Technical Center
11440 Isaac Newton Square
Reston, Va. 22090
by
MITRE Corporation
1820 Dolley Madision Blvd.
McLean Va. 22102
April 1979 Flexible Datagram Protocol
TABLE OF CONTENTS
Page
PREFACE . . . . . . . . . . . . . . . . . . . . . . . ii
INTRODUCTION . . . . . . . . . . . . . . . . . . . . 1
Motivation . . . . . . . . . . . . . . . . . . . 1
Scope . . . . . . . . . . . . . . . . . . . . . . 1
Interfaces . . . . . . . . . . . . . . . . . . . 2
OVERVIEW . . . . . . . . . . . . . . . . . . . . . . 2
Framework . . . . . . . . . . . . . . . . . . . 2
Protocol Mechanisms . . . . . . . . . . . . . . . 2
Network Addressing . . . . . . . . . . . . . 2
Host Addressing . . . . . . . . . . . . . . . 2
Reliability . . . . . . . . . . . . . . . . . 3
Flow Control . . . . . . . . . . . . . . . . 3
Fragmentation . . . . . . . . . . . . . . . . 3
Higher Protocol Layer . . . . . . . . . . . . 3
Type of Service . . . . . . . . . . . . . . . 3
Options . . . . . . . . . . . . . . . . . . . 4
SPECIFICATION . . . . . . . . . . . . . . . . . . . 5
Header Format . . . . . . . . . . . . . . . . . . 5
ATTRIBUTES . . . . . . . . . . . . . . . . . . . . . . 7
Network Addressing . . . . . . . . . . . . . . . . 7
Host Addressing . . . . . . . . . . . . . . . . . 8
Reliability . . . . . . . . . . . . . . . . . . . 9
Flow Control . . . . . . . . . . . . . . . . . . . 10
Fragmentation . . . . . . . . . . . . . . . . . . 11
Higher Protocol Layer . . . . . . . . . . . . . . 12
Type of Service . . . . . . . . . . . . . . . . . 13
Options . . . . . . . . . . . . . . . . . . . . . 14
ADDRESSING OPERATION . . . . . . . . . . . . . . . . 17
FLOW CONTROL OPERATION . . . . . . . . . . . . . . . . 18
FRAGMENTATION OPERATION . . . . . . . . . . . . . . . 20
REFERENCES . . . . . . . . . . . . . . . . . . . . . . 21
[Page i]
Flexible Datagram Protocol April 1979
Preface
This is not a formal protocol specification. As such there are
descriptions that are weak and open to interpretation. This is a
working document describing the kinds of functions that we feel
will be needed in a cable-bus transport level protocol. As our
implementation progresses, certain functions may be done away
with completely or may be subsumed into other higher level proto-
cols. If the implementation is successful, and if there is suf-
ficient interest, a less ambiguous version will follow.
A description of the project which will use this protocol
is contained in [1]. Reference 1 is recommended as a closely
coupled companion to this IEN.
The protocol was constructed by taking pieces from other
definitions. The Internet Datagram Protocol [2] and the
Transmission Control Protocol [3] were used as models both in
terms of mechanisms and document format. Many thanks to the ori-
ginators of those documents.
Steve Holmgren
[Page ii]
April 1979 Flexible Datagram Protocol
Introduction
The Flexible Datagram Protocol (FDP) defines a set of
rules to govern the transport of blocks of data, called da-
tagrams, over interconnected cable-bus networks with binary de-
grees of reliability, flow control, addressing, and other common
transport level protocol mechanisms. FDP uses variable length
datagram headers. Each header contains a bit-map specifying the
"shape" or attributes of the remaining portion of the header.
These attributes are groups of data fields which, if specified,
cause the protocol mechanisms referred to above to be invoked.
If an attribute is not specified, default processing mechanisms
will be invoked and attribute data fields are not placed in the
header.
Motivation
A protocol may be viewed as a collection of mechanisms to
support a specific service. Traditional mechanisms include: flow
control, addressing, and reliability (e.g. checksums, parity
etc.). Newer mechanisms include datagram fragmentation and
reassembly to enable their passage through "smaller-sized" net-
works, and handling of a datagram security level.
The Flexible Datagram Protocol is motivated by a need to
support a cable bus user community with widely varying transport
protocol requirements. The user community ranges from cable-
based telephone users who need audio, and soon video, capabili-
ties, to the somewhat classic terminal-to-computer and computer-
to-computer users.
The FDP meets these needs by allowing a user to dynami-
cally specify the mechanisms to be applied to a datagram. If a
user requires a mechanism to support a particular type of data
transfer, the price is paid in terms of header overhead and pro-
cessing cycles. No penality is paid if a user has no need for a
particular mechanism.
Scope
The Flexible Datagram Protocol is intended to provide a
full range of mechanisms to support the communication of packets
of data, called datagrams, between low-level nodes of intercon-
nected cable-busses. This version defines the selection of the
following protocol mechanisms:
1. network addressing,
2. host addressing,
3. data reliability,
4. flow control,
5. datagram fragmentation,
6. higher protocol layer,
7. type of service, and
8. options.
[Page 1]
Flexible Datagram Protocol April 1979
Each of the mechanisms is described below.
Interfaces
On one side, FDP interfaces to a higher level protocol;
possibly a virtual circuit protocol such as Transmission Control
Protocol. On the other side it interfaces directly with the
lowest level software to transfer a datagram between itself and a
cable-bus.
OVERVIEW
This section gives an overview of the framework used to
select the mechanisms to be applied to a datagram and then an
overview of the operation of the mechanisms.
Framework
The framework consists of a bit map, called an Attribute
Specification, and a pre-defined sequence in which a fixed-format
group of data fields, called attributes, are processed. The
Attribute Specification defines whether an attribute has been
placed in the header. If the specification indicates that an
attribute is in the header, the appropriate number of bytes are
handed to the cooresponding protocol mechanism for processing.
If an attribute is not in the header, default processing takes
place. The next attribute in the pre-defined sequence is then
checked. This cycle continues until the Attribute Specification
is exhausted.
Protocol Mechanisms
Attributes are processed in the same sequence in which
they are described in this section.
Network Addressing. The Network Address Attribute is
provided to allow users to address sites on a remote network via
a gateway or series of gateways which interconnect two or more
networks.
The Network Addressing Attribute fields specify the
source and destination networks for the datagram. Since the
cable-bus is broadcast in nature, all gateways to other networks
will "see" any request for transmission to a remote network. The
gateway(s) to the specified network is (are) responsible for
accepting the datagram, processing the Attribute specification
and performing the appropriate routing of the remaining portion
of the datagram to the remote network.
Host Addressing. The Host Addressing Attribute is neces-
sarily provided to allow users to address datagrams to specific
destinations.
The Host Addressing Attribute fields specify the source
[Page 2]
April 1979 Flexible Datagram Protocol
and destination host numbers for the datagram.
Reliability. The Reliability Attribute is provided to
insure that datagrams are delivered without enroute damage.
The Reliability Attribute has a checksum field and a
length field. The checksum is the complement of the sum of the
datagram octets. The length field specifies the number of all
octets in the datagram.
Flow Control. The Flow Control Attribute allows a re-
ceiver to control the speed at which a transmitter may send da-
tagrams. It uses a sliding window acknowledgement strategy to
acknowledge previously received datagrams and to detect duplicate
and out-of-sequence datagrams.
Each flow controlled datagram contains a sequence number
ordering the datagram in relation to previous and future da-
tagrams, an acknowledgement field acknowledging datagrams previ-
ously received by the transmitter, and a window field specifying
a range of acceptable per datagram sequence numbers.
Fragmentation. The Fragmentation Attribute is included
to allow the transmission of large (greater than 256 octets) mes-
sages as a series of datagrams which are reassembled at the des-
tination before delivery to a user. Further, it enables a more
direct interconnection of cable bus systems with "small-sized"
networks.
The Fragmentation Attribute contains a sequence number
defining the relationship between previous and future fragments
of a larger message, a message id relating fragments of a mes-
sage, a flags field controlling further fragmentation and last
fragment indications, and a life time specification which is
decremented as the datagram passes through different internetwork
gateways. If the life time field reaches zero, the datagram is
assumed to be looping through a sequence of gateways and is dis-
carded.
Higher Protocol Layer. The Higher Protocol Layer Attri-
bute specifies the next layer of protocol which is to receive the
datagram. It is included to allow the use of FDP by several
higher level protocol implementations within the same host. By
specifying the next protocol layer within a lower layer, the for-
mat of the headers of the higher level protocols are not res-
tricted to a common preamble which would be required to demulti-
plex messages.
Type of Service. The Type of Service Attribute is in-
cluded to allow the user to give some indication of the priority
which is to be applied to a datagram. Initially, the priority
may be restricted to linkage of datagrams to the front of inter-
nal queues so that immediate attention is given to their process-
ing. Later, this may be expanded to the notion of preemptive
[Page 3]
Flexible Datagram Protocol April 1979
allocation of resources, and selection of higher speed, less
congested transmission channels.
The Type of Service Attribute contains a field to specify
the priority of the message (lowest to highest), and a field to
specify the requested speed of the message (again highest to
lowest) within the priority level.
Options. The Options Attribute provides control func-
tions needed or useful in some situations but unnecessary for
routine communications. It is also provided to support experi-
mental mechanisms that at some point may be elevated to Attribute
status.
The Options Attribute includes provisions for special
routing, error messages, protocol version specification, datagram
security level, and special low-level signals such as reset.
[Page 4]
April 1979 Flexible Datagram Protocol
SPECIFICATION
Header Format
The header contains an Attribute Specification followed
by a variable number of attributes. Each attribute is a group of
data fields. This is the format of a header specifying all at-
tributes. The brackets attempt to delineate attribute boun-
daries.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! Att. Spec. ! Att. Spec. ! [ Dest. Net. ! Src. Net ] !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! [ Dest. Host ! Src. Host ] !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! [ Chksum ! Len ] ! [ Ack ! Window !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! Seq. Num. ] ! [ Flags ! Life Time !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! Frag. Offset ! Msg. Id ] !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
![ Nxt. Proto. ]![Type of Serv.]! [ Options ] !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! Data !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Note that each tick mark corresponds to a bit position.
Attribute Specification: 8 bits (replicated)
Each bit in the Attribute Specification determines wheth-
er an attribute is present in the header. The order in which the
attributes are processed corresponds to the bit positions in the
Attribute Specification. The order in which the attribute fields
are stored in the header is shown in the figure above. Note that
the Attribute Specification is repeated in the header so that
damage to it may be detected. If a damaged Attribute Specifica-
tion is detected, the datagram is discarded.
The figure below shows the correspondence between Attri-
bute Specification bits and attributes.
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
!N H R F F P T O!
!A A E L R R O P!
!D D L O G O S T!
+-+-+-+-+-+-+-+-+
NAD: Network Addressing FRG: Fragmentation
HAD: Host Addressing PRO: Next Level Protocol
[Page 5]
Flexible Datagram Protocol April 1979
REL: Reliability TOS: Type of Service
FLO: Flow Control OPT: Options
If a bit is on in the Attribute Specification, the attribute
fields will be found in the header. If a bit is off, the attri-
bute fields are not present in the header. The following example
shows a header with Host Address and Reliability Attributes. The
brackets deliniate attribute boundaries.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!0 1 1 0 0 0 0 0!0 1 1 0 0 0 0 0! [ Dest Host !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! Src. Host ] ! [ Chksum ! Len ] !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! Data !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
[Page 6]
April 1979 Flexible Datagram Protocol
ATTRIBUTES
Network Addressing: (Bit 0)
The Network Addressing Attribute has a Destination and a
Source Network field.
If not specified the datagram is not routed outside the
local network. See Addressing Operation below.
Dest. Net. (Destination Network): 8 bits
Contains the number of the network to
which the datagram is to be routed.
Src. Net. (Source Network): 8 bits
Contains the number of the network from
which the datagram originated.
[Page 7]
Flexible Datagram Protocol April 1979
Host Addressing: (Bit 1)
The Host Addressing Attribute has a Destination and
Source Host field.
If not specified, the datagram is a broadcast message to
all hosts. See Addressing Operation below.
Dest. Host. (Destination Host): 16 bits
Contains the number of the host to which
the datagram is to be routed.
Src. Host (Source Host): 16 bits
Contains the number of the host which
originated the datagram.
[Page 8]
April 1979 Flexible Datagram Protocol
Reliability: (Bit 2)
The Reliability Attribute contains a checksum and a
length field.
If not specified, the datagram is assumed to be undamaged
and its length is obtained from the hardware interface.
Chksum (Checksum): 8 bits
The Checksum field contains the one's
complement of the one's complement byte
sum of the datagram. The Checksum field
is set to zero while the checksum is
being computed.
Len. (Length): 8 bits
The Length field specifies the number of
octets in the datagram. This field
counts all header and data octets.
[Page 9]
Flexible Datagram Protocol April 1979
Flow Control: (Bit 3)
The Flow Control Attribute contains an Acknowledgement
field, a Window field, and a Sequence Number field.
If not specified, the datagram is not subject to flow
control considerations. See Flow Control Operation below.
Ack. (Acknowledgement): 8 bits
The Acknowledgement field contains a
sequence number greater than or equal
(cyclically) to the sequence numbers of
all successfully received datagrams.
Window: 8 bits
The Window field contains the number of
datagrams beyond the sequence number in
the Acknowledgement field which the
sender of the datagram is willing to
accept.
Seq. Num. (Sequence Number): 16 bits
The Sequence Number field contains the
sequence number of the datagram.
[Page 10]
April 1979 Flexible Datagram Protocol
Fragmentation: (bit 4)
The Fragmentation Attribute contains a Flags field, a
Life Time field, a Fragment Offset field, and a Message iden-
tifer.
If the Fragmentation Attribute is not specified, gateways
are free to fragment the datagram into smaller messages if re-
quired by the destination network. See Fragmentation Operation
below.
Flags: 8 bits
Various Control Flags.
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
!0 D M 0 0 0 0 0!
!0 F F 0 0 0 0 0!
+-+-+-+-+-+-+-+-+
Bit 0: reserved, must be zero.
Bit 1: Don't Fragment This Datagram (DF).
Bit 2: More Fragments Field (MF).
Bit 3: Unused, must be zero.
Bit 4: Unused, must be zero.
Bit 5: Unused, must be zero.
Bit 6: Unused, must be zero.
Bit 7: Unused, must be zero.
Life Time: 8 bits
This field is decremented for each hop
taken through the internetwork system.
If it decrements to zero, the datagram is
presumed to be in an internetwork loop
and should be discarded.
Frag. Offset (Fragmentation Offset): 16 bits
This field relates the datagram to previ-
ous and future fragments. Each fragment
datagram is given a sequence number.
This field orders the fragment in rela-
tion to other fragments.
Msg. Id. (Message Identifer): 16 bits
This field is an arbitrary identifer for
the message that was fragmented. Each
message fragment contains the identifer
to be used as an aid in reassembling the
fragments of the message.
[Page 11]
Flexible Datagram Protocol April 1979
Next Higher Level Protocol: (bit 5)
This attribute contains the Next Protocol field.
If this attribute is not specified, a default higher lev-
el protocol receives the datagram.
Nxt. Proto. (Next Protocol): 8 bits
This field contains an identifier of the
next higher level protocol which is to
receive that contents of the data portion
of the datagram.
[Page 12]
April 1979 Flexible Datagram Protocol
Type of Service: (bit 6)
This attribute contains the Type of Service field. This
field, if present, defines the priority and relative speed re-
quirements within the priority which the sender wishes to attach
to the datagram.
If not specified, no special handling is given to the
datagram.
Type of Serv. (Type of Service): 8 bits
The Type of Service field contains two
sub-fields with define the priority of
the datagram and the speed which is to be
applied to the datagram.
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
! Pri ! Spd !
+-+-+-+-+-+-+-+-+
Priority Speed
0 - Lowest 0 - Slowest
31 - Highest 7 - Fastest
[Page 13]
Flexible Datagram Protocol April 1979
Options: (bit 7)
This attribute contains a variable number of fields. The
format is an option-type octet, an option-length octet, and the
actual option-data octets. There are two special case options
which have only the option-type octet (End of Options List and
Nop).
The option-length octet includes the option-type octet
and the option-length octet in the octet count of the option
length.
The option-type octet can be viewed as having three
fields:
1 bit reserved, must be zero
2 bits option class
5 bits option number
The option classes are:
0 = control
1 = internet error
2 = experimental debugging and measurement
3 = reserved for future use
If not specified, no special option processing is re-
quested.
The following options are defined:
Class Number Length Description
0 0 - End of Option List.
0 1 - No Operation
0 2 4 S/P/T. Security, Precidence, TCC
0 3 var. Source Routine.
0 31 4 Reset
0 30 var. Status
1 1 var. General Error Report.
2 4 var. Internet Timestamp
2 5 var. Satellite Timestamp
Specific Option Definitions
End of Option List. This option indicates the end of
option list. It is always used to terminate the list of all
options.
+--------+
!00000000!
+--------+
No Operation. This option may be used between options to
[Page 14]
April 1979 Flexible Datagram Protocol
align the beginning of a subsequent option on a 32 bit boundary.
+--------+
!00000001!
+--------+
S/P/T. This option provides a way for AUTODIN II hosts
to send security, precedence, and TCC (closed user groups) param-
eters through networks whose transport leader does not contain
fields for this information.
+--------+--------+--------+--------+
!00000010!00000100!Prec!Sec! TCC !
+--------+--------+--------+--------+
Precedence: 4 bits
Specifies one of 16 levels of precedence.
Security: 4 bits
Specifies one of 16 levels of security.
Transmission Control Code (TCC): 8 bits
Provides a means to compartmentalize traffic
and define controlled communities of interest
among subscribers.
Source Routing. The source routing option provides a
means for the source of a datagram to supply routing information
to be used by gateways in forwarding the datagram to the destina-
tion.
A source route is composed of a series of internet ad-
dresses. The pointer is initially zero, which indicates the
first octet of the source route. The segment is routed to the
address in the source route indicated by the pointer. At the
internet module the pointer is advanced to the next address in
the source route. This routing and pointer advancement is re-
peated until the source address is exhausted. At that point, the
destination may have been reached, if not, the protocol module
must attempt to route the packet to the destination in the desti-
nation address field by the ordinary routing procedure.
+--------+---------+--------+--------+-----/ /-----+
!00000011! length ! pointer! source route !
+--------+---------+--------+-------------/ /------+
Reset. The reset option allows a host on a network to
signal other hosts that its network operations have been restart-
ed. The data field contains the address of the restarted host.
+--------+--------+--------+--------+
!00011111!00000100! Host Address !
+--------+--------+--------+--------+
[Page 15]
Flexible Datagram Protocol April 1979
Status. The status option allows a host to transmit
status information to a remote host. The conditions for elicit-
ing the information and the content of the data fields are net-
work dependent.
+--------+--------+---------+--------/ /------+
!00011110! length ! Status Info !
+--------+--------+---------+-------/ /-------+
General Error Report. The general error report is used
to report an error detected in the processing of a datagram to
the originator of the datagram. The "err code" indicates the
type of error detected and the "id" is copied from the message id
field of the datagram, if it exists. Additional octets of error
information may be present depending on the error code.
Err Code:
0 - Undetermined Error Used when no in-
formation is available about the type of
error or the error does not fit in any
defined class.
No error codes for specific classes have
been defined.
+--------+--------+--------+--------+----/ /------+
!00100001! length !err code! id ! !
+--------+--------+--------+--------+-----/ /-----+
Internet Timestamp. No information is available on the
specific format of Timestamps.
+--------+--------+--------+--------+-----/ /-----+
!01000100! length ! !
+--------+--------+--------+--------+----/ /------+
Satellite Timestamp. No information is available on the
specific format of Timestamps.
+--------+--------+---------+--------+---/ /-----+
!01000101! length ! !
+--------+--------+---------+--------+---/ /-----+
[Page 16]
April 1979 Flexible Datagram Protocol
Addressing Operation
A distinction is made between names, addresses, and
routes [4]. A name indicates what we seek. An address indicates
where it is. A route indicates how to get there. The Flexible
Datagram Protocol deals only with addresses. It is the task of
higher level protocols to make the mapping from names to ad-
dresses. It is the task of lower level procedures (i.e. internet
gateways) to make the mapping from addresses to routes.
When the Network Address Attribute is specified, the net-
work fields have values obtained from reference [5]. When a mes-
sage is transmitted to the cable-bus, all internet gateways watch
for messages with destination networks to which they have access.
If a match is found, the remaining attributes of the header are
processed according to specified convention. The datagram is
then passed along the route to the remote network after possible
fragmentation.
When the Host Address Attribute is specified, hosts com-
pare the destination host field with their address. If a match
is found, and the destination network number (if specified)
matches the local network number, the host processes the remain-
ing Attributes in the header of the datagram and passes the data
portion of the datagram to the next higher level protocol.
[Page 17]
Flexible Datagram Protocol April 1979
Flow Control Operation
Flow control regulates the transfer of data. Each re-
ceiver controls the amount of data a transmitter may send. Each
receiver can dynamically update this control without loss or
duplication of data.
Each datagram containing the Flow Control Attribute is
assigned a sequence number. The sequence numbers range from 0 to
65535 and are used cyclically; i.e. 0 follows 65535. The se-
quence number for each datagram is placed in the header of each
outgoing datagram containing the Flow Control Attribute. The
first sequence number used is zero.
The Ack field contains the sequence number of the last
datagram accepted by the transmitter. The receiver can consider
all sequence numbers (cyclically) less than or equal to the
number in the Ack field to have been received by the other end
and can free buffers accordingly.
The Window field contains the number of datagrams, beyond
that denoted by the Ack field, the transmitter is currently
prepared to accept. The datagrams will have sequence numbers
(Ack + 1) through (Ack + Window) cyclically calculated. A window
value of zero indicates that the transmitter is not prepared to
accept any datagrams until further notice. This does not mean
that a transmitter may not send a datagram. It means that re-
transmission intervals should be increased significantly.
The sending of a datagram with a non-zero window does not
irrevocably commit a transmitter to accept that number of da-
tagrams. Changing conditions may cause an untimely reduction in
the window size. These conditions may prevail at the same time
other transmitters are sending datagrams (for which they were
given a non-zero window) to the afflicted host. Sequences of
this kind can generate duplicate and discarded datagrams.
A receiver must be able to detect and discard duplicate
datagrams. In order for duplicate detection to be possible, the
Window field must not contain a value greater than half the se-
quence number space (i.e. 32768) and no more than 32768 datagrams
may be unacknowledged at any time. A receiver may identify du-
plicate datagrams as those with sequence numbers in the range
((last acknowledged) - 32767) through (last acknowledged)
A receiver should discard any datagrams with sequence numbers in
this range.
Sending a window size greater than 32768 is prohibited.
Receiving a window size greater than 32768 should be adjusted to
32768.
Certain combinations of events can generate the receipt
[Page 18]
April 1979 Flexible Datagram Protocol
of datagrams out of sequence. A receiver may discard out-of-
sequence datagrams or it may save them for later insertion into
the proper sequence.
It is possible for datagrams to arrive for which a window
does not currently exist. A receiver may discard these da-
tagrams.
A transmitter should be aware of these situations and
have sufficient mechanisms to retransmit a datagram after a rea-
sonable time has elapsed. Various strategies for defining "rea-
sonable" are under study.
The simplest strategy a receiver can employ is to accept
only the next datagram in sequence and discard all others. This
works if the receiver employs a somewhat linear window policy.
Acknowledgements should be sent as soon as possible.
They may be carried by datagrams flowing the other way. If no
datagram is available for carrying the response after a "reason-
able" time a datagram containing appropriate Address Attributes
and the Flow Control Attribute should be artifically constructed
and transmitted. It may be reasonable to employ a time-out
mechanism controlling generation of "acknowledgement only" da-
tagrams.
[Page 19]
Flexible Datagram Protocol April 1979
Fragmentation Operation
Fragmentation of a datagram may be necessary when it ori-
ginates in a remote network that allows a large datagram size and
must traverse the local network which limits datagrams to a
smaller size.
The Message Identification field is used together with
the source and destination address (if present), and the Next
Protocol field (if present) to identify fragments for reassembly.
The More Fragments flag bit (MF) is set if the datagram
is not the last fragment. The Fragment Offset field identifies
the fragment number relative to the beginning of the original
unfragmented datagram; zero is the first fragment, one the second
and so on.
When fragmentation occurs, options are generally not
copied, but remain with the first fragment. Some options, such
as source routing, must be copied.
The fields which may be affected by fragmentation in-
clude:
(1) options field
(2) more fragments flag
(3) fragment offset
(4) checksum (if present)
If the Don't Fragment flag (DF) bit is set then fragmen-
tation of the datagram is not permitted, although it may be dis-
carded. This is used where the receiving host does not have
resources to reassemble fragments.
The choice of Message Identifier for a datagram is based
on the need to provide a way to uniquely identify the fragments
of a particular datagram. The protocol module assembling frag-
ments judges fragments to belong ot the same datagram if they
have the same source, destination, Next Higher Level Protocol (if
present), and Message Identifier. Thus, the sender must choose
the Identifier to be unique for this source and destination pair
and protocol over the time the datagram (or any fragment of it)
could be alive in the internetwork.
It is appropriate for some higher level protocols to
choose the identifier. For example, TCP modules may retransmit
an identical TCP segment, and the probability for correct recep-
tion would be enhanced if the retransmission carried the same
identifier as the original transmission since fragments of either
datagram could be used to reconstruct a correct TCP segment.
[Page 20]
April 1979 Flexible Datagram Protocol
REFERENCES
[1] Skelton, A.P., Holmgren, S.F., "The MITRE
Cablenet Project", IEN 96, April 1979
[2] Information Sciences Institute, "Internet Datagram Protocol",
Version 4, IEN 80, February 1979
[3] Information Sciences Institute, "Transmission Control Protocol",
Version 4, IEN 81, February 1979
[4] Shoch, J., "A Note On Inter-Network Naming, Addressing, and
Routing," Xerox Palo Alto Research Center, IEN 19, January 1978.
[5] Postel, J., "Assigned Numbers," RFC 750, NIC 45500,
26 September 1978.
[Page 21]