Junxiao Shi 20150814 1 Overview Forwarding consists of pipelines and strategies Pipeline a series of steps that operate on a packet or a PIT entry Strategy a decision maker on whether when and where to forward an Interest ID: 513670
Download Presentation The PPT/PDF document "NFD forwarding pipelines" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
NFD forwarding pipelines
Junxiao Shi, 2015-08-14
1Slide2
Overview
Forwarding consists of pipelines and strategiesPipeline: a series of steps that operate on a packet or a PIT entry
Strategy: a decision maker on whether, when, and where to forward an Interest
2Slide3
Pipelines
incoming InterestContentStore
miss
ContentStore
hit
Interest loop
outgoing Interest
Interest rejectInterest unsatisfiedInterest finalizeincoming DataData unsolicitedoutgoing Data
3Slide4
Legend in diagrams
4
building block
pipeline
tables feature
strategy
face featureSlide5
5
incoming Interest
incoming Data
outgoing Interest
outgoing Data
strategy API
ncc
strategy
broadcast strategy
Interest reject
Interest unsatisfied
Interest loop
best route strategy
Data unsolicited
Interest
finalize
ContentStore
miss
ContentStore
hit
access strategySlide6
Pipelines Overall Workflow
6
incoming Interest
incoming Data
outgoing Interest
outgoing Data
after receive Interest
Interest reject
Interest unsatisfied
Interest loop
Data unsolicited
before satisfy Interest
before expire Interest
unsatisfy
timer
straggler
timer
Interest
finalize
ContentStore
miss
ContentStore
hitSlide7
incoming Interest pipeline
7
CS lookup
PIT insert
cancel
unsatisfy
& straggler timer
Y
receive Interest
detect
duplicate Nonce
Interest loop
Y
is pending?
Y
violates /
localhost
?
Y
(drop)
ContentStore
miss
ContentStore
hit
N
N
N
NSlide8
detect duplicate Nonce
If any InRecord or
OutRecord
contains the same Nonce as the incoming Interest, or the Name and Nonce of the incoming Interest appear in Dead Nonce List, a duplicate Nonce is detected.
If the duplicate Nonce is found in
InRecord
only, this is a multi-path arrival, and not a loop.
If the duplicate Nonce is found in OutRecord or Dead Nonce Table, this is either a multi-path arrival or a loop, and these two reasons are indistinguishable.
Nonce is later recorded on an
InRecord
.
8Slide9
Interest loop pipeline
Process an Interest that has been considered loopedThis pipeline is currently empty, which means Interest packet is dropped. NACK could be added here
9Slide10
ContentStore miss pipeline
This pipeline is entered when an incoming Interest
is pending (so
ContentStore
lookup is unnecessary), or
is miss from
ContentStore
This pipeline will start forwarding the Interest10Slide11
ContentStore miss pipeline
11
FIB
lookup with Interest Name
dispatch to strategy
insert
InRecord
set PIT
unsatisfy
timer
Interest unsatisfied
timer event
in producer region?
has Selected
Delegation?
FIB
lookup with
SelectedDelegation
choose and set
SelectedDelegation
Y
N
N
Y
FIB
lookup with first Delegation Name
in default-free zone?
Y
N
has Link object?
N
YSlide12
set PIT unsatisfy
timerGiven PIT entry, set an
unsatisfy
timer which fires when
InterestLifetime
expires for all unexpired
InRecords
When the unsatisfy timer fires, Interest unsatisfied pipeline is entered
12Slide13
determine whether in producer region
Input:regionNames
:
the router's
region names
,
from configuration
interestAlgorithm:foreach delegation in Link:
foreach
regionName
in
regionNames
:if delegation Name is a prefix of region
Name, return true and abort these stepsreturn falseNote:We consider all delegations, not just SelectedDelegation
, to maximize flexibility. This is cheap because there's no table lookup.
13Slide14
determine whether in default-free zone
Input:interest, with Link but without
SelectedDelegation
FIB lookup result for the first delegation
Algorithm:
if FIB lookup result is the root entry (
ndn
:/), and the entry has at least one nexthop record, return false
return true
Note:
FIB lookup will never return "no match", because the FIB always has a root entry, but this entry can have no
nexthop
record.
We consider only the first delegation, to minimize table lookup cost. Checking all delegations probably gives better results, but it requires too many lookups.
14Slide15
choose and set SelectedDelegation
Input:
interest, with Link but without
SelectedDelegation
FIB
Algorithm:
foreach
delegation in Link, sorted by increasing Preferencelookup FIB with delegation Name
if a match (with non-zero
nexthop
records) is found, insert
SelectedDelegation
field with the index of this delegation, return the match, and abort these steps
lookup FIB with Interest NameNote:
This is the only operation that requires multiple table lookups, but it happens only once on an Interest's path at the first default-free router.
15Slide16
16
outgoing Data
set PIT
straggler
timer
timer event
Interest
finalize
ContentStore
hit pipelineSlide17
dispatch incoming Interest to strategy
Given FIB entry and incoming Interest, determine which strategy should process this Interest, and trigger that strategy
17Slide18
outgoing Interest pipeline
18
insert
OutRecord
pick Interest
send Interest
violates /
localhost
?
Y
(drop)
violates /
localhop
?
(drop)
Y
N
NSlide19
pick outgoing Interest packet
Given PIT entry and nexthop, decide the guiders on the outgoing Interest
Nonce and
InterestLifetime
come from an
InRecord
with longest remaining lifetime, however
InRecord with same Face as the nexthop
cannot be used
InterestLifetime
is carried from the original packet without deducting the time elapsed
Scope is the most relaxed among all unexpired
InRecords
The last incoming Interest is pickedThis is a simple choice until we understand the effect of guiders better
19Slide20
Interest reject pipeline
Process an Interest that has been decided that it has nowhere to go
20
set PIT straggler timer
timer event
cancel
unsatisfy
& straggler timer
Interest
finalizeSlide21
Interest unsatisfied pipeline
21
invoke PIT unsatisfied callback
Interest
finalizeSlide22
Interest finalize pipeline
22
PIT delete
Dead Nonce List insert
need Dead Nonce List insert?
Y
NSlide23
Dead Nonce List insert
Dead Nonce List insertion is needed if:Interest is
unsatisified
,
OR
Interest
has
MustBeFresh=yes and Data FreshnessPeriod is shorter than 6 secondsNonces in OutRecords
are inserted to Dead Nonce List.
23Slide24
incoming Data pipeline
24
PIT match
receive Data
Y
CS insert
outgoing Data
cancel
unsatisfy
& straggler timer
mark PIT satisfied
set PIT straggler timer
foreach
PIT entry
foreach
pending
downstream
Data unsolicited
timer event
violates /
localhost
?
Y
(drop)
invoke PIT satisfy callback
Interest
finalize
Dead Nonce List insert
need Dead Nonce List insert?
Y
N
N
NSlide25
set PIT straggler timer
Given PIT entry, set a straggler timer which fires after a short timeT
straggler
= 100ms
When the straggler timer fires, PIT entry is deleted
The purpose of retaining PIT entry for a short time is to facilitate loop detection and to collect measurement for non-fastest
upstreams
25Slide26
Data unsolicited pipeline
26
accept to cache?
Y
CS insert
NSlide27
outgoing Data pipeline
27
traffic manager
send Data
violates /
localhost
?
Y
(drop)
NSlide28
Pass-through traffic manager
Provide a traffic manager that does nothing and merely passes Data packet to the next step
28