GENWiki

Premier IT Outsourcing and Support Services within the UK

User Tools

Site Tools


rfc:ien:ien97

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]
/data/webs/external/dokuwiki/data/pages/rfc/ien/ien97.txt · Last modified: 2001/06/25 18:51 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki