NFD Forwarding with Nack Junxiao Shi 2015 09

  • Slides: 14
Download presentation
NFD Forwarding with Nack Junxiao Shi, 2015 -09 -13

NFD Forwarding with Nack Junxiao Shi, 2015 -09 -13

Overview • A forwarder sends a Nack to its downstream in response to an

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&

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 out-record

WARNING: does not support multi-access group Forwarding Pipelines 4

WARNING: does not support multi-access group Forwarding Pipelines 4

Interest Loop pipeline reason=Duplicate send Nack • Keep this simple for now: unconditionally send

Interest Loop pipeline reason=Duplicate send Nack • Keep this simple for now: unconditionally send Nack. Duplicate when duplicate Nonce is detected. • Don't enter outgoing Nack pipeline: in-record isn't inserted yet. • 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 out-record with correct

Incoming Nack pipeline receive Nack PIT match N (drop) Y has out-record with correct Nonce? N (drop) Y mark out-record as Nacked trigger strategy: after receive Nack 6

Outgoing NACK pipeline strategy action: send Nack has inrecord? Y erase in-record send Nack

Outgoing NACK pipeline strategy action: send Nack has inrecord? Y erase in-record send Nack N (drop) 7

Nacked field in PIT out-record • A Nacked field is added to PIT out-record.

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. 8

Strategies

Strategies

Best Route strategy • after receive Interest trigger: • if the Interest is to

Best Route strategy • after receive Interest trigger: • if the Interest is to be rejected, send Nack-No. Route to the downstream

Best Route strategy • after receive Nack trigger: 1. all out-records Nacked => send

Best Route strategy • after receive Nack trigger: 1. all out-records Nacked => send Nacks to all downstreams 2. one out-record not Nacked, which is also a downstream => send Nack to this downstream (#3033 note-10) 3. otherwise => continue waiting • Nack. Reason on outgoing Nack: least severe • Congestion < Duplicate < No. Route

Multicast strategy • TODO, should be similar to best-route

Multicast strategy • TODO, should be similar to best-route

Access strategy • TODO, should try alternate paths upon NACK

Access strategy • TODO, should try alternate paths upon NACK

NCC strategy • NCC is designed to mimic ccnd 0. 7. 2 which does

NCC strategy • NCC is designed to mimic ccnd 0. 7. 2 which does not support network layer NACK. This strategy will keep unchanged.