Presentation on theme: "Interest NACK Junxiao Shi, 2014-07-18. Introduction Interest NACK, aka "negative acknowledgement", is sent from upstream to downstream to inform that."— Presentation transcript:
Introduction Interest NACK, aka "negative acknowledgement", is sent from upstream to downstream to inform that Data could not be retrieved in response to an Interest. Interest NACK is useful in forwarding strategy as a explicit signal, for congestion control and other purposes. This document is a proposal for including Interest NACK in NDN-TLV packet format, and in NFD forwarding pipelines.
Interest NACK An Interest NACK is a packet sent by upstream to inform the downstream that Data cannot be retrieved or delivered in response to an Interest. An Interest NACK contains an Interest and a reason code.
Interest in Interest NACK The Interest in an Interest NACK is the Interest that triggers the Interest NACK. After an Interest packet is forwarded from downstream to upstream, the upstream can either return a Data, or return an Interest NACK that contains this Interest. On each point to point link, with absence of packet loss, there is a flow balance between Interests vs Data + Interest NACKs.
Reason in Interest NACK The reason code in an Interest NACK indicates why the upstream wants to send an Interest NACK in response to the enclosed Interest. Commonly used reason codes include Duplicate, Congestion, NoData, Busy, etc (defined in this section)
Reason: Duplicate An Interest NACK with reason code Duplicate informs the downstream that the Interest is a duplicate, because the combination of Name and Nonce is previously seen by the upstream. This means either the Interest is looped, or the Interest has reached the upstream via another path.
Reason: Congestion An Interest NACK with reason code Congestion informs the downstream that there is a congestion on the forwarding path of the Interest. The congestion can occur on the link between downstream and upstream, or on the path from upstream toward the content source(s). The congestion can occur in either direction.
Reason: NoData An Interest NACK with reason code NoData informs the downstream that the upstream has no route to forward the Interest.
Reason: Busy An Interest NACK with reason code Busy informs the downstream that the Interest has reached a producer, but the producer is too busy to handle this Interest.
Interest NACK is not an Interest An Interest is intended to retrieve some content. An Interest NACK is to inform the downstream about a problem, and upstream is not expecting a response from the downstream.
Interest NACK is not a Data A Data is a piece of content in response to an Interest, that should be forwarded toward the consumer. An Interest NACK is in response to an Interest, but it's a hop-by-hop message that is useful in the network, but useless for the consumer.
Interest NACK is a third packet type The processing path for Interest NACKs is different from either Interest or Data, so it should be a third packet type.
Interest NACK is unsigned Interest NACK is hop-by-hop, so it cannot be used to confuse a faraway node. Malicious nodes can gain nothing by sending bogus Interest NACKs. Sending an Interest NACK informs the downstream that the upstream doesn't work for the Interest, while the malicious node may as well silently drop the Interest.
Incoming NACK pipeline PIT match receive NACK trigger strategy: after receive NACK (drop) mark out-record as NACKed N has out- record? Y (drop) N Y
Outgoing NACK pipeline send NACK strategy action: send NACK mark in-record as NACKed has in- record? (drop) N Y
NACKed field in PIT in-record A NACKed field is added to PIT in-record. This field is cleared in Incoming Interest pipeline. This field is set to the reason code in Outgoing NACK pipeline. The purpose of this field is to help forwarding strategy make decisions.
NACKed field in PIT out-record A NACKed field is added to PIT out-record. This field is cleared in Outgoing Interest pipeline. This field is set to the reason code in Incoming NACK pipeline. The purpose of this field is to help forwarding strategy make decisions.