RFC 3940:Negative-acknowledgment (NACK)-Oriented R...
RFC-Ref

NACK


Click on the red underlined text to get to the source

... The Negative-acknowledgment (NACK) Oriented Reliable Multicast (NORM) ...


... provide for repair transmission of data and/or FEC content in response to NACK messages received from the receiver group. ...
... requirements lead to adaptation of negative acknowledgment (NACK) based protocol schemes when feedback for reliability is required [9 ...
... 9]. NORM is a protocol centered around the use of selective NACKs to request repairs of missing data. NORM provides for the use of packet-level forward error correction ...
... multicast repair requests and repair transmissions [11] in a NACK-oriented protocol. The principal factor in NORM ...


... FEC symbols are sent only in response to receiver repair requests (NACKs) and thus normally little or no additional transmission overhead is imposed due to FEC ...
... stream and need to ascertain contextual information on the current content being transmitted. The NACK process for NORM_INFO will be described later. When the NORM ...
... NORM receivers generate messages of type NORM_NACK or NORM_ACK in ...
... sender. The NORM_NACK messages are generated to request repair of detected data transmission losses. Receivers generally detect losses by tracking ...
... timer-based probabilistic suppression techniques as for NORM_NACK messages to avoid feedback implosion. In order to meet potential application requirements for positive ...


... +--------------------+-----------------------------------------------+ |NORM_NACK | Receiver message used to request repair of | | | missing transmitted content. | ...


... senders of data content, and NORM_NACK and NORM_ACK messages generated by ...
... CMD 3 NORM_NACK 4 NORM_ACK ...
... protection from message "replay" attacks, particularly of NORM_NACK or other feedback messages. In this case, the receiver node ...
... is also referred to as R_max in [19]). This value is used to control timing of the NACK repair process and other aspects of protocol operation as described in this document. The algorithm for encoding ...
... timer value used in the timer-based NORM NACK feedback suppression. This 4-bit field supports values from 0-15 ...
... sender's backoff factor parameter "Ksender". Recommended values and their use are described in the NORM receiver NACK procedure description in Section 5.3. The "gsize" field contains a representation of the sender ...
... join policy where it is desired that newly joining receivers only begin participating in the NACK process upon receipt of new (non-repair) data content. NORM ...
... content is actually available for the associated object. Thus, receivers will NACK for retransmission of NORM_INFO only when it is ...
... Receivers with insufficient storage capability may wish to forego reliable reception (i.e., not NACK for) of the indicated object. In the case of objects of type NORM_OBJECT_STREAM ...
... NORM_INFO for a given NormObject. NORM receivers may NACK for retransmission of NORM_INFO ...
... | | | current repair window in | | | | response to out-of-range NACKs | | | | from receivers. | ...
... applicable receivers will be excited for acknowledgment or repair requests (NACKs) _and_ that the corresponding NACKs are delivered to the sender ...
... receivers will be excited for acknowledgment or repair requests (NACKs) _and_ that the corresponding NACKs are delivered to the sender. If a NORM ...
... the sender. If a NORM_NACK message interrupts the flush process, the sender will re-initiate the flush process after any resulting repair ...
... receivers to self-initiate the terminal NACK process. For finite-size transport ...
... range, they SHALL initiate the NORM NACK Repair Process as described in Section 5.3. If receivers have no outstanding repair needs, no ...
... FEC block and parity content is not yet available. An "explicit-only" repair request consists of NACK content for the applicable "source_block_number" which does not include any requests for parity-based repair. This allows NORM sender applications to "flush" an ongoing stream ...
... resumes stream transmission and passes the end of the pending coding block, subsequent NACKs from receivers SHALL request parity-based repair as usual. Note that the use of a systematic FEC ...
... FEC code is assumed here. Normal receiver NACK initiation and construction is discussed in detail in Section 5.3. The OPTIONAL "acking_node ...
... CMD(SQUELCH) command is transmitted in response to outdated or invalid NORM_NACK content received by the sender. Invalid NORM ...
... sender. Invalid NORM_NACK content consists of repair requests for NormObjects for which the sender is unable or unwilling to provide repair. This ...
... lowest invalid NormTransportId greater than the current "repair window" start from the invalid NACK(s) that prompted the generation of the squelch. The length of the list is limited by the sender's ...
... sender's current repair window and an "invalid object list" beginning with the index of the logically earliest invalid repair request from the offending NACK message which initiated the squelch transmission. ...
... sender SHALL ensure that the list begins with a NormObjectId that is greater than or equal to the lowest ordinal invalid NormObjectId from the NACK message(s) that prompted the NORM_CMD(SQUELCH) ...
... sender's repair window. This insures convergence of the squelch process, even if multiple invalid NACK/ squelch iterations are required. This explicit description of invalid content within the sender ...
... ACK and NORM_NACK messages generated. This allows the sender to evaluate round-trip times ...
... its aggregated repair state from NORM_NACK messages accumulated during a repair cycle and/or congestion control feedback received. ...
... This message is sent only when the sender has received NORM_NACK and/or NORM_ACK ...
... state into a single NormSegmentSize. If this flag is set, receivers should limit their NACK response to generating NACK content only up through the maximum ordinal transmission position ...
... set, receivers should limit their NACK response to generating NACK content only up through the maximum ordinal transmission position (objectId::fecPayloadId) included in the "repair_adv_content". ...
... suppress receiver congestion control responses as well as NACK feedback messages. The field is defined as a header extension so ...
... congestion control feedback within NORM_NACK, NORM_ACK, and NORM ...
... payload" is in exactly the same form as the "nack_content" of NORM_NACK messages and can be processed by receivers for suppression purposes in the same manner, with the ...
... receivers consist of NORM_NACK and NORM_ACK message types. NORM ...
... NORM_ACK message types. NORM_NACK messages are sent to request repair of missing data content from sender transmission ...
... NORM_NACK Message ...
... The principal purpose of NORM_NACK messages is for receivers to request repair of sender ...
... sender content via selective, negative acknowledgment upon detection of incomplete data. NORM_NACK messages will be transmitted according to the rules of NORM_NACK ...
... NACK messages will be transmitted according to the rules of NORM_NACK generation and suppression described in Section 5.3. NORM_NACK ...
... NACK generation and suppression described in Section 5.3. NORM_NACK messages also contain additional fields to provide feedback to the sender(s) for ...
... The payload of NORM_NACK messages contains one or more repair requests for different objects or portions of those objects. The NORM ...
... requests for different objects or portions of those objects. The NORM_NACK message format is as follows: ...
... NORM_NACK Message Format ...
... message header fields serve their usual purposes. The value of the "hdr_len" field for NORM_NACK messages without header extensions present is 6. ...
... NORM sender to which the NORM_NACK message is destined. The "instance_id" field contains the current session identifier ...
... to when the NORM_NACK is transmitted to calculate the value in the "grtt_response" field. This is the "receive_to_response_differential" value used in the following ...
... CMD(REPAIR_ADV} message description, is added to NORM_NACK messages to provide feedback on the receivers current state with respect to congestion control ...
... The "nack_content" of the NORM_NACK message specifies the repair needs of the receiver with respect to the NORM sender ...
... sender's transmission position at the moment the receiver initiates the NACK Procedure as described in Section 5.3. A single NORM Repair Request ...
... payload" field of a NORM_NACK message. Note that a single NORM Repair Request can possibly include multiple "items", "ranges ...
... Form Value NORM_NACK_ITEMS 1 NORM_NACK ...
... NACK_ITEMS 1 NORM_NACK_RANGES 2 NORM ...
... RANGES 2 NORM_NACK_ERASURES 3 A "form" value of NORM ...
... A "form" value of NORM_NACK_ITEMS indicates each repair request item in the "repair_request_items" list is to be treated as an individual request. A value of NORM ...
... in the "repair_request_items" list is to be treated as an individual request. A value of NORM_NACK_RANGES indicates that the "repair_request_items" list consists of pairs of repair request items ...
... ranges of repair needs. And the NORM_NACK_ERASURES "form" indicates that the repair request items are to be treated individually and that the "encoding_symbol_id" portion ...
... +------------------+-------+-----------------------------------------+ |NORM_NACK_SEGMENT | 0x01 | Indicates the listed segment(s) or range ...
... +------------------+-------+-----------------------------------------+ |NORM_NACK_BLOCK | 0x02 | Indicates the listed block(s) or range | | | | of blocks in entirety are required as | ...
... +------------------+-------+-----------------------------------------+ |NORM_NACK_INFO | 0x04 | Indicates that NORM_INFO is required as | | | | repair for the listed object(s). | ...
... +------------------+-------+-----------------------------------------+ |NORM_NACK_OBJECT | 0x08 | Indicates the listed object(s) or range | | | | of objects in entirety are required as | ...
... When the NORM_NACK_SEGMENT flag is set, the "object_transport_id" and ...
... receiver. When the NORM_NACK_BLOCK flag is set, this indicates the receiver is completely missing the indicated coding block(s) and ...
... requires transmissions sufficient to repair the indicated block(s) in their entirety. When the NORM_NACK_INFO flag is set, this indicates the receiver is missing the NORM ...
... "object_transport_id". Note the NORM_NACK_INFO may be set in combination with the NORM_NACK ...
... NACK_INFO may be set in combination with the NORM_NACK_BLOCK or NORM_NACK_SEGMENT ...
... NORM_NACK_BLOCK or NORM_NACK_SEGMENT flags, or may be set alone. When the NORM ...
... SEGMENT flags, or may be set alone. When the NORM_NACK_OBJECT flag is set, this indicates the receiver is missing the entire NormTransportObject ...
... The "fec_payload_id" field is ignored when the flag NORM_NACK_OBJECT is set. ...
... by NORM nodes processing NACK content. The "object_transport ...
... segment being requested. When the NORM_NACK_OBJECT flag is set, the value of the "fec_payload_id" field is ignored. When the NORM ...
... payload_id" field is ignored. When the NORM_NACK_BLOCK flag is set, only the FEC code block identifier ...
... "form" and or "flags" values can be concatenated within a single NORM_NACK message. Additionally, NORM receivers SHALL construct NORM ...
... NORM receivers SHALL construct NORM_NACK messages with their repair requests in ordinal order with respect to "object_transport_id" and "fec_payload ...
... sender to which the NORM_NACK is destined. NORM ...
... NORM_NACK Content Examples: In these examples, a small block, systematic FEC ...
... segments. In Example 1, a list of individual NORM_NACK_ITEMS repair requests is given. In Example 2, a list of NORM_NACK ...
... NACK_ITEMS repair requests is given. In Example 2, a list of NORM_NACK_RANGES requests _and_ a single NORM ...
... RANGES requests _and_ a single NORM_NACK_ITEMS request are concatenated to illustrate the possible content of a NORM_NACK ...
... NACK_ITEMS request are concatenated to illustrate the possible content of a NORM_NACK message. Note that FEC coding block erasure counts could also be provided in each case. However, the ...
... erasure counts are not really necessary since the sender can easily determine the erasure count while processing the NACK content. However, the erasure count option may be useful for operation with other FEC ...
... Example 1: NORM_NACK "nack_payload" for: Object 12, Coding Block 3, Segments ...
... Example 2: NORM_NACK "nack_payload" for: Object 18 Coding Block 6, Segments ...
... The "server_id", "instance_id", and "grtt_response" fields serve the same purpose as the corresponding fields in NORM_NACK messages. And header extensions may be applied to support congestion control ...


... sender, they initiate repair requests with NORM_NACK messages. Note the receivers track the sender ...
... the sender's most recent objectId::fecPayloadId transmit position and NACK _only_ for content ordinally prior to that transmit position. The receivers schedule random backoff timeouts before ...
... receivers schedule random backoff timeouts before generating NORM_NACK messages and wait an appropriate amount of time before repeating the NORM_NACK ...
... NACK messages and wait an appropriate amount of time before repeating the NORM_NACK if their repair request is not satisfied. ...
... NORM_CMD(FLUSH) messages with NORM_NACK transmissions (following the same suppression backoff timeout strategy as for data) if they require further repair. ...
... congestion control feedback in NORM_NACK and NORM_ACK messages. ...
... congestion control purposes is governed using a suppression mechanism similar to that for NORM_NACK messages. ...
... collection can be used to establish a GRTT estimate prior to data transmission and potential NACK operation. In some cases, applications may wish for the sender ...
... FEC encoding blocks and symbols so that appropriate NACKs can be constructed to request repair of missing data. NORM FEC ...
... Receiver NACK Procedure ...
... T_backoff = RandomBackoff(Ksender*GRTTsender, GSIZEsender) To avoid the possibility of NACK implosion in the case of sender or network ...
... SSM operation, the receiver SHALL automatically suppress its NACK and immediately enter the "holdoff" period described below when T_backoff is greater than (Ksender- 1)*GRTTsender. Otherwise, the backoff period is entered and the ...
... receiver MUST accumulate external pending repair state from NORM_NACK messages and NORM_CMD ...
... the backoff time, the receiver SHALL generate a NORM_NACK message only if the following conditions are met: ...
... 2) The repair state accumulated from NORM_NACK and NORM_CMD ...
... receiver's repair needs up to the sender transmission position at the time the NACK procedure (backoff timeout) was initiated. If these conditions are met, the receiver ...
... receiver immediately generates a NORM_NACK message when the backoff timeout expires. Otherwise, the receiver's NACK ...
... NACK message when the backoff timeout expires. Otherwise, the receiver's NACK is considered to be "suppressed" and the message is not sent. At this time, the receiver begins a "holdoff" period ...
... The NORM_NACK message contains repair request content beginning with lowest ordinal repair position of the receiver up through the coding ...
... for the sender. If the size of the NORM_NACK content exceeds the sender's NormSegmentSize, the NACK ...
... NACK content exceeds the sender's NormSegmentSize, the NACK content is truncated so that the receiver only generates a single NORM ...
... receiver only generates a single NORM_NACK message per NACK cycle for a given sender ...
... receiver only generates a single NORM_NACK message per NACK cycle for a given sender. In summary, a single NACK ...
... NACK cycle for a given sender. In summary, a single NACK message is generated containing the receiver's lowest ordinal repair needs. ...
... sender to construct the most efficient repair transmission segment set and enables effective NACK suppression among the receivers even with uncorrelated packet loss ...
... NORM receiver constructs repair requests with NORM_NACK_BLOCK or NORM_NACK ...
... NACK_BLOCK or NORM_NACK_OBJECT flags set as appropriate. The request for retransmission of NORM ...
... NORM_INFO is accomplished by setting the NORM_NACK_INFO flag in a corresponding repair request. ...
... Sender NACK Processing and Response ...
... receivers who have NACKed. Aggregation of multiple NACKs is used to determine an optimal repair strategy when a NACK ...
... NACKs is used to determine an optimal repair strategy when a NACK event occurs. Since receivers initiate the NACK process ...
... when a NACK event occurs. Since receivers initiate the NACK process on coding block or object boundaries, there is some loose degree of synchronization ...
... state of transmitting new data and receives a NACK, it begins a procedure to accumulate NACK repair state ...
... transmitting new data and receives a NACK, it begins a procedure to accumulate NACK repair state from NORM ...
... state from NORM_NACK messages before beginning repair transmissions. Note that this period of aggregating repair state does _not_ ...
... sender aggregates NORM_NACK messages is equal to: T_sndrAggregate = (Ksender+1)*GRTT ...
... aggregation cycle, even if NORM_NACK messages arrive. As described in [4], the value of this sender ...
... If additional NORM_NACK messages are received during this sender "holdoff" period, the sender ...
... sender will immediately incorporate these "late messages" into its pending transmission state ONLY if the NACK content is ordinally greater than the sender's current transmission ...
... group, thus avoiding redundant repair transmissions. After the holdoff timeout expires, a new NACK accumulation period can be begun (upon arrival of a NACK) in concert with the pending repair and new data ...
... timeout expires, a new NACK accumulation period can be begun (upon arrival of a NACK) in concert with the pending repair and new data transmission. Recall that receivers are not to initiate the NACK ...
... NACK) in concert with the pending repair and new data transmission. Recall that receivers are not to initiate the NACK repair process until the sender's logical transmission position ...
... exceeds the lowest ordinal position of their repair needs. With the new NACK aggregation period, the sender repeats the same process of ...
... explicit repair (including parity content) in the formation of their NORM_NACK messages. Before falling back to explicitly satisfying different receivers' repair needs, the sender ...
... individual FEC coding blocks from the NORM_NACK messages received during the repair aggregation period. Then, if the sender ...
... Additionally, the intermediate systems could perform additional NORM_NACK suppression/aggregation as it conducts this repair state ...
... If the sender receives a NORM_NACK message for repair of data it is no longer supporting, the sender generates a NORM ...
... transport_id" from the invalid NORM_NACK messages received since the last NORM_CMD(SQUELCH) ...
... When a NORM sender receives NORM_NACK messages from receivers via unicast ...
... payload portion of this message has content in the same format as the NORM_NACK receiver message payload. ...
... Receivers are then able to perform feedback suppression in the same manner as with NORM_NACK messages directly received from other receivers. Note the sender ...
... receivers. Note the sender does not merely retransmit NACK content it receives, but instead transmits a representation of its aggregated repair state ...
... timestamp is embedded in the feedback message (NORM_NACK or NORM_ACK). The adjustment adds the amount of ...
... GRTT feedback even if no NORM_NACK messages are being sent. If operating without congestion control in a closed network, the NORM ...
... GRTT measurement feedback when NORM_NACK messages are generated since no NORM_ACK messages are ...
... 4]. The same backoff factor K = Ksender MAY be used as with NORM_NACK suppression. However, in cases where the application purposefully specifies a very small Ksender backoff factor to minimize the NACK ...
... NACK suppression. However, in cases where the application purposefully specifies a very small Ksender backoff factor to minimize the NACK repair process latency (trading off group size scalability), it may still be desirable to maintain a larger backoff ...
... congestion control feedback, since there may often be a larger volume of congestion control feedback than NACKs in many cases and congestion control feedback latency ...
... 1) The receiver generates another feedback message (NORM_NACK or other NORM_ACK ...
... 3) When the T_backoff is greater than 1*GRTT. This prevents NACK implosion in the event of sender or network ...
... NORM_ACK or NORM_NACK) or via a NORM_CMD ...
... ACK or NORM_NACK message fields. For NORM-CC ...
... multicast or unicast in the same manner as NORM_NACK messages). The ACK ...
... interrupted in response to negative acknowledgment repair requests (NACKs) received from receivers during the acknowledgment period. The NORM ...
... watermark transmission point. All receivers SHALL interpret the watermark point provided in the request NACK for repairs if needed as for NORM_CMD ...


... IP multicast protocol implementation may be generally subject to, the NACK-based feedback of NORM may be exploited by replay attacks ...


... Adamson, B., Bormann, C., Handley, M., and J. Macker, "Negative-Acknowledgment (NACK)-Oriented Reliable Multicast (NORM) Building Blocks", RFC 3941exp ...



Google
Web
RFC-Ref