INTERNET-DRAFT T. Shiroshita, NTT T. Sano, NTT O. Takahashi, NTT N. Yamanouchi, IBM Japan 1 September, 1997 Expires in six months Reliable Multicast Transport Protocol Version 2 Status of this Memo This document is an Internet-Draft. 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." To learn the current status of any Internet-Draft, please check the "1id-abstracts.txt" listing contained in the Internet- Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast). Abstract This draft presents the specifications of the 'Reliable Multicast Transport Protocol Version 2,' which is to be used for information delivery such as newspaper delivery and software updates. The protocol aims to realize the completely reliable multicast distribution of bulk data from a server to thousands of receivers. Version 2 added new functions of information access control, rate flow control, and suspending resume. Shiroshita, Sano, Takahashi, Yamanouchi [Page 1] INTERNET-DRAFT RMTP V2 Specification September, 1997 Table of Contents 1. Introduction....................................................3 2. Description of Extension Features...............................3 2.1 Common Extension Rules.........................................3 2.2 Description of Individual Extended Features....................3 2.2.1 Rate Control.................................................3 2.2.2 Large Volume Delivery.......................................4 2.2.3 Packet Scrambling............................................7 2.2.4 Group Management and Terminal Authentication.................8 2.2.5 Suspend and Resume...........................................9 2.2.6 Optional Information Transfer in Connection Establishment...20 2.2.7 Abort Request to Individual Terminal........................20 3. Packet Format..................................................21 3.1 Encoding Rules................................................21 3.2 Packet Format.................................................22 References........................................................29 Author's Addresses................................................29 Shiroshita, Sano, Takahashi, Yamanouchi [Page 2] INTERNET-DRAFT RMTP V2 Specification September, 1997 Reliable Multicast Transport Protocol Version 2 Part 2 (Extension Part) 1. Introduction (1) Structure of This Specification This Part 2 is the specification of the extension of RMTP Protocol Specification Version 1. The Version 2 Part 1 (Base Part) is identical to RMTP Protocol Specification Version 1. The entire RMTP Protocol Specification Version 2 consists of Part 1 (Base Part) and this Extension Part. (2) Extended Functions In addition to reliable information distribution based on multicast specifiedin the RMTP Specification Base Part, this part specifies the following extended protocol features to improve services and performance: services in mobile environments, dynamic rate control that improves distribution performance, and scrambling for security. This Extension Part document describes the differences from Version 1 (i.e., addition and changes to Version 1). 2. Description of Extension Features 2.1 Common Extension Rules Declaration about use of the extended features at connection establishment: - Use of each extended feature is optional (both in implementation and in use) except for the following: * The terminal should return its terminal ID together with ACK. - In the case where the server declares to use an option and a terminal does not support the option, the decision of whether to execute or not to execute the option should be made according to the nature of the option. It is not specified in this document. - Use of each option is designated in the parameter field of the connection establishment request (CONN) packet. 2.2 Description of Individual Extended Features 2.2.1 Rate Control (1) Overview The server monitors the packet arrival conditions at the terminals and controls the transmission rate of the data packets. Shiroshita, Sano, Takahashi, Yamanouchi [Page 3] INTERNET-DRAFT RMTP V2 Specification September, 1997 (2) Protocol Sequence The server monitors the packet arrival conditions at the terminals and controls the transmission rate using the following steps. Step1 (Server) The server transmits a DT packet with the flow measurement start bit turned ON. Step1 (Terminal) A terminal records the DT sequence number on receipt of a DT packet with flow measurement bit ON, and starts counting the number of DT packets. Step2 (Server) The server transmits a DT packet with the flow measurement stop bit turned OFF. It starts the report timer. Step2 (Terminal) A terminal records the DT sequence number on receipt of a DT packet with flow measurement bit OFF, stops counting the number of DT packets, and records the total number of DT packets counted. The terminal returns the DT sequence numbers of the measurement start and measurement stop DT packets, and the total number of counted DT packets to the server via a flow control measurement report packet (FREPO packet). Step3 (Server) The server collects the FREPO packets, summarizes the DT receipt status of the terminals, and reflects the result to the DT transmission rate. Timeout may be called by the report timer. (Note) - The adjustment of the transmission rate is implementation dependent. It will be determined by such factors as the number of reporting terminals and the reported number of packets. (3) Packet Format - The measurement start and stop bits in a DT packet. - The flow control measurement report packet (FREPO). 2.2.2 Large Volume Delivery (1) Overview A common application layer divides a large volume of data into small messages which are delivered sequentially by RMTP. Shiroshita, Sano, Takahashi, Yamanouchi [Page 4] INTERNET-DRAFT RMTP V2 Specification September, 1997 (2) Protocol Sequence - The large volume delivery uses RMTP for delivering the divided messages. - Except for the points described below, the transfer sequence of the divided messages is identical to the Base RMTP transfer sequence. * Omit the acks for the connection establishment (CACKs) in the middle of repeated transmissions except for the first transmission. The connection established for the transmission of the first divided message is retained through the transmission of the remaining divided messages. This feature is defined as a common AP (both on the server and the terminals) of the RMTP Protocol Machine (RM-PM) that controls the underlying RM-TP.??? Server Terminal -------- -------- AP AP -------- -------- commonAP commonAP A A ---|---- ---|---- V V RM-PM <--------RMTP---------> RM-PM -------- -------- Assumed Tables This feature assumes a BC table that records success/failure of RMTP transmission for each divided message in both the server and the clients. Protocol Sequence (procedure) on Server Event (CO-VLDD): Received connection establishment request (first divided message of a large volume transfer). This is usually the transmission start command from the upper layer AP. Previous State: Before transmission (CLOSED_VLDD). Action: Request transmission of a connection establishment request packet CONN (first time) to RM-PM. Proceed to the divided messages delivery in process (ON_VLDD) state. Shiroshita, Sano, Takahashi, Yamanouchi [Page 5] INTERNET-DRAFT RMTP V2 Specification September, 1997 Event (BM-COMP): Received the transfer completion report of each divided message from RM-PM. Previous State: ON_VLDD. Action: Record the completion result (success or failure) in the BC table. If the server has more divided messages to send (not_last), request CONN (intermediate) to RM-PM. Continue ON_VLDD state. If the server has no more divided messages to send (last), proceed to CLOSED_VLDD. Server State Transition Table Event|State | CLOSED_VLDD | ON_VLDD --------------+--------------------+-------------------- CO-VLDD | CONN-->ON_VLDD | --------------+--------------------+-------------------- BM-COMP | |(not_last)-->ON_VLDD | |(last) -->CLOSED_VLDD Blank: ignore. Protocol Sequence (procedure) on Terminals Event (CO-VLDD-R): Received connection establishment request (first divided message of a large volume transfer). Previous State: Before delivery (CLOSED_VLDD_R) Action: Create a BC table. Proceed to Large volume data transfer in progress (ON_VLDD_R). Event (BM-COMP-R): Received the transfer completion report of each divided message from RM-PM. Previous State: ON_VLDD_R. Action: Record the completion result (success or failure) in the BC table. If the server has more divided messages to be sent (not_last), continue ON_VLDD_R state. If the server has no more divided messages to be sent (last), proceed to CLOSED_VLDD_R. Terminal State Transition Table Event|State | CLOSED_VLDD_R | ON_VLDD_R --------------+--------------------+-------------------- CO-VLDD-R | CONN-->ON_VLDD_R | --------------+--------------------+-------------------- BM-COMP-R | |(not_last)-->ON_VLDD_R | |(last) -->CLOSED_VLDD_R Blank: ignore. (Note) Retransmission of the divided messages based on the BC table is beyond the scope of this specification. Shiroshita, Sano, Takahashi, Yamanouchi [Page 6] INTERNET-DRAFT RMTP V2 Specification September, 1997 (3) Packet Format Following parameters are added to the CONN packets of the first and all subsequent transmission of divided messages. * original message size (message size before dividing) * divided message size * sequence number of divided message 2.2.3 Packet Scrambling (1) Overview Packet scrambling scrambles the DT packet sequence numbers, transmits the packet to the terminals in a scrambled order, and has the terminal unscramble the sequence number to the original number based on the key delivered prior to the transmission. There is an optional "user unscramble" mode that users unscramble the data at the time of use while the RMTP terminal receives and stores the data without unscrambling. (2) Protocol Sequence Automatic Unscramble Mode The server reorders the packet sequence numbers of a unit scramble block (constant size) into a fake (scrambled) sequence. If the message cannot be divided evenly into the scramble block size, SC padding packets are added so that the message size is evenly divided into the scramble blocks. The terminal receives the messages, replacing the fake sequence numbers into the original sequence numbers. The sequence numbers contained in the NACK and RRDY packets should be fake numbers. After receiving the entire message, the SC padding packets are removed. User Unscramble Mode The terminal receives the DT packets according to the fake sequence numbers and passes them to the application. SC padding packets should be removed by the application. (Note) Distribution of the unscrambling key to the terminals is beyond the scope of this specification. (3) Packet Format Parameters of CONN packet: The message size field should contain the following scrambled message length. Shiroshita, Sano, Takahashi, Yamanouchi [Page 7] INTERNET-DRAFT RMTP V2 Specification September, 1997 Scrambled message length = message size+padding of the last DT packet+SC padding size The "True Message Size" field of the CONN packet optional parameter should contain the original message size. 2.2.4 Group Management and Terminal Authentication (1) Overview This feature manages the terminal identity by their names instead of their IP addresses. To implement this feature a terminal name is added to the connection establishment acknowledgment packet CACK. Also, a terminal authentication information is added to CACK in order to authenticate the terminal name. (2) Protocol Sequence (Connection by terminal names) The terminal replies to the server by CACK associated with the terminal name. The server identifies the connected terminal by this name and the sender address of the CACK IP packet. The use of this feature is mandatory (not optional) in the communication based on RMTP version 2. (Authentication) The terminal also adds authentication information as well as the terminal name to the CACK. The server authenticates the terminal when it receives a CACK. At the same time the terminal's IP address included in the CACK packet is regarded as the valid terminal address during the connection. If a name is not associated with CACK, the terminal is identified by the IP address. In a mobile environment where IP address is dynamically assigned, the use of CACKs associated with names is highly recommended. (Notes) - Distribution of the key necessary for generating authentication information is beyond the scope of this specification. - The action to be taken when a terminal is found to be unauthorized (such as aborting communication) is beyond the scope of this specification. (3) Packet Format - Add terminal name and authentication information to CACK. Shiroshita, Sano, Takahashi, Yamanouchi [Page 8] INTERNET-DRAFT RMTP V2 Specification September, 1997 2.2.5 Suspend and Resume (1) Overview In case of unstable communication links such as wireless links in a mobile environment, this function allows RMPT to complete the data retransmissions to the normal terminals first by suspending retransmissions to the unstable terminals. The retransmissions to the unstable terminals are performed at a later time. While Busy Retransmission is an individual retransmission capability controlled by the terminal; Suspend/Resume is controlled by the server. (2) Protocol Sequence Suspend: 1) When the server detects a terminal whose receive performance is poor, it determines to suspend retransmission to the terminal and marks it for individual retransmission. 2) The server sends a suspend (SUSP) packet via unicast to the terminal to be suspended. Resume: After the main transmission phase completes, the following procedure is invoked in the individual retransmission phase. 1) The server sends a POLL to the suspended terminal via unicast. 2) The terminal replies with a NACK when it receives the POLL. The NACK should contain sequence numbers of the missing/unreceived data packets. 3) The server retransmits the data packets to the terminal via unicast according to the NACK information. Steps after this point is identical to the BUSY retransmission procedure. Exception handling: If the server receives any unexpected responses such as NACK, BUSY and RRDY from a SUSPended terminal, it should send a SUSP packet again to the terminal via unicast. If the server receives an ACK from a SUSPended terminal, it processes the terminal as it has received all data packets normally, and records a normal completion on the log. (Notes) 1) The criteria for determining that a terminal has an unstable link and needs individual retransmission is beyond this specification. Examples of such criteria include (case 1) the number of POLL time out occurrences exceeds a predefined limit, and (case 2) the number of unreceived packets reported in a NACK exceeds a predefined limit. Shiroshita, Sano, Takahashi, Yamanouchi [Page 9] INTERNET-DRAFT RMTP V2 Specification September, 1997 2) The priority between BUSY retransmission and SUSP/RESUME retransmission is beyond this specification. (3) Packet Format Suspend notification packet (SUSP) Shiroshita, Sano, Takahashi, Yamanouchi [Page 10] INTERNET-DRAFT RMTP V2 Specification September, 1997 Additional Specification for Suspending Designation and Resume Additional specification to part 1 section 3 by this section 2.2.5 is described as follows. Section in Part1: 3.1 State and event definition 3.1.1 State and event definition (Server side) Major Transitions of Multicast on the Server Side State Definition: no addition. Event Definition: +------------------+--------------+------------------------------------+ |Event |Previous state|Action | +------------------+--------------+------------------------------------+ | |OPEN |Send a SUSP packet to the terminal. | |Suspending | |Enter into CC tables. | |designation | |(1) If there are terminals not BUSY | |(ex) | | nor Suspending, continue OPEN | | | | state | | | |(2) If all terminals are BUSY or | | | | Suspending, proceed to Separate | | | | Retransmissions Phase to "BUSY | | | | terminals" state. | | +--------------+------------------------------------+ | |ACK/NACK wait |Enter into CC tables. | | | |(1) If some responses not received, | | | | continue ACK/NACK wait state. | | | |(2) All responses received, if NACK | | | | and BUSY, proceed to OPEN state.| | | |(3) All responses received, if there| | | | is ACK, send REL and proceed to | | | | Connection Release Response wait| | | | state | | | |(4) If all BUSY or RRDY, proceed to | | | | Separate Retransmission phase | +------------------+--------------+------------------------------------+ State Transition of Separate Retransmission Phase to BUSY Terminals on the Server Side No modification in the state definition and the event definition. Shiroshita, Sano, Takahashi, Yamanouchi [Page 11] INTERNET-DRAFT RMTP V2 Specification September, 1997 State Transition of Separate Retransmission Phase to Suspending Designated Terminals on the Server Side State definitions Separate Retransmission wait(SOP): Following suspending designation the state of waiting for a separate retransmission request to the terminal occurs. ACK/NACK wait(SAW): Following data transmission, the state of waiting for response from terminal (ACK/NACK/BUSY). Connection release response wait(SRW): Following request for connection release, the state of waiting for response from the terminal. Separate re-transmission completion(SCL): The state of separate re- transmission to the said terminal being completed. Separate re-transmission phase to BUSY terminal(BS): Following BUSY receiption, the phase in which re-transmission for each separate terminal is being conducted. Event Definition: State Transition of Separate Retransmission Phase to Suspending Designated Terminals +------------------+--------------+------------------------------------+ |Event |Previous state|Action | +------------------+--------------+------------------------------------+ |Transmission |Separate |Send POLL packet | |request (separate,|Retransmission|and proceed to ACK/NACK wait. | | initial)(ex) |wait | | +------------------+--------------+------------------------------------+ |Transmission |Separate |Transmit retransmission data | |request (separate,|Retransmission|and proceed to ACK/NACK wait. | | following)(ex) |wait | | +------------------+--------------+------------------------------------+ |ACK reception |ACK/NACK wait |MC table entry, send connection | | | |release packet, and proceed to | | | |Connection Release Response wait | | | |state. | +------------------+--------------+------------------------------------+ |NACK reception |ACK/NACK wait |MC table entry and proceed to | | | |Separate Retransmission wait state. | | | | | +------------------+--------------+------------------------------------+ |Connection release|ConnectionW |Release resources of separate | |response (RACK) |Release |retransmission to this terminal. | |reception |Response wait |Enter conclusion of retransmission | | | |into the MC table and conclude the | | | |separate retransmission to this | | | |terminal. | +------------------+--------------+------------------------------------+ continue to the next page Shiroshita, Sano, Takahashi, Yamanouchi [Page 12] INTERNET-DRAFT RMTP V2 Specification September, 1997 Event Definition: State Transition of Separate retransmission phase to BUSY Terminals (cont'nd) +------------------+--------------+------------------------------------+ |Event |Previous state|Action | +------------------+--------------+------------------------------------+ |BUSY reception |ACK/NACK wait |Release resources of separate | | | |retransmission to this terminal. | | | |Proceed to Busy release wait phase | | | |to BUSY terminal. | | +--------------+------------------------------------+ | |Separate |Release resources of separate | | |Retransmission|retransmission to this terminal. | | |wait |Proceed to Busy release wait phase | | | |to BUSY terminal. | +------------------+--------------+------------------------------------+ |TIMEOUT (ex) |ACK/NACK wait |Send POLL packet and after reaching | | | |retry limits, release resources of | | | |separate retransmission to this | | | |terminal, enter into CC table | | | |and conclude the separate | | | |retransmission to this terminal. | | +--------------+------------------------------------+ | |Connection |Release resources of individual | | |Release |retransmission to this terminal, | | |Response wait |enter conclusion of retransmission | | | |into MC table, enter into CC table | | | |and conclude separate retransmission| | | |to this terminal. | | +--------------+------------------------------------+ | |Busy Release |Send POLL packet and after reaching | | |wait |retry limits, release resources of | | | |separate retransmission to this | | | |terminal, enter into CC table | | | |and conclude the separate | | | |retransmission to this terminal. | +------------------+--------------+------------------------------------+ |ABORT reception | all time |Release resources of separate | |(from terminals | |retransmission to this terminal, | | conducting | |enter into CC table and conclude | | separate | |separate retransmission to this | | retransmission) | |terminal. | +------------------+--------------+------------------------------------+ ABORT transmission requests from servers conducting separate retransmission and ABORT reception from terminals other than the said terminals conducting separate retransmission have been included in Multicast main transition. Shiroshita, Sano, Takahashi, Yamanouchi [Page 13] INTERNET-DRAFT RMTP V2 Specification September, 1997 Section in Part1: 3.1.2 Definition of States and Events (terminal side) State definition: terminal side Addition. +-----------+----------------------------------------------------------+ |SUSPENDING |State of suspending communication by receiving SUSP packet| | |from a server | +-----------+----------------------------------------------------------+ Event Definition: terminal side Addition +--------+--------------+----------------------------------------------+ |Event |Previous state|Action | +--------+--------------+----------------------------------------------+ |SUSP |CONNECTED |Proceed to SUSPEND state. | | | | | | +--------------+----------------------------------------------+ | |RELEASE |Send ACK and stay in RELEASE state. | | | | | | +--------------+----------------------------------------------+ | |BUSY |Send BUSY packet and stay in BUSY state. | | | | | | +--------------+----------------------------------------------+ | |other |Notify error internally and stay in the | | | |previous state. | +--------+--------------+----------------------------------------------+ Shiroshita, Sano, Takahashi, Yamanouchi [Page 14] INTERNET-DRAFT RMTP V2 Specification September, 1997 Section in Part1: 3.2 State Transition Table 3.2.1 State Transition Table (Server side) Symbol and Notation are the same as those in part 1. Summary of additions (1) Multicast main transition table An event "Suspending designation" is added to the table. The state which transited by BUSY or Suspending designation is expressed as "Separate retransmission phase BS/SS." (2) State Transition Table of Separate Re-transmissions to BUSY Terminals No addition. (3) State Transition Table of Separate Re-transmissions by Suspending Resume A new state transition table is added. Busy may occur in the separate retransmission. Note) Suspending resume in separate retransmission is out of the scope of this specification. Shiroshita, Sano, Takahashi, Yamanouchi [Page 15] INTERNET-DRAFT RMTP V2 Specification September, 1997 Multicast Main Transition Table (Server side) +---------+------+-----------+------+---------+-----------+------------+ | State|CLOSED|Connection |OPEN |ACK/NACK |Connection |Separate Re-| | |CL |Establish- |OP |wait |Release |transmission| | | |ment | |AW |Response |Phase | | | |Response | | |wait | | |Event | |wait | | |RW | BS/SS | +---------+------+-----------+------+---------+-----------+------------+ |Trans- |error |error |DT |error |error |error | |mission | | |->AW | | | | |request | | | | | | | |(ex) | | | | | | | +---------+------+-----------+------+---------+-----------+------------+ |ACK | | | |mct, cct,| | | |reception| | | |(2)REL | | | | | | | |->(1)AW, | | | | | | | | (2)RW | | | +---------+------+-----------+------+---------+-----------+------------+ |NACK | | | |mct,cct, | | | |reception| | | |(3)REL | | | | | | | |->(1)AW, | | | | | | | | (2)OP, | | | | | | | | (3)RW | | | +---------+------+-----------+------+---------+-----------+------------+ |BUSY | |CACK |cct |cct, | | | |reception| |completed |-> |(3)REL | | | | | |terminals | (1)OP|->(1)AW, | | | | | |cct->CW | (2)BS| (2)OP, | | | | | | | | (3)RW, | | | | | | | | (4)BS | | | +---------+------+-----------+------+---------+-----------+------------+ |Suspend- | | |SUSP, |SUSP, cct| | | |ing | | |cct-> |(3)REL | | | |desig- | | |(1)OP |->(1)AW, | | | |nation | | |(2)SS | (2)OP, | | | | | | | | (3)RW, | | | | | | | | (4)SS | | | +---------+------+-----------+------+---------+-----------+------------+ |Time out | |(not last) | |(not |ce, cct | | | | |(a)->CONN | | last) |->(a)CL, | | | | | | |POLL->AW | (b)OP, | | |(ex) | |(last)ccp, | |(last) | (c)BS | | | | |(1)ce-> | |mct,cct, | | | | | |(1)OP, | |cr->(1)OP| | | | | |(2)CL, | | (2)BS,| | | | | |(3)BS | | (3)CL | | | +---------+------+-----------+------+---------+-----------+------------+ |Separate | | | | | |rr, ap | |retrans. | | | | | |->CL | |completed| | | | | | | |(ex) | | | | | | | +---------+------+-----------+------+---------+-----------+------------+ continue to the next page Shiroshita, Sano, Takahashi, Yamanouchi [Page 16] INTERNET-DRAFT RMTP V2 Specification September, 1997 Multicast Main Transition Table (Server side) (contn'd) +---------+------+-----------+------+---------+-----------+------------+ | State|CLOSED|Connection |OPEN |ACK/NACK |Connection |Separate Re-| | |CL |Establish- |OP |wait |Release |transmission| | | |ment | |AW |Response |Phase | | | |Response | | |wait |BS/SS | |Event | |wait CW | | |RW | | +---------+------+-----------+------+---------+-----------+------------+ |ABORT |error |AB,cct,ap, |AB, |AB,cct, |AB,cct,ap, |AB,cct,ap,rr| |trans- | |rr |cct, |ap,rr |rr |->CL | |mission | |->CL |ap,rr |->CL |->CL | | |request | | |->CL | | | | |(ex) | | | | | | | +---------+------+-----------+------+---------+-----------+------------+ |ABORT | |cct |mct, |mct,cct |cct, |ABORT from | |reception| |->CW |cct |->(1)AW, |(a)(2)rr,ap|terminals | | | | |->OP | (2)RW, |->(a)(1)RW,|other those | | | | | | (3)OP, | (2)CL |conducting | | | | | | (4)BS | (b)(1)RW,|separate | | | | | | | (2)OP |re- | | | | | | | (c)(1)RW,|transmission| | | | | | | (2)BS | | +---------+------+-----------+------+---------+-----------+------------+ |Connec- |CONN |error |error |error |error |error | |tion |->CW | | | | | | |establish| | | | | | | |request | | | | | | | |(ex) | | | | | | | +---------+------+-----------+------+---------+-----------+------------+ |CACK | |cct, | | | | | |reception| |(2)ce, mct | | | | | | | |set-up -> | | | | | | | |(1)CW,(2)OP| | | | | | | |(3)CL,(4)B | | | | | +---------+------+-----------+------+---------+-----------+------------+ |RACK | | | | |cct,(a) | | |reception| | | | |(2)rr,ap | | | | | | | |->(a)(1)RW,| | | | | | | | (2)CL | | | | | | | | (b)(1)RW,| | | | | | | | (2)OP | | | | | | | | (c)(1)RW,| | | | | | | | (2)BS | | +---------+------+-----------+------+---------+-----------+------------+ |BUSY | |CACK | | | | | |release | |completed | | | | | |(RRDY) | |terminals | | | | | |reception| |cct->CW | | | | | |*1 | | | | | | | +---------+------+-----------+------+---------+-----------+------------+ *1: in the case of BUSY packet missing Shiroshita, Sano, Takahashi, Yamanouchi [Page 17] INTERNET-DRAFT RMTP V2 Specification September, 1997 State Transition Table of Separate Retransmissions to Suspending Designated Terminals (Server side) +----------------+---------+-----------+--------+----------+----------+ | State|Separate |ACK/NACK |Connec- |Retrans- |Separate | | |Retrans- |wait |tion |mission |retrans- | | |mission | |Release |to this |mission | | |wait | |Response|terminal |phase | | |SOP |SAW |wait |completed |(to BUSY | |Event | | |SRW |SCL |terminals)| | | | | | | BS | +----------------+---------+-----------+--------+----------+----------+ |Transmission |DT | | | | | |request (ex) |->SAW | | | | | |(initial) | | | | | | +----------------+---------+-----------+--------+----------+----------+ |Transmission |DT | | | | | |request (ex) |->SAW | | | | | |(following) | | | | | | +----------------+---------+-----------+--------+----------+----------+ |ACK | |mct,REL | | | | |reception | |->SRW | | | | +----------------+---------+-----------+--------+----------+----------| |NACK | |mct | | | | |reception | |->SOP | | | | +----------------+---------+-----------+--------+----------+----------+ |BUSY |irr |irr | | | | |reception |->BS |->BS | | | | +----------------+---------+-----------+--------+----------+----------+ |Time out |ccr, irr |(not last) |irr,cct | | | | |->SCL |POLL->SAW |->SCL | | | |(ex) | |(last) | | | | | | |cct,irr | | | | | | |->SCL | | | | +----------------+---------+-----------+--------+----------+----------+ |ABORT reception |irr,cct |irr,cct |irr,cct | | | |(from terminals |->SCL |->SCL |->SCL | | | | conducting | | | | | | | separate | | | | | | | retransmission)| | | | | | +----------------+---------+-----------+--------+----------+----------+ |RACK | | |irr,cct | | | |reception | | |->SCL | | | +----------------+---------+-----------+--------+----------+----------+ Shiroshita, Sano, Takahashi, Yamanouchi [Page 18] INTERNET-DRAFT RMTP V2 Specification September, 1997 3.2.2 State Transition Table (Terminal side) +-----+------+----------+--------+---------+----------+-------+-------+ | |CLOSED|CONNECTED |RELEASE |BUSY |RCV_RDY |SUSPEND|CLS_BSY| | |(CLS) |(CTD) |(REL) | | |(SPD) | | +-----+------+----------+--------+---------+----------+-------+-------+ |CONN |Send |Send |Ignore |Ignore |Ignore |Ignore |CACK | | |CACK |CACK | | | | |(NO)-> | | |->CTD |->CTD | | | | |CLS_BSY| +-----+------+----------+--------+---------+----------+-------+-------+ |DT |Ignore|(not BUSY)|Ignore |Ignore |(BUSY) |Ignore |Ignore | | | |OK/NGentry| | |OK/NGentry| | | | | |Not LAST | | |Not LAST |may be | | | | | ->CTD | | | ->RCV_RDY|recei- | | | | |LAST&allOK| | |LAST&allOK|ved | | | | | Send ACK | | | Send ACK | | | | | | ->REL | | | ->REL | | | | | |LAST & | | |LAST & | | | | | |partly NG | | |partly NG | | | | | | Send NACK| | | Send NACK| | | | | | Retrans. | | | Retrans. | | | | | | CNT++ | | | CNT++ | | | | | | ->CTD | | | ->RCV_RDY| | | +-----+------+----------+--------+---------+----------+-------+-------+ |POLL |Ignore|Send NACK |Send |Send |Send RRDY |Send |Ignore | | | |->CTD |ACK |BUSY |->RCV_RDY |NACK | | | | | |->REL | | |->CTD | | +-----+------+----------+--------+---------+----------+-------+-------+ |REL |Ignore|Ignore |RelProc.|Ignore |Ignore |Ignore |Ignore | | | | |SendRACK| | | | | | | | |->CLS | | | | | +-----+------+----------+--------+---------+----------+-------+-------+ |ABORT|Ignore|RelProc. |RelProc.|RelProc. |RelProc. |RelProc| | | | |->CLS |->CLS |->CLS |->CLS |->CLS | | +-----+------+----------+--------+---------+----------+-------+-------+ |SUSP |Error | |Send ACK|Send BUSY| |Error |Error->| | |->CLS |->SPD |->REL |->BUSY |->SPD |->SPD |CLS_BSY| +-----+------+----------+--------+---------+----------+-------+-------+ |EX- |Never |Send NACK |RelProc.|Never |Send NACK |RelProc|Ignore | |TMOUT|occur |Retrans. | |occur |Retrans. |->CLS | | | | |CNT++ |->CLS |(timer |CNT++ | | | | | |->CTD | |not set) |->CTD | | | +-----+------+----------+--------+---------+----------+-------+-------+ |EX- |->CLS_|Send BUSY |Error |Ignore |Send BUSY |Send |Ignore | |BUSY | BSY |->BUSY |->REL | |->BUSY |BUSY | | +-----+------+----------+--------+---------+----------+-------+-------+ |EX- |Error |Error |Error |Send RRDY|Error |Error |->CLS | |RRDY |->CLS |->CTD |->REL |->RCV_RDY|->RCV_RDY |->SPD | | +-----+------+----------+--------+---------+----------+-------+-------+ |EX- |Error |Send |Send |Send |Send |Send |Ignore | |ABORT| |ABORT |ABORT |ABORT |ABORT |ABORT | | | |->CLS |RelProc. |RelProc.|RelProc. |RelProc. |RelProc| | | | |->CLS |->CLS |->CLS |->CLS |->CLS | | +-----+------+----------+--------+---------+----------+-------+-------+ Shiroshita, Sano, Takahashi, Yamanouchi [Page 19] INTERNET-DRAFT RMTP V2 Specification September, 1997 2.2.6 Optional Information Transfer in Connection Establishment (1) Overview The server passes information about communication environment to the terminals in order to improve multicast communication performance during the connection establishment phase. (2) Protocol Sequence No additional procedure. (3) Packet Format The following parameter is added to the connection establish request packet CONN: - RBOT (Range of BackOff Time): the response delay range for the backoff time algorithm in the terminal. Each terminal waits a randomly selected time in the range between 0 seconds and the RBOT value before transmitting responses to the server. This applies to sending CACK, ACK and RACK. 2.2.7 Abort Request to Individual Terminal (1) Overview The server can terminate individual terminals' communication operation (Abort). (2) Protocol Sequence The server transmits an ABORT packet via unicast to each terminal to be terminated. Upon receipt the terminals should stop its RMTP communication and terminate. (Notes) Two ABORT functions are now defined in RMTP. ABORT defined in the Base Part: The server or a terminal sends this ABORT to its party to notify that a server or a terminal is terminating. ABORT defined in this Extended Part: The server notifies a terminal to terminate its process. The server will continue communication with the rest of the terminals. (3) Packet Format Use ABORT packet by UniCast. Shiroshita, Sano, Takahashi, Yamanouchi [Page 20] INTERNET-DRAFT RMTP V2 Specification September, 1997 3. Packet Format 3.1 Encoding Rules - Each packet has at the front common parameters of packet type, packet length, and connection ID. - Packet lengths are all explicitly encoded, which show the length from packet type to the very end of the packet. - User data is at fixed lengths, and padding is to be placed following the end of the message. - Values indicating sizes, number of times and other parameters are to be encoded as integer toward the right side of the box. - Reserved field and Option field may be prescribed in the future with the expansion of this protocol. As far as this version of the protocol is concerned, this may be freely used within the scope of the application or such protocol as the application may prescribe. - Packets to be used in this protocol are to be transferred as user data of lower layer protocols. When UDP is used in lower layer, it is stored in the data octets portion of the UDP User Datagram and transferred. Shiroshita, Sano, Takahashi, Yamanouchi [Page 21] INTERNET-DRAFT RMTP V2 Specification September, 1997 3.2 Packet Formats Legend UC: transferred by unicast MC: transferred by multicast (1) Data packet (DT) : [MC the first transmission and retransmission ], [UC retransmission and separate retransmission after busy] A server to terminals. 0 8 16 24 31 +----------------------------------+-----------------------------------+ | Packet type (1) | Packet length (byte) | +----------------------------------+-----------------------------------+ | Connection ID | Packet sequence number | +---------------+------------------+-----------------------------------+ | Flag | Retransmission | Message sequence number | | | count | (in large volume delivery) | +---------------+------------------+-----------------------------------+ | User data | | (User data will be at fixed lengths, and padding is to be placed | | following the end of the message.) | +----------------------------------------------------------------------+ Packet type: integer value begins at 1 Connection ID: integer (the same value as that used in CONN) Packet sequence numbers: integer value 1 to 2**16-2 Flag: Separate re-transmission (16th bit is ON) LAST (17th bit is ON) Monitoring start (22th bit is ON) Monitoring stop (23th bit is OFF) Retransmission count: integer value 0 (initial transmission), 1 (1st time re-transmission), 2, --- If message sequence number is not set, user data moves up. (2) ACK : [UC] terminals to a server Notification from terminals to a server of the receiption of messages(all data packets) 0 8 16 24 31 +---------------------------------+------------------------------------+ | Packet type (2) | Packet length | +---------------------------------+-----------------+------------------+ | Connection ID | Retransmission | Reserved | | | count | | +---------------------------------+-----------------+------------------+ |Message sequence number | | (only in large volume delivery) | +---------------------------------+ Shiroshita, Sano, Takahashi, Yamanouchi [Page 22] INTERNET-DRAFT RMTP V2 Specification September, 1997 (3) NACK : [UC] terminals to a server 0 8 16 24 31 +---------------------------------+------------------------------------+ | Packet type (3) | Packet length | +---------------------------------+-----------------+------------------+ | Connection ID | Retransmission | Reserved | | | count | | +---------------------------------+-----------------+------------------+ |Message sequence number | Retransmission requirement | | (only in large volume delivery) | | +---------------------------------+ | |The sequence number of the packet requiring retransmission(16bit x m),| |the scope of the sequence numbers (Number 16 bit, scope symbol[16 bit | |all 1], Number 16 bit), or any combination of the foregoing. | +----------------------------------------------------------------------+ Scope of sequence numbers "10 to 15" is encoded "10 scope symbol 15". If message sequence number is absent, a retransmission requirement field moves up. (4) BUSY Notification (BUSY) : [UC] a terminal to a server 0 16 31 +---------------------------------+------------------------------------+ | Packet type (4) | Packet length | +---------------------------------+------------------------------------+ | Connection ID | +---------------------------------+ (5) BUSY release (RRDY) : [UC] a terminal to a server 0 16 31 +---------------------------------+------------------------------------+ | Packet type (5) | Packet length | +---------------------------------+------------------------------------+ | Connection ID | | +---------------------------------+ | | The sequence number of the packet requiring re-transmission | |(16 bit x m), the scope of the sequence numbers | |(Number 16 bit, scope symbol [16 bit all 1], Number 16 bit), | |or any combination of the foregoing. | +----------------------------------------------------------------------+ (6) ABORT : [MC] a server to terminals, [UC] a terminal to a server 0 16 31 +---------------------------------+------------------------------------+ | Packet type (6) | Packet length | +---------------------------------+------------------------------------+ | Connection ID | +---------------------------------+ Shiroshita, Sano, Takahashi, Yamanouchi [Page 23] INTERNET-DRAFT RMTP V2 Specification September, 1997 (7) State inquiry (POLL) : [UC] a server to a terminal 0 16 31 +---------------------------------+------------------------------------+ | Packet type (7) | Packet length | +---------------------------------+------------------------------------+ | Connection ID | +---------------------------------+ (8) Connection establishment request (CONN) : [MC the first time], [UC retransmission] a server to terminals 0 8 16 24 31 +---------------------------------+------------------------------------+ | Packet type (8) | Packet length | +---------------------------------+-----------------+------------------+ | Connection ID |Protocol ver.(2) | Reserved | +---------------------------------------------------+------------------+ | Message size (byte) | +---------------------------------+------------------------------------+ | Block number | Block size | +---------------------------------+------------------------------------+ | Option (Length is variable in units of bites) | +----------------------------------------------------------------------+ - Protocol ver.: the version number of the protocol - Message size: the size of data given by the application - Block number: the number of packets consisting of the message, which equals to the maximum number of sequence numbers - Block size: the size of user data field in DT, during the session it does not change. - Message sizes at 32 bit may be designated up to about 4.2 Gbytes, and block sizes at 16 bit up to about 65 Kbytes - Option field obeys the following formats. [Format of the option field] Option parameters 0. Application type (file bulk transfer, etc.) 1. Data name (file name, etc.) 2. Data type 16. Size of an original un-divided message (in large volume delivery) 17. Size of a divided message (in large volume delivery) 18. Sequence number of a divided message (in large volume delivery) 32. Scramble mode (Mode: none, decoded by a protocol, decoded by an application) 33. Message size before scrambled (in scramble delivery) 34. Authentication requirement (requirement of authentication code to terminals) Shiroshita, Sano, Takahashi, Yamanouchi [Page 24] INTERNET-DRAFT RMTP V2 Specification September, 1997 0. Application type 0 16 31 +---------------------------------+------------------------------------+ | Parameter type (0) | Parameter length | +---------------------------------+------------------------------------+ | Application type | +---------------------------------+ Parameter type: integer value, Parameter length: integer value in byte Application type: integer value (0: bulk file transfer) 1. Data name 0 16 31 +---------------------------------+------------------------------------+ | Parameter type (1) | Parameter length | +---------------------------------+------------------------------------+ | Data name | +----------------------------------------------------------------------+ Data name: consists of ASCII characters (is up to 256 bytes in length) 2. Data type 0 16 31 +---------------------------------+------------------------------------+ | Parameter type (2) | Parameter length | +---------------------------------+------------------------------------+ | Data type | +---------------------------------+ Data type: integer value 0:ASCII, 1:PDF, 2:RTF, 3:MHEG, 4:ODA, 8:binary (octet-stream) 16:JPEG, 17:MPEG1, 18:MPEG2, 19:MPEG4 3. Range of backoff time 0 16 31 +---------------------------------+------------------------------------+ | Parameter type (3) | Parameter length | +---------------------------------+------------------------------------+ | Range of backoff time | +---------------------------------+ Range of backoff time: integer value in msec 16. Size of an un-devided original message (in large volume delivery) 0 16 31 +---------------------------------+------------------------------------+ | Parameter type (16) | Parameter length | +---------------------------------+------------------------------------+ | Size of an un-devided original message | +----------------------------------------------------------------------+ Size of an un-devided message: integer value in byte, if unknown, set to all 1 Shiroshita, Sano, Takahashi, Yamanouchi [Page 25] INTERNET-DRAFT RMTP V2 Specification September, 1997 17. Size of a devided message (in large volume delivery) 0 16 31 +---------------------------------+------------------------------------+ | Parameter type (17) | Parameter length | +---------------------------------+------------------------------------+ | Size of a devided message | +----------------------------------------------------------------------+ Size of a devided message: integer value in byte 18. Sequence number of a devided message (in large volume delivery) 0 16 31 +---------------------------------+------------------------------------+ | Parameter type (18) | Parameter length | +---------------------------------+------------------------------------+ | Sequence number of a devided message | +----------------------------------------------------------------------+ Sequence number of a devided message: integer value 1, 2, --- 32. Scramble mode 0 16 31 +---------------------------------+------------------------------------+ | Parameter type (32) | Parameter length | +---------------------------------+------------------------------------+ | Scramble mode | +---------------------------------+ Scramble mode: integer value, no scrambled 0, decoded by a protocol 1, decoded by an application 2 33. Real message size (in scramble delivery) 0 16 31 +---------------------------------+------------------------------------+ | Parameter type (33) | Parameter length | +---------------------------------+------------------------------------+ | Real message size | +----------------------------------------------------------------------+ Real message size: integer value in byte 34. Authentication requirement (requirement of authetication code to terminals) 0 16 31 +---------------------------------+------------------------------------+ | Parameter type (34) | Parameter length | +---------------------------------+------------------------------------+ | Authentication requirement | Random value (8 Bytes) | +---------------------------------+ | | | | | +----------------------------------------------------------------------+ Authentication requirement: integer value, Not required 0, Required 1 Randome value: integer value, 8 bytes in length Shiroshita, Sano, Takahashi, Yamanouchi [Page 26] INTERNET-DRAFT RMTP V2 Specification September, 1997 256 or later. Application specified parameter 0 16 31 +---------------------------------+------------------------------------+ | Parameter type (X) X: 256 --- | Parameter length | +---------------------------------+------------------------------------+ | User defined parameter(s) | | | +----------------------------------------------------------------------+ User defined parameters: which are used for and specified by the user application. The length and number of parameters, and nesting format are up to the user application. Mutual agreements about these parameters must be needed in advance. (9) Connection establishment response (CACK):[UC] terminals to a server 0 16 31 +---------------------------------+------------------------------------+ | Packet type (9) | Packet length | +---------------------------------+------------------------------------+ | Connection ID | Response | | | (Yes:integer value 0, No: 1) | +---------------------------------+------------------------------------+ | Option | | | +----------------------------------------------------------------------+ - Option field obeys the following formats. [Format of the option field] 0. Receiver name 0 16 31 +---------------------------------+------------------------------------+ | Parameter type (0) | Parameter length | +---------------------------------+------------------------------------+ | Receiver name | +---------------------------------+ Receiver name: ASCII/JIS8 (up to 32 Bytes in length, and the length of each terminal name may not be the same) 1. Authentication ID 0 16 31 +---------------------------------+------------------------------------+ | Parameter type (1) | Parameter length | +---------------------------------+------------------------------------+ | Authentication ID | +----------------------------------------------------------------------+ Authentication ID: integer value (128 bits) Authentication ID is calculated by MD5 whose input is "Receiver name + random value G (8 Bytes) notified in CONN packet + pre-distributed key K (8 Bytes)" Shiroshita, Sano, Takahashi, Yamanouchi [Page 27] INTERNET-DRAFT RMTP V2 Specification September, 1997 (10) Connection release request (REL) : [MC after multicast transmission and retransmission], [UC after unicast retransmission] a server to terminals 0 16 31 +---------------------------------+------------------------------------+ | Packet type (10) | Packet length | +---------------------------------+------------------------------------+ | Connection ID | +---------------------------------+ (11) Connection release response (RACK): [UC] terminals to a server 0 16 31 +---------------------------------+------------------------------------+ | Packet type (11) | Packet length | +---------------------------------+------------------------------------+ | Connection ID | +---------------------------------+ (12) Flow control measurement report packet (FREPO): [UC] terminals to a server 0 16 31 +---------------------------------+------------------------------------+ | Packet type (12) | Packet length | +---------------------------------+------------------------------------+ | Connection ID | Sequence number of DT[st] | +---------------------------------+------------------------------------+ | Sequence number of DT[en] | The number of receipt DTs (4bytes) | +---------------------------------+------------------------------------+ |The number of receipt DTs(contnd)| +---------------------------------+ Sequence number of DT[st]: The sequece number of DT with monitoring start bit ON, integer value Sequence number of DT[en]: The sequece number of DT with monitoring start bit OFF, integer value The number of receipt DTs: The amount of receipt DTs from DT[st] reception to DT[en] reception, integer value (14) Suspend notification packet (SUSP): [UC] a server to terminals 0 16 31 +---------------------------------+------------------------------------+ | Packet type (14) | Packet length | +---------------------------------+------------------------------------+ | Connection ID | +---------------------------------+ Shiroshita, Sano, Takahashi, Yamanouchi [Page 28] INTERNET-DRAFT RMTP V2 Specification September, 1997 References [SS96] Shiroshita, T., Sano, T., Takahashi, O., Yamashita, M., Yamanouchi, N., and Kushida, T., Performance evaluation of reliable multicast transport protocol for large-scale delivery, IFIP Fifth International Workshop on Protocols for High-Speed Networks (PfHSN'96), pp. 149-164, Oct. 1996. [ST96] Shiroshita, T., Takahashi, O., and Masahide, Y., Integrating Layered Security into Reliable Multicast, Proceedings of the 3rd International Workshop on Protocols for Multimedia Systems (PROMS'96), Oct. 1996. [SS97] Sano, T., Shiroshita, T., Takahashi, O., Yamashita, M., Monitoring-based Flow Controls for Reliable Multicast Protocols and its Evaluation, IEEE International Performance, Computing and Communication Conference (IPCCC'97), Feb. 1997. [SY97] Sano, T., Yamanouchi, N., Shiroshita, T., Takahashi, O., Flow and Congestion Control for Bulk Reliable Multicast Protocols, submitted to IEEE Infocomm'98, August 1997. The above papers and related publications are available at http://isserv.tas.ntt.co.jp/chisho/rmtp/rmtprefe.htm or http://www.trl.ibm.co.jp/rmtp/rmtprefe.htm. Author's Addresses Teruji Shiroshita, Tetsuo Sano, Osamu Takahashi {siro, sano, osamu}@isl.ntt.co.jp NTT Information and Communication Systems Laboratories 1-1 Hikarinooka, Yokosuka, Kanagawa 239 Japan Nagatsugu Yamanouchi yamanouc@trl.ibm.co.jp IBM Research, Tokyo Research Laboratory IBM Japan 1623-14 Shimotsuruma, Yamato, Kanagawa 242 Japan Shiroshita, Sano, Takahashi, Yamanouchi [Page 29]