NFD Forwarding with NACK Junxiao Shi 2015 07

  • Slides: 14
Download presentation
NFD Forwarding with NACK Junxiao Shi, 2015 -07 -19

NFD Forwarding with NACK Junxiao Shi, 2015 -07 -19

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

WARNING: does not support multi-access group Forwarding Pipelines (copied from nack_20140731. pptx) 4

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

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)

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

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.

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.

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

Strategies

Best Route strategy • after receive NACK trigger: 1. if any out-record in PIT

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

see #3011 Broadcast (or 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.