NFD Forwarding with NACK Junxiao Shi 2015 07
- Slides: 14
NFD Forwarding with NACK Junxiao Shi, 2015 -07 -19
Overview • A forwarder sends a NACK to its downstream in response to an Interest when it determines that no Data can be returned. • This document describes necessary changes to support NACK.
API summary short-term solution before #2000 • forwarding pipelines • void on. Incoming. Nack(Face& face, const Nack& nack) // entered upon incoming NACK • void on. Outgoing. Nack(const Nack& nack, Face& out. Face) // entered when strategy wants to send a NACK • strategy API • virtual void after. Receive. Nack(const Face& in. Face, const Nack& nack, shared_ptr<fib: : Entry> fib. Entry, shared_ptr<pit: : Entry> pit. Entry) • void send. Nack(shared_ptr<pit: : Entry> pit. Entry, shared_ptr<Face> out. Face, const Nack. Header& header); • PIT • NACKed field on in-record and out-record
WARNING: does not support multi-access group Forwarding Pipelines (copied from nack_20140731. pptx) 4
Interest Loop pipeline reason=Duplicate outgoing NACK • Keep this simple for now: unconditionally send NACK-Duplicate when duplicate Nonce is detected. • In the future, strategy could be invoked, because duplicate Nonce may be multi-path arrival instead of loop.
Incoming NACK pipeline receive NACK PIT match N (drop) Y has outrecord? N (drop) Y mark out-record as NACKed trigger strategy: after receive NACK 6
Outgoing NACK pipeline strategy action: send NACK has inrecord? Y mark in-record as NACKed send NACK N (drop) 7
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. 8
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. 9
Strategies
Best Route strategy • after receive NACK trigger: 1. if any out-record in PIT entry is not yet NACKed, abort these steps 2. combine Nack. Reasons remembered in all out-records (according to #3032 rules) 3. send NACK to all downstreams
see #3011 Broadcast (or Multicast) strategy • TODO, should be similar to best-route
Access strategy • TODO, should try alternate paths upon NACK
NCC strategy • NCC is designed to mimic ccnd 0. 7. 2 which does not support network layer NACK. This strategy will keep unchanged.