Re: An alternative to TCP (part 2)

2001-02-07 Thread Jun'an Gao

ATP Header Format

The IPv6 packet whose payload contains an ATP packet must conform to latest IPv6 
specification, currently RFC 2460. ATP suggest that the traffic class field should 
renamed to 'flags'. The leftmost bit could be RTP(real time payload), the rightmost be 
ECN(Explicit Congestion notification), the others are reserved. When RTP = 0, the 
packet falls in best-effort class of service. When RTP = 1, the packet should be 
transmitted with as minimum delay as possible.

Here is the pseudo-C data structure of an ATP header:
struct ATP-Packet
{
  struct IPv6-Fixed-Header /* IPv6 fixed header */
  {
  version: 4;
  flag-RTP: 1;
  flags-reserved: 6;
  flag-ECN: 1;
  flow-label: 24
  payload-length: 16;
  next-header: 8;
  hop-limit: 8;
  source-addr: 128;
  destination-addr: 128;
  };
  OPTIONAL IP-EXTENSION-HEADERS1;  /* chain of the IPv6 extension headers that must 
appear before the authentication header. */
  OPTIONAL struct AuthenticationHeader /* IPSec AH */
  {
AHnextHeader: 8;
AHpayloadLength: 8;
reserved: 16;
SPI: 32;
AHsequenceNumber: 32;
AuthData: VARIABLE (4..1020 bytes) /* must be 32-bit aligned.*/
Padding: VARIABLE(0..4 bytes) /* make the header to 64-bit aligned */
  };
  OPTIONAL IP-EXTENSION-HEADERS2;  /* chain of the IPv6 extension headers that may 
appear after the authentication header. */
  ATP-flags-reserved: 5;
  flag-RST: 1;
  flag-SYN: 1; /* maybe it should be in the IPv6 fixed header? */
  flag-FIN: 1;
  Reserved: 4;
  WindowSize: 20;
  union {
Checksum: 32;
AckBitmap: 32;
  };
  SequenceNumber: 32;
  HeaderStackPointer: 8;
  DataSegmentLength: 24;
  OPTIONAL ATP-extension-headers;
  Payload: VARIABLE(0..224-1 bytes);
  Padding: VARIABLE(0..7 bytes);
  OPTIONAL UrgentData;
};

ATP-flags-reserved: reserved flags.
flagRST: a control flag meaning ¡®reset¡¯.
flagSYN: a control flag meaning ¡®synchronize¡¯
flagFIN: a control flag meaning ¡®finish¡¯.
The meanings of the three flags are borrowed from TCP.

Reserved: 4 bits. They may be used to extent window size in the future.
Window-size: Size of the sending window. The size refers to packet instead of byte.

Checksum: When ATP operates in non-security-extent mode the field is valid. Method to 
compute the checksum of an ATP packet is the same as TCP, only that the word length is 
now 32 bits. The fields which affect the checksum include the source and destination 
address in the IP fixed header, the whole ATP fixed header, all of the ATP optional 
headers, and the ATP payload. The checksum field in the ATP header is cleared to zero 
before checksum is computed. The payload is padding with zero to 64-bit alignment.

AckBitmap: When ATP operates in security-extent mode the field is valid. It is a 
32-bit map of selective acknowledgement. See 'Selective Acknowledgement Header¡¯below.

SequenceNumber: When ATP operates in non-security-extent mode it means the sequence 
number of current packet. When ATP operates in security-extent mode, it means the 
sequence number of an accumulatively acknowledged accepted packet.

HeaderStackPointer: indicates the offset of the 64-bit word following the last ATP 
extension header. The offset is relative to the start position of the ATP fixed 
header. The unit of the pointer is 64-bit word. It is abnormal if the value of the 
field is 0 or 1. No extension header exists if the value is 2. Format of the ATP 
extension headers are described in following paragraphs.

DataSegmentLength: the length in bytes of the ATP payload. Unlike the IPv6 payload 
length which counts IPv6 extension headers, data segment length of an ATP packet does 
not count the fixed header or extension headers. 

Payload is of variable length, from 0 to 2**24-1 bytes.

Padding makes the payload 64-bit aligned.

UrgentData is a special ATP extension header. See following paragraphs.



ATP Extension Headers

General Format:
struct general_ATP_extension_header
{
  Bit-Field2: VARIABLE(0..512 bytes);
  HeaderPointer: 8;
  OptionCode: 8;
  Bit-Field1: 16;
};

HeaderPointer has similar meaning as HeaderStackerPointer. It point to the first 
64-bit word of the current extension header. The pointer refers to 64-bit word. It is 
the offset relative to the start position of the ATP fixed header. The pointer points 
to the fixed header if the value is 2, which means reaching bottom of the header 
stack. Pointer value 0 and 1 are reserved. One may get the byte address of the header 
pointer field in the next extension header by multiplying the value with 8, then minus 
the result with 4.

OptionCode uniquely determines content and semantic of the extension header.

Bit-Field1 and Bit-Field2 are dependent on OptionCode.


OptionCode 0: reserved.


OptionCode 1: Congestion Feedback, Length 64 bits (8 bytes), format:
struct ATP-Congestion-Feedback
{
  WindowSize: 32;
  HeaderPointer: 8;
  OptionCode: 8; /* == Binary 0001  */
  Reserved: 16;
};

WindowSize equals to the receiving window size. It is expec

RE: An alternative to TCP (part 2)

2001-02-07 Thread Iliff, Tina

I have a question:
If the traffic class field in the IPv6 header was changed, as suggested, to
a set of flags, then how would a full gammit of differentiated services be
indicated?  In other words, if there is only one flag indicating type of
service, then different levels of, for example, assured forwarding or
expedited forwarding cannot be supported or implemented.

Tina Iliff


-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 07, 2001 8:28 AM
To: [EMAIL PROTECTED]
Subject: Re: An alternative to TCP (part 2)


ATP Header Format

The IPv6 packet whose payload contains an ATP packet must conform to latest
IPv6 specification, currently RFC 2460. ATP suggest that the traffic class
field should renamed to 'flags'. The leftmost bit could be RTP(real time
payload), the rightmost be ECN(Explicit Congestion notification), the others
are reserved. When RTP = 0, the packet falls in best-effort class of
service. When RTP = 1, the packet should be transmitted with as minimum
delay as possible.

Here is the pseudo-C data structure of an ATP header:
struct ATP-Packet
{
  struct IPv6-Fixed-Header /* IPv6 fixed header */
  {
  version: 4;
  flag-RTP: 1;
  flags-reserved: 6;
  flag-ECN: 1;
  flow-label: 24
  payload-length: 16;
  next-header: 8;
  hop-limit: 8;
  source-addr: 128;
  destination-addr: 128;
  };
  OPTIONAL IP-EXTENSION-HEADERS1;  /* chain of the IPv6 extension headers
that must appear before the authentication header. */
  OPTIONAL struct AuthenticationHeader /* IPSec AH */
  {
AHnextHeader: 8;
AHpayloadLength: 8;
reserved: 16;
SPI: 32;
AHsequenceNumber: 32;
AuthData: VARIABLE (4..1020 bytes) /* must be 32-bit aligned.*/
Padding: VARIABLE(0..4 bytes) /* make the header to 64-bit aligned */
  };
  OPTIONAL IP-EXTENSION-HEADERS2;  /* chain of the IPv6 extension headers
that may appear after the authentication header. */
  ATP-flags-reserved: 5;
  flag-RST: 1;
  flag-SYN: 1; /* maybe it should be in the IPv6 fixed header? */
  flag-FIN: 1;
  Reserved: 4;
  WindowSize: 20;
  union {
Checksum: 32;
AckBitmap: 32;
  };
  SequenceNumber: 32;
  HeaderStackPointer: 8;
  DataSegmentLength: 24;
  OPTIONAL ATP-extension-headers;
  Payload: VARIABLE(0..224-1 bytes);
  Padding: VARIABLE(0..7 bytes);
  OPTIONAL UrgentData;
};

ATP-flags-reserved: reserved flags.
flagRST: a control flag meaning ¡®reset¡¯.
flagSYN: a control flag meaning ¡®synchronize¡¯
flagFIN: a control flag meaning ¡®finish¡¯.
The meanings of the three flags are borrowed from TCP.

Reserved: 4 bits. They may be used to extent window size in the future.
Window-size: Size of the sending window. The size refers to packet instead
of byte.

Checksum: When ATP operates in non-security-extent mode the field is valid.
Method to compute the checksum of an ATP packet is the same as TCP, only
that the word length is now 32 bits. The fields which affect the checksum
include the source and destination address in the IP fixed header, the whole
ATP fixed header, all of the ATP optional headers, and the ATP payload. The
checksum field in the ATP header is cleared to zero before checksum is
computed. The payload is padding with zero to 64-bit alignment.

AckBitmap: When ATP operates in security-extent mode the field is valid. It
is a 32-bit map of selective acknowledgement. See 'Selective Acknowledgement
Header¡¯below.

SequenceNumber: When ATP operates in non-security-extent mode it means the
sequence number of current packet. When ATP operates in security-extent
mode, it means the sequence number of an accumulatively acknowledged
accepted packet.

HeaderStackPointer: indicates the offset of the 64-bit word following the
last ATP extension header. The offset is relative to the start position of
the ATP fixed header. The unit of the pointer is 64-bit word. It is abnormal
if the value of the field is 0 or 1. No extension header exists if the value
is 2. Format of the ATP extension headers are described in following
paragraphs.

DataSegmentLength: the length in bytes of the ATP payload. Unlike the IPv6
payload length which counts IPv6 extension headers, data segment length of
an ATP packet does not count the fixed header or extension headers. 

Payload is of variable length, from 0 to 2**24-1 bytes.

Padding makes the payload 64-bit aligned.

UrgentData is a special ATP extension header. See following paragraphs.



ATP Extension Headers

General Format:
struct general_ATP_extension_header
{
  Bit-Field2: VARIABLE(0..512 bytes);
  HeaderPointer: 8;
  OptionCode: 8;
  Bit-Field1: 16;
};

HeaderPointer has similar meaning as HeaderStackerPointer. It point to the
first 64-bit word of the current extension header. The pointer refers to
64-bit word. It is the offset relative to the start position of the ATP
fixed header. The pointer points to the fixed header if the value is 2,
which means reaching bottom of the header stack. Pointer value 0 and 1 are
reserved. One m

RE: An alternative to TCP (part 2)

2001-02-07 Thread Jun'an Gao

> I have a question:
> If the traffic class field in the IPv6 header was changed, as suggested, to
> a set of flags, then how would a full gammit of differentiated services be
> indicated?  In other words, if there is only one flag indicating type of
> service, then different levels of, for example, assured forwarding or
> expedited forwarding cannot be supported or implemented.
I think for the sake of routing system performance it's better to provide
only two classes of services: real-time (expediated forwarding) and 
best-effort (classical IP service level). I think it's better not to
implement assured forwarding in routing system, or the network layer but
instead in the end-node system, or the transport protocol layer.

Other quality of service parameter such as peak bit rate, sustained bit
rate, guarranteed frame rate may be associated with the IPv6 flow label.




RE: An alternative to TCP (part 2)

2001-02-08 Thread Iliff, Tina

I do agree with your point regarding the possibility of differentiated
services QoS degrading router performance.  In my opinion it may add slight
delays in transport.  However, I do see a benefit in offering more than two
service levels.  I guess that you can say that assured forwarding and
expedited forwarding can be combined and implemented as the "real-time"
service level.  This is another topic of discussion though.

Tina Iliff


-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 07, 2001 7:44 PM
To: [EMAIL PROTECTED]
Subject: RE: An alternative to TCP (part 2)


> I have a question:
> If the traffic class field in the IPv6 header was changed, as suggested,
to
> a set of flags, then how would a full gammit of differentiated services be
> indicated?  In other words, if there is only one flag indicating type of
> service, then different levels of, for example, assured forwarding or
> expedited forwarding cannot be supported or implemented.
I think for the sake of routing system performance it's better to provide
only two classes of services: real-time (expediated forwarding) and 
best-effort (classical IP service level). I think it's better not to
implement assured forwarding in routing system, or the network layer but
instead in the end-node system, or the transport protocol layer.

Other quality of service parameter such as peak bit rate, sustained bit
rate, guarranteed frame rate may be associated with the IPv6 flow label.