Internet DRAFT - draft-aleksandrov-ip-extension
draft-aleksandrov-ip-extension
Over-GROUND Ltd. D. Aleksandrov
Internet Draft: IP Extension for a Real Time Service
Document: draft-aleksandrov-ip-extension-00.txt
Internet Draft
Internet Protocol (IP) Extension for a Real Time Service
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as
reference material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/1id-abstracts.html.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This document expires 11 January 2006.
Copyright (C) The Internet Society (2005).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
D. Aleksandrov Expires January 2006 [Page 1]
Internet Draft IP Extension for a Real Time Service July 2005
Abstract
The Real Time Network Service (RTNS) is a process of data transfer
(with real time characteristics) between two end systems. It is part
of the OSI model of the Network layer, the Internet layer ot the DoD
model respectively. It is not a separate protocol, but rather an
additional service, of which applications, exchanging data in real
time, can take advantage. In the current document this service is
defined as an option of the Internet Protocol.
Table of Contents
1. Real Time Network Service Fundaments . . . . . . . . . . . . . 2
2. Packet Identification . . . . . . . . . . . . . . . . . . . . . 3
3. Hop-by-hop Treatment of Packets Requiring RTNS . . . . . . . . 5
3.1. Virtual Queues . . . . . . . . . . . . . . . . . . . . . . 5
3.2. Virtual Queuing Rules . . . . . . . . . . . . . . . . . . 6
3.3. Degree of the Return Connection at the
Destruction of an RTNS Packet. . . . . . . . . . . . . . . 7
3.4. Function of the Transporting Module . . . . . . . . . . . 8
3.5. Results of the Function of the Transporting Module . . . . 10
3.6. Common Qualities with RTP from the Standpoint
of the Needed Results . . . . . . . . . . . . . . . . . . 11
4. Requirements to Upper Layer Applications for RTNS Usage . . . . 12
5. RTNS Format in IP . . . . . . . . . . . . . . . . . . . . . . . 13
5.1 Option for RTNS in IPv4 . . . . . . . . . . . . . . . . . . 14
5.2 Option for RTNS in IPv6 . . . . . . . . . . . . . . . . . . 15
6. Interaction of RTNS-identifying and Non-identifying hosts . . . 16
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 18
8. Security Considerations . . . . . . . . . . . . . . . . . . . . 18
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 18
10. Author's Address . . . . . . . . . . . . . . . . . . . . . . . 19
11. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 19
Appendix 1
An Example of the Implementation of RTNS in IP . . . . . . . . . . 20
1. Real Time Network Service Fundaments
Fundamentally, RTNS is the sending of a tagged stream of data, in
which the data packets are characterized by varying delivery
priorities. Each packet's delivery priority is recorded within the
data body and is connected with the time of its generation as well as
its importance for the interpretation of the information being sent.
The treatment of packets is governed by the set priority index and is
executed hop-by-hop in the process of transportation. It is based on
a queuing algorithm and follows the same rules, which apply to both
sending and receiving end systems, as well as the routers. Priority
rules affect only packets from the same sequence. When two packets
from the same stream enter simultaneously into a certain network node
(it matters little whether this is an end system or a router) its IP
module can make a decision to:
- change their order in the queuing sequence for sending;
D. Aleksandrov Expires January 2006 [Page 2]
Internet Draft IP Extension for a Real Time Service July 2005
- eliminate one of them (in some instances this can be followed by
its replacement with the other one in the queuing sequence);
- not take any further action.
The assigned priority can not lead to the displacement or elimination
of a packet from a different sequence. This algorithm has no relation
to the reserving of resources and does not take advantage of the said
process, but doesn't bother resource reservation, too. There is no
reason why RTNS cannot be combined (applied simultaneously) together
with some resource reservation algorithms. Both unicast and multicast
traffic is treated in the same way.
RTNS leads to unreliable delivery of a sequence of packets via
individual routes from a sender-host to a single receiver-host or a
multitude of receiver-hosts. The difference from the traditional IP
traffic is in the presence of an algorithm for the identification and
elimination of data non-relevant to the current sequence. The real
time of the information reaching the receiver(s) is more important
than its end volume. The protocol, feeding data to the IP module and
requiring RTNS, should take note of the following:
- the delivery should be connectionless;
- that confirmation of data delivery should not be required;
- that there should not be a reliable delivery.
Chapter 1 of the present document describes the method of
identification of RTNS in the packets. Chapter 2 concentrates on the
rules for the treatment of packets, depending on the assigned
priority. These rules are applied hop-by-hop in the process of packet
transportation. Chapter 3 contains the principles which upper-layer
applications utilize in order to take advantage of the type of
service defined. Chapter 4 suggests a proper format for the
designation of the service in IPv4 and IPv6. Chapter 5 examines the
compatibility of the RTNS - identifying and non-identifying hosts.
Appendix 1 gives short but not exhaustive examples of the use of this
service.
2. Packet Identification
RTNS, as described in the present document, is based on the
assumption that the information being transferred has been digitally
coded as a sequence of data blocks (layers) with increasing levels of
importance.
Let us consider the case when the data containing the whole
information about a fixed by duration epoch is coded in k increasing
layers. If the receiver disposes of all k layers, the transmitted
information will be received in full. Because of the fact that the
data in layers 1 to k is supplementing, if the data of layers from 1
to n is received (where n can have any value from 1 to k), the data
can still be interpreted but with a different (always lower) quality.
D. Aleksandrov Expires January 2006 [Page 3]
Internet Draft IP Extension for a Real Time Service July 2005
The data should be encoded in such a manner that the following
correlation is valid:
Layer Quality
------- -------
Layer 1 Very low
Layer 2 Low
...........................
Layer k Maximum
The methods of proper information encoding are entirely beyond the
scope of this document.
When the data is in real time, the cascade encoding is done
separately for each of the consequent epochs in which the
transmission is divided.
The bounds of the increasing layers of encoding are a matter of
communication between the sending and receiving applications. Neither
the rules of this communication, nor the ways for the initiation and
discontinuation of the transmission are discussed in the present
document. It is taken for granted that applications have their ways
to initiate the transmission of data as well as to signal the usage
of certain encoding techniques and the end of the transmission.
The packets, sent within a certain epoch, are given numbers from 1 to
m, where m is the maximum number of packets expected under the used
algorithm for encoding. The correlation between the numeration of the
packets within the limits of a certain epoch and the encoding layers
is given below:
Layer Packet number
------- ----------------
Layer 1 1 to m[1]
Layer 2 m[1]+1 to m[2]
..................................
Layer k m[k-1]+1 to m
These numbers will be referred to as "internal".
It should be noted that both should be present:
- tags signifying the sequence within the epoch;
- the order of the epochs themselves.
The order is given by means of a number changing in a pattern of
cycling recurrence from 1 to q. It will be referred to as "epoch
number". The time for the completion of the whole cycle should be
longer than the maximum period for which the packet can be present in
the network. Otherwise, there is always the risk of having two
packets with the same internal and epoch numbers and no clear
chronology.
D. Aleksandrov Expires January 2006 [Page 4]
Internet Draft IP Extension for a Real Time Service July 2005
The assignment of two numbers in the packets sent leads to a sequence
indexed in the following manner:
(1, 1), (1, 2), ......(1, m), (2, 1), (2, 2)..........(2, m), (3, 1)
............. (q-1, m), (q, 1), (q, 2) ........(q, m), (1, 1)......
The sender should be properly identified. This is achieved by means
of a combination of two values: the address of the sender and a flow
label. The sender must choose a locally unique identifier for each
data flow. In case of a restoration from a crash, it must be able to
assign such identifiers to the flows so that confusion is avoided.
All in all, the packets which require RTNS have three different
numbers:
- Flow Identifier - in combination with the sender's address it
distinguishes between the different packet sequences;
- Epoch number - value from 1 to q with cyclic recurrence;
- Internal Number - number of the packet within the epoch. Takes
consequent values from 1 to m for each value of q.
It should not be expected that the sender will generate packets with
all the values of m and q. If the encoding algorithm allows that,
part of them can be occasionally skipped (provided that this would
decrease the quantity of outgoing data without leading to information
getting lost). To avoid confusion, however, the application sending
the data must inform the transporting module of the sender about the
quantity of skipped numbers within an assigned epoch as well as the
quantity of skipped epochs.
3. Hop-by-hop Treatment of Packets Requiring RTNS
On each hop-by-hop stage of the transportation, the packets with
assigned RTNS are treated in accordance with the rules set forward in
this chapter. We do not consider the case when the routing host
cannot properly identify the type of service required. This case is
discussed in Chapter 6.
The transporting algorithm is based on the separation of the packets,
which have asked for the specific service in the virtual queues, and
a number of particular rules for their ordering.
3.1 Virtual Queues
Each packet belonging to the combination sender - flow label (SFL) is
added to the virtual queue, in which the same combination is valid
for all packets. The queue itself will be referred to as "SFL queue".
Within the network module there are as many virtual queues as there
are different SFL combinations of packets requiring RTNS, waiting to
be transferred. A virtual queue is initiated when an RTNS packet is
received, which cannot be added to any of the existing ones, and the
D. Aleksandrov Expires January 2006 [Page 5]
Internet Draft IP Extension for a Real Time Service July 2005
queue is not terminated as long as there is at least one packet left
in it.
The virtual queue does not have an outgoing interface. When a request
from a random interface is received the queue sends forward the
packet located at its exit.
The virtual queue treats its packets following a set of specific
rules. The latter are described in section 3.2.
Because of the fact, that the virtual queues are not related to a
particular interface, the requests for the delivery of one of their
packets are executed with the assistance of pointing them indicators.
When a packet requesting RTNS is received by the IP module for
forwarding, it chooses the most suitable interface to whose queue the
packet should be added. RTNS does not change the rules for the
selection of the most suitable interface. The difference with the
ordinary packets is that instead of the packet itself an indicator is
added pointing to the outgoing queue of SFL packets. In the present
document the term "interface" should be understood in its broadest
sense. It can signify both:
- the connection to another host;
- the connection to an application from an upper layer receiver.
When an indicator pointing a virtual queue reaches the exit of a real
queue the transporting module sends forward the packet which is
located at the exit of the virtual (SFL) queue. In section 3.5. is
explained that it is possible for an indicator to reach the end of a
real queue at the moment of time when a corresponding virtual queue
does no longer exists. In this case the transporting module simply
ignores the indicator and continues with the treatment of the packets
and indicators, which come after it.
3.2. Virtual Queuing Rules
Rule 1) Each packet is added to the corresponding queue only if
there is no other packet in it with indexes (epoch number, internal
number) showing that it has been generated more than one epoch later
than the first one.
When, as a follow up to this rule, a packet cannot be added to its
corresponding queue, it is destroyed but no ICMP or other message to
the sender is generated.
Rule 2) Each added packet leads to the dropping from its virtual
queue of every packet whose indexes (epoch number, internal number)
show that it has been generated more than one epoch later than the
one in question.
When, as a follow up to this rule, a packet is destroyed, no ICMP or
other message to the sender is generated.
D. Aleksandrov Expires January 2006 [Page 6]
Internet Draft IP Extension for a Real Time Service July 2005
Rule 3) With each new addition of a packet to a virtual queue it
is reordered according to the chronology of the indexes (epoch
number, internal number). The oldest of the packets is always
located as the nearest one to its exit. The order of the fragment
from the same datagram in relation to each other is in accordance
with the chronology of their generation.
The three rules for the treatment of virtual queues are not equally
important. The first one is always executed. Once the packet has been
added, the second rule is checked and after its execution (with or
without the destruction of packets), the third one takes effect.
3.3. Degree of the Return Connection at the Destruction of an RTNS Packet
Rules 1 and 2 presuppose that no ICMP messages will be sent after the
destruction of a packet. This does not mean that such a message
cannot be sent when it concerns an RTNS packet. When such a packet is
not part of a virtual queue it obeys all rules pertinent to any other
packet (rules for the generation of ICMP messages are also included).
For example, if it proves not possible to choose a proper interface
(there is no delivery route), the decision for the generation of an
ICMP message is taken as it would have been for any other packet.
The rule that no message should be sent after the destruction of a
packet (part of a virtual queue) is introduced with the clear notion
that it will probably be modified later on. When an unicast traffic
is present, it is comprehendible that the IP module should require
information concerning data loss in the process of transferal,
especially when a fixed route option is activated - LSRR (IPv4
[RFC791]) or routing header (IPv6 [RFC2460]).
The destruction of a packet in a virtual queue is a sign of network
congestion - apparently not all packets can be transferred in time.
Therefore, the sending of an ICMP message for each destroyed packet
is unjustified because it further congests the already congested
network.
If in a future modification of RTNS such notification is introduced,
it is conceivable that single messages, signifying a multitude of
destructed packets, will be used. For example, after one hundred
received (for transportation) packets from the same data flow, a
single message can be sent for the loss of packets (if any),
containing their number and indexes (flow, epoch, internal number)
with the newest packet. This will allow the sender's IP module to
maintain a continually updated map of the network locations
where losses occur.
It is possible to define and use messages containing information
about data loss not only after a certain number of packets but also
after a certain period of time or a certain number of epochs cycled.
Because the optimum variant for a return connection is not clear to
the author himself, the usage of ICMP for the treatment of virtual
queues is forbidden. But a certain field, subject to a future
definition, is taken into consideration, so that the required type of
D. Aleksandrov Expires January 2006 [Page 7]
Internet Draft IP Extension for a Real Time Service July 2005
messages concerning data loss is presupposed (see Chapter 4). In this
way the sender can control whether to receive return information
about data loss. If he chooses to be informed he will have at his
disposal the freedom to define and use different types of ICMP
messages for the RTNS packets.
3.4. Function of the Transporting Module
In algorithmic code, the appearance of a new packet in the host's
transporting module (with RTNS identification capabilities) is
represented as follows:
Interface = Choose_the_most_appr_interface (newly_arrived_packet);
if (Packet_with_RTNS (Newly_arrived_packet)) {
SFL = Specify_SFL (Newly_arrived_packet);
if (! Existing_virtual_queue (SFL))
Create_virtual_queue (SFL);
if (Rule_1 (SFL, Newly_arrived_packet)) {
Add_packet_to_virtual_queue (SFL, Newly_arrived_packet);
Add_indicator_to_outgoing_queue (SFL, Interface);
if (Rule_2 (SFL, Newly_arrived_packet))
Drop_out-of-date_packets (SFL, Newly_arrived_packet);
else
Do_Nothing;
Sort_virtual_queue (SFL);
} else
Do_Nothing;
} else
Add_packet_to_outgoing_queue (Newly_arrived_packet, Interface);
The instance, when an element reaches the end of the outgoing queue
from a specific interface, is represented as follows. An element
here is an indicator pointing SFL queue or just a packet not
requiring RTNS handling:
if (Packet_for_sending (Element_at_the_exit))
Transfer_packet (Element_at_the_exit);
else {
SFL = Specify_ SFL (Element_at_the_exit);
if (Existing_virtual_queue (SFL)) {
Packet_with_RTNS = Extract_outgoing_packet (SFL);
if (Positive_number_of_packets_in_virtual_queue (SFL))
Do_Nothing;
else
Destroy_virtual_queue (SFL);
Transfer_packet (Packet_with_RTNS);
} else
Do_Nothing;
}
The functions used accomplish the following:
Choose_the_most_appr_interface (Argument: IP packet) - chooses and
returns an identifier for an outgoing interface depending on the
D. Aleksandrov Expires January 2006 [Page 8]
Internet Draft IP Extension for a Real Time Service July 2005
argument. In the instance when the delivery is not possible through
any of the interfaces present, it applies the rules for the
generation of ICMP messages;
Packet_with_RTNS (Argument: IP packet) - checks whether the
argument is a packet requiring RTNS. Returns the logical result of
the check;
Specify_SFL (Argument: IP packet or indicator pointing a virtual
queue) - returns the SFL combination of the argument;
Add_indicator_to_outgoing_queue (Argument 1: virtual queue,
Argument 2: outgoing interface) - adds an indicator pointing the
virtual queue of the first argument in the interface's queue,
assigned by means of the second argument;
Existing_virtual_queue (Argument: virtual queue) - checks for the
existence of a virtual queue, corresponding to the argument and
returns the result of the check;
Create_virtual_queue (Argument: SFL combination) - creates a
virtual queue, corresponding to the Argument;
Rule_1 (Argument1: virtual queue, Argument2: IP packet) - returns
the logical answer whether the packet represented as a second
Argument meets the conditions for adding it to the virtual queue,
identified with the first Argument;
Add_packet_to_virtual_queue (Argument1: virtual queue, Argument2:
IP packet) - adds the packet, represented as a second Argument in the
virtual queue, identified with the first Argument;
Rule_2 (Argument1: virtual queue, Argument2: IP packet) - returns
the logical answer whether the packet, represented as a second
Argument, initiates the dropping of packets from the virtual queue,
identified with the first Argument;
Drop_out-of-date_packets (Argument1: virtual queue, Argument2: IP
packet) - drops packets from the virtual queue, indicated in the
first Argument, according to the indexes (epoch number, internal
number) of the packet, represented as a second Argument;
Do_Nothing - no action is taken;
Sort_virtual_queue (Argument: virtual queue) - sorts the virtual
queue indicated in the Argument according to the chronology of the
packets, contained in it;
Add_packet_to_outgoing_queue (Argument1: IP packet, Argument2:
outgoing interface) - adds the packet, represented as a first
Argument, in the queue of the interface, assigned with the second
Argument.
Packet_for_sending (Argument: element of queue) - returns "true" as
D. Aleksandrov Expires January 2006 [Page 9]
Internet Draft IP Extension for a Real Time Service July 2005
an answer, if the Argument is a packet; "false" - if it is an
indicator;
Transfer_packet (Argument: IP packet) - transfers the packet,
represented as an Argument of the interface;
Extract_outgoing_packet (Argument: virtual queue) - the IP packet,
located at the exit of the virtual queue, identified with the
Argument, leaves it and is given as a result of the function's
execution;
Positive_number_of_packets_in_virtual_queue (Argument: virtual
queue) - returns "true" if the number of packets in the virtual
queue, identified with the Argument is positive, "false" - if the SFL
queue consists of zero packets;
Destroy_virtual_queue (Argument: virtual queue) - destroys the
virtual queue, identified with the Argument.
3.5. Results of the Function of the Transporting Module
The most prominent result from the usage of virtual queues is that
RTNS packets can reorder themselves but only in places which have
already been occupied by their own data flow. The rest of the traffic
is not discriminated against. In real queues indicators are added
only in the instances when the packet itself would have been added,
provided that the specific service had not been required.
A small advantage over the rest of the traffic is the retaining of
all indicators assigned to a certain queue, when as a result of the
execution of Rule 2, packets are dropped out of it. The total number
of indicators pointing a virtual queue is always equal or bigger than
the number of packets in it. When a virtual queue is destroyed, its
indicators are left behind. When a new virtual queue is created
for the same data flow and if some of the old indicators are still
present, then a certain number of packets will be sent shortly. In
order for the old indicators to be usable, when the same SFL
combination is present, the algorithm must be structured in such a
way that it will generate the same identifier of the virtual queue.
The virtual queues ensure that:
- the real time service is executed properly;
- the quantity of transferred data in case of network congestion and
narrow band connections is managed effectively.
The real time is ensured by the dropping of packets which are late by
at least one epoch from the transmission. The encoding algorithm
which chooses the duration of the epoch should take this
characteristic into account.
The effective management of the quantity of transferred data is
ensured by special ordering rules which place the packets with the
D. Aleksandrov Expires January 2006 [Page 10]
Internet Draft IP Extension for a Real Time Service July 2005
smallest internal numbers at the head of the transmission (Rule 1).
The cascade encoding, discussed in chapter 1, in combination with
this rule decrease the quality of receiving but retain to the maximum
the receiver's freedom to interpret the data.
The hop-by-hop treatment of packets by the network allows it to act
as a homogeneous environment, which controls the data flow processes
between the sender and the receiver. In this way it ensures that the
best quality of service is achieved without the need to reserve
resources (discrimination against the rest of the network traffic).
The quantity of transferred data (respectively the quality of
receiving) is self-adjusting and continually improves the utilization
of the available resources. A great advantage is that we will no
longer need to install and engage intermediate hosts, aiming at re-
encoding the data in case of an unsatisfactory network resource, so
that the data will be received after all.
3.6. Common Qualities with RTP from the Standpoint of the Needed Results
RTP [RFC3550] is the protocol for data transferal with real-time
characteristics, which currently concentrates most of the efforts in
this direction. RTNS of IP does not try to underestimate RTP. The
utilization of the mechanisms, available to a network layer protocol
of the OSI [OST] model, gives us an additional opportunity for the
development of services in real time. RTP is a higher layer protocol
with a high level of specificity while RTNS is just an IP extension.
Therefore we do not try to exhaustively compare the two technologies,
but rather point our attention in the direction of some results which
can be achieved by using each one of them.
RTP does not ensure the real time of the delivery because it is a
higher layer protocol. It only creates an opportunity for the
inclusion within the packets of information about the data in real
time.
Information of the same kind is recorded by RTNS too, but it also
offers a real-time service. RTP uses mixers for the servicing of
clients using narrow band connections to the network. Layered
encoding is also part of RTP's specifications. It should be noted
that different addresses are used to signify the different layers,
especially when multicast transmission is used.
RTNS achieves both aims following the guidelines for the destruction
of packets which congest the network. An IP module identifying RTNS,
reacts without delay if congestion occurs. When RTP is used the
reaction time is longer because the sending application is managing
the process.
RTCP allows the initiation of a return connection informing about the
quality of transmission, but it also allows the user to turn this
function off. On the contrary, IP's RTNS has no provisions for a
return connection, but still the possibility for the initiation of
one is left open.
D. Aleksandrov Expires January 2006 [Page 11]
Internet Draft IP Extension for a Real Time Service July 2005
One of RTNS's advantages is that end systems are not expected to
monitor and react in case of network congestion. The end result is a
reduced transfer for receivers using narrow band connections and a
full range of data for users of broadband connections. The same
result is aimed at and provided for in the specifications of RTP.
4. Requirements to Upper Layer Applications for RTNS Usage
Upper layer applications must be able to exchange specific messages
with the IP module in order to make use of RTNS. It is very likely
that upper layer applications utilize UDP [RFC768] as an intermediate
protocol, used for the transferal of data to the network layer.
Because RTNS is implemented in the IP module, it is not committed to
a specific upper layer protocol.
The recommendation for the usage of UDP is determined by its
characteristics:
- connectionless data dalivery;
- lack of confirmation for the data delivery;
- unreliable delivery.
UDP also has ports for the identification of sending and receiving
applications. The data flow identifier is sufficient for that purpose
but it is unrecognizable for the hosts which do not use RTNS. The
usage of ports is a specific application problem (if they plan to use
RTNS), rather than a problem of the service itself. And therefore it
is not discussed in the present document.
The sending application must be able not only to transfer data but
also to request the execution of the following functions from the
transport module:
- to be notified about the duration of a packet's life in the
network.
The upper layer application requests and should be given the maximum
duration for a packet's life in the network, which will be used for
the transferal. This value (in seconds) is used to determine the
maximum value of the epoch number index. The upper layer application
is solely responsible for the correct assignment of this number. The
algorithm, used to calculate the maximum packet life, is beyond the
scope of this document. Because of the fact that IP only counts the
number of hops, not seconds, the maximum packet life can only be
calculated approximately. In order to avoid any confusion, it is
better for the inquiring application to get a value, which has been
increased on purpose by a certain percentage;
- to be notified about the maximum value of the transmission unit.
The upper layer application should be able to request and receive
information about the maximum transmission unit (MTU) so that it can
D. Aleksandrov Expires January 2006 [Page 12]
Internet Draft IP Extension for a Real Time Service July 2005
adjust its encoding algorithm. This adjustment is not obligatory. By
considering the value of MTU, the data generator can require the
increase of the index (internal number), so that the fragmentation of
packets is avoided;
- to assign a maximum number for the epoch.
It is necessary because the data generating application is the only
one which knows the epoch duration that will be used. The IP module
could always use values from one to the maximum because when
numbering the sequent epochs, the only thing that really matters is
their change and order. This leads to the transferal of packets with
recorded long-in-bits values of the epoch number, which creates a
certain quantity of extra traffic in those cases when the duration of
the epoch is such that for the standard duration of packet life
short-in-bits maximum value would be enough.
It would be best if this function is used at the initiation of the
transmission. Its execution is not obligatory. If it is never
initiated, the transport module will assign to the epoch numbers from
1 to the maximum admissible value. The upper layer application is
free to choose how many times to use this function during the time of
the transmission. Its initiation, with a value lower than the current
one, leads to the assignment of "1" as a epoch number at the next
request for a change of the epoch;
- to change the epoch.
It is initiated separately and precedes the first data transferal
from the new epoch. After the epoch is changed, the value of the
internal number is set to 1;
- to increase the internal number.
It is fed in with each portion of data (in particular - UDP packets),
which the IP module receives. Its minimum value is 0 and the maximum
is defined as a result of the subtraction of the current internal
number from the maximum admissible value for this index. Value 0
means no increase. When the upper layer application requests that the
internal number is increased and tries to assign a number bigger than
its maximum value, the transport module records the maximum
admissible value in the packets and returns the message "requested
internal number greater than the maximum admissible value". It is the
responsibility of the upper layer application to take into
consideration this message and to adjust its requests accordingly.
The application, which receives the data, needs two indexes: epoch
and interval numbers. They accompany each data portion. It is
the responsibility of the upper layer application to buffer and order
the data within each of the epochs.
5. RTNS Format in IP
The flagging of packets requesting RTNS is achieved through a hop-by-
D. Aleksandrov Expires January 2006 [Page 13]
Internet Draft IP Extension for a Real Time Service July 2005
hop option. A special IP module, responsible for the management of
the service, must check the passing packets for this option. It is
understandable to expect that this service should be described as a
differentiated one, making use of the DS field defined in accordance
with [RFC2474]. The definition of per-hop behavior out of DS's scope
defies the recommendation of [RFC2475], where it is specifically
stated that in such instances differentiated service encoding must be
used.
The reasons to reject such definition are listed below:
- [RFC2474] determines that just one kind of differentiated service
can be recorded and applied to a certain packet. The service that is
being described in the current document can be used together with
other kinds of differentiated services. Fundamentally, it can be
described as a type of differentiated treatment but only of the
packets belonging to the same data flow. A differentiated service can
also be requested for the whole data flow and at that instance - in
the exact sense this term is used in [RFC2474];
- [RFC2481] and [RFC3168] (which later substituted it) proposes the
taking up of the two least significant bits in the DS field. As a
result the IP packet is left with no empty fields. Therefore we can
deduct that there is no other way to define RTNS;
- inclusion of an RTNS option in the packet is the same as its
flagging for the type of service requested from the standpoint of any
IP module identifying this option. For a module, which cannot offer
the service requested, the result is zero, even when the request is
recorded in the packet's DS field.
5.1 Option for RTNS in IPv4
In IPv4 RTNS is defined as an option recorded in the Options field of
the IP header.
The data contained in it is: flow identifier, epoch number, internal
number and the type of return connection.
RTNS option format for IPv4:
1 2 3 4
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Type | Option Length |0|0|0|0| FLOW LABEL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FLOW LABEL | ENL | INL | Epoch Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Epoch Number | Internal Number |ICMP Parameter |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Option Type - the first 8 bits define the type of the option as put
forward in [RFC791]. An option for real time must be present in each
of the fragments (value 1xxxxxxx). It can be described as one of the
D. Aleksandrov Expires January 2006 [Page 14]
Internet Draft IP Extension for a Real Time Service July 2005
control options (value x00xxxxx).
It is proposed that IANA assigns an option number for RTNS starting
with 100 [IANAv4].
Option Length - is located in the second octet as required by
[RFC791]. The correct decimal values are between 9 and 37 (binary
values form 00001001 to 00100101).
Flow Label - a 20-bit field for the data flow identifier. It takes
up octets 3, 4 and 5, whose starting four bits are filled up with
zeros. The flow identifier is 20 bits long in order to be compatible
with the length of the flow label field in the IPv6 header, which is
of the same size.
Octet 6 of this option is divided into two 4-bit fields:
Epoch Number Length (ENL) - field length in octets, in which
the number of the epoch is recorded. This number is an unsigned
integer.
Internal Number Length (INL) - field length in octets, in which the
internal number is recorded. It is an unsigned integer.
Epoch Number - number of the epoch. It is a field of varying length
- 1 to 15 octets, an unsigned integer.
Internal Number - an internal number. It is a field of varying
length - 1 to 15 octets, an unsigned integer.
ICMP Parameter - defines the type of return connection for the
undelivered packets. It is filled with zeros by the sender, which is
to signify that there is no need for return connection, in other
words no ICMP message should be generated even if in a virtual queue
packets are destroyed. If, in a future revision of RTNS, the usage of
ICMP is provided for, at the occurrence of the situation described in
2.3, it should generate values different from zero for each type of
return connection and these values should be recorded in the field in
question.
The indexes (epoch number, internal number) are recorded in fields
of varying length so that the encoding application exercises the
freedom to choose from among them and also to decrease the size of
the real time options when their value is small.
The minimum length of the option is 9 octets (72 bits). Its maximum
length is 296 bits (37 octets).
5.2 Option for RTNS in IPv6
RTNS is defined in IPv6 as an option recorded in an additional
hop-by-hop options header. Each packet requiring RTNS has to have
this additional options header.
The data contained in this option is: number of the epoch number,
D. Aleksandrov Expires January 2006 [Page 15]
Internet Draft IP Extension for a Real Time Service July 2005
internal number and type of the return connection.
The data flow identifier is defined in a 20-bit Flow Label field,
located in the packet's IPv6 header.
The type of the option is the following:
1 2 3 4
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Type | Option Length | ENL | INL | Epoch Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Epoch Number | Internal Number |ICMP Parameter |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Option Type - the first 8 bits define the type of the option as
required by [RFC2460]. In the case when the IP module cannot
interpret the option, it must be skipped with no further consequence
(value 00xxxxxx) - the packet is treated as any other packet would
be. The option for RTNS does not change en-route (value xx0xxxxx).
It is proposed that IANA assigns an option number for RTNS in IPv6
starting with 000 [IANAv6].
Option Length (Option Data Length) - an 8-bit unsigned integer,
which - in accordance with [RFC2460] defines the length of the
option's data (the next 4 fields) in octets. The correct decimal
values are from 4 to 32. (binary form 0000100 to 00100000).
Here are the rest of the fields in the option's data: Epoch Number
Length (ENL), Internal Number Length (INL), Epoch Number, Internal
Number and ICMP Parameter have comparable lengths, values and
interpretations with the corresponding IPv4 fields.
The difference in the options' data between IPv4 and IPv6 is that the
IPv4 data flow identifier should be present as a field in the RTNS
option, where as in IPv6 the special field in IP header is used
instead.
The minimum length of the option's data is 4 octets (32 bits), and of
the whole option - 6 octets (48 bits). The maximum length of the
option's data is 32 octets (256 bits), and of the whole option - 34
octets (272 bits).
6. Interaction of RTNS-identifying and Non-identifying hosts.
The term "network node" is used in this chapter as common for both
"router" and "end system".
Each packet flagged for RTNS could pass through a succession of
routers (identifying or non-identifying the type of service
requested), at the time of its transferal. The difference between
the two types of hosts shows itself when the network resources are
limited.
D. Aleksandrov Expires January 2006 [Page 16]
Internet Draft IP Extension for a Real Time Service July 2005
If the data transferal were quick enough and broadband, the packets
of each data flow would arrive at their final location in the same
order and quantity as generated. They would also pass each hop in the
same manner. When there is no slowing down the conduct of the routers
identifying RTNS is the same as the conduct of those, which do
not identify RTNS. Therefore we must describe the case when there is
not enough network resource for the data flow requesting RTNS and the
rest of the traffic.
We can be sure that the packets from a certain data flow will sooner
or later reach a node identifying RTNS. At least the receiver host
should be of this kind because to install the application (which
counts on receiving the data) otherwise, would have been useless.
When the packets reach such a node, they will be partially sorted and
the data, which is not current, will be dropped from the flow.
We can also be sure that by the time they reach a node, non-
identifying RTNS, the packets have at least once been through a node
identifying the requested service. At least the sender host should be
of this kind or otherwise to install the application (which generates
the data) would have been useless. The outgoing packets (part of an
RTNS flow) from such a host are always sorted. If all cannot be sent,
then they are reduced.
At each border, between an RTNS-identifying host and a rest of the
network (where the RTNS non-identifying nodes are), the packets,
which cannot be properly treated by the network infrastructure, are
dropped. To be precise, the latter are destroyed in the virtual queue
of the RTNS-identifying host. The most important thing here is that
this process is executed in accordance with the service requirements.
If we allow for a certain approximation, each part of the network,
which does not identify RTNS and is located between two RTNS-
identifying hosts, can be considered a direct connection (virtual
link) with insufficient capacity.
Because of the fact that the virtual link does not have the
capability to drop the packets, whose data is not current, it lessens
the quality of the data flow requiring RTNS. A point can be reached
when there is a practical incapability for the receiving of data -
when almost all RTNS-requiring packets are dropped within a host
whose exit interfaces are connected to network nodes, which do not
work with RTNS. On the other hand, the dropping of such packets will
have a good effect on the rest of the network traffic from whose
standpoint both types of hosts are identical. The dropping of packets
regulates the network load, discriminating against the RTNS-requiring
data but not against the rest of it.
According to the formal definition of "congestion", given in
[RFC2914] and [RFC2309], RTNS may cause a congestion collapse. That
is because "bandwidth is wasted by delivering packets through the
network that are dropped before reaching their ultimate destination."
Dropping a packet in a virtual queue always happens in an edge node
connecting a congested link to a non-congested one. This node could
be the sender host. In this case, the free link is to the Upper Layer
D. Aleksandrov Expires January 2006 [Page 17]
Internet Draft IP Extension for a Real Time Service July 2005
Application generating data, and the congested link is (one of)
host's network interface(s). Yes, there are dropped packets, but they
are delivered to their drop-point over uncongested link(s). It is the
same, as relying on end systems to back-off the size of the flow,
with the advantage, that an RTNS flow is self back-offing. It is a
TCP-compatible, not a more aggressive flow. When using multicast,
every branch of the multicast tree is able to back-off its rate to a
different level.
Another doubt provoking aspect of RTNS functionality is the fact,
that its queuing algorithm is only efficient when packets, requiring
the service, remain for a comparatively long time in virtual queues.
And also, wouldn't the RTNS algorithm slow down routers too much? As
computer capabilities are constantly growing, just like network
speeds are, even if RTNS is nowadays unworkable, it could soon be
applicable.
There is no necessity for the simultaneous recognition of RTNS by all
IP modules from the very beginning. This makes it possible to
implement the service in limited parts of the Internet and then
gradually "take over" new territories.
7. IANA Considerations
This document proposes IANA assigned a new value among the IP Option
Numbers [IANAv4] - Real-time Network Service Option.
This document proposes IANA assigned a new value among the Option
Types of the IP Version 6 Parameters [IANAv6] - Real-time Network
Service Option.
8. Security Considerations
Security considerations are not discussed in this memo.
9. References
[RFC791] Postel, J., "Internet Protocol", RFC 791, September 1981
[RFC2460] Deering, S. and Hinden, R., "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, December 1998
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., Jacobson, V.,
"RTP: A Transport Protocol for Real-Time Applications",
RFC 3550, July 2003
[OST] Osterloh, H., "TCP/IP Primer Plus", 2002, Sams Publishing
Bulgarian Language Edition, 2002, Softpress Ltd.
[RFC768] Postel, J., "User Datagram Protocol", RFC 768, August 1980
[RFC2474] Nichols, K., Blake, S., Baker, F., Black, D., "Definition
of the Differentiated Services Field (DS Field) in the
IPv4 and IPv6 Headers", RFC 2474, December 1998
[RFC2475] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z.,
D. Aleksandrov Expires January 2006 [Page 18]
Internet Draft IP Extension for a Real Time Service July 2005
Weiss, W., "An Architecture for Differentiated Service",
RFC 2475, December 1998
[RFC2481] Ramakrishnan, K., Floyd, S., "A Proposal to add Explicit
Congestion Notification (ECN) to IP", RFC 2481,
January 1999
[RFC3168] Ramakrishnan, K., Floyd, S., Black, D., "The Addition of
Explicit Congestion Notification (ECN) to IP", RFC 3168,
September 2001
[IANAv4] "IP OPTION NUMBERS",
The Internet Assigned Numbers Authority
[IANAv6] "IP VERSION 6 PARAMETERS",
The Internet Assigned Numbers Authority
[RFC1112] Deering, S.E., "Host extensions for IP multicasting",
RFC 1112, August 1989
[RFC2914] Floyd, S., "Congestion Control Principles", RFC 2914,
September 2000
[RFC2309] Braden, B., Clark, D., Crowcroft, J., Davie, B., Deering,
S., Estrin, D., Floyd, S., Jacobson, V., Minshall, G.,
Partridge, C., Peterson, L., Ramakrishnan, K., Shenker,
S., Wroclawski, J, Zhang, L., "Recommendations on Queue
Management and Congestion Avoidance in the Internet",
RFC 2309, April 1998
10. Author's Address
Dimitar Aleksandrov
Over-Ground Ltd.
Varna, Bulgaria
Phone: +359 89 7904009
E-mail: rtns@over-ground.net
11. Full Copyright Statement
Copyright (C) The Internet Society (2005). This document is subject
to the rights, licenses and restrictions contained in BCP 78, and
except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on
an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed
D. Aleksandrov Expires January 2006 [Page 19]
Internet Draft IP Extension for a Real Time Service July 2005
to pertain to the implementation or use of the technology described
in this document or the extent to which any license under such
rights might or might not be available; nor does it represent that
it has made any independent effort to identify any such rights.
Information on the procedures with respect to rights in RFC
documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use
of such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository
at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at ietf-
ipr@ietf.org.
Appendix 1
An Example of the Implementation of RTNS in IP
A typical application of RTNS would be the transmission of radio and
TV programs in Internet. When the classical transmission methods are
used (via radio and TV stations, etc.), the fundamental
characteristics of the transmission are:
- full synchrony between the receivers and the transmitter ;
- a possibility for the signal to be received by an unlimited number
of listeners / viewers (within the zone covered by each
transmitter);
- lack of feedback, concerning the number of receivers and the
quality of the signal received.
The same characteristics are achievable through the usage of RTNS,
side by side with multicasting [RFC1112].
The radio - and TV program needs a multicast address and encoding of
the transmitted data in accordance with the principles discussed in
Chapter 1. The rest is taken care by the network infrastructure. It
is important to point out that data encoding allows access to the
program from users with different network and hardware capabilities.
This will not create a problem neither for the data-sender, nor for
the intermediate routers.
What follows is an example for the structuring of increasing layers
of encoding for the TV program:
Layer 1 Transmission topic - information about the current
D. Aleksandrov Expires January 2006 [Page 20]
Internet Draft IP Extension for a Real Time Service July 2005
program in textual form
Layer 2 Mono sound - phone line quality
Layer 3 Frames at intervals of 1 second each
Layer 4 Frames at intervals of 1 second each with a
difference of 1/2 second from the frames of Layer 3
Layer 5 Sound addition - radio quality
Layer 6 Frames at intervals of 1/2 a second each with a
difference of 1/4 second from the frames of Layers 3
and 4
Layer 7 The rest of the frames from the video
Layer 8 Difference between the left and the right sound
channels - FM stereo radio quality
By using RTNS we can set up unicast conference connections, in which
all delays are avoided but some interruptions are possible.
RTNS can also be used when transferring data with reserved network
resource. It can really save the day in those cases when the usual
guaranteed routes are down and unusable. Another way to deal with
this situation is to reserve resources equivalent to the data from
the first several layers of encoding. In this way more clients will
be able to reserve guaranteed data of minimal quality and not
guaranteed full receiving.
This document expires 11 January 2006.
D. Aleksandrov Expires January 2006 [Page 21]