220 likes | 373 Views
NFD forwarding pipelines. Junxiao Shi, 2014-01-27. 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. Pipelines. incoming Interest
E N D
NFD forwarding pipelines Junxiao Shi, 2014-01-27
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
Pipelines • incoming Interest • Interest loop • outgoing Interest • Interest rebuff • Interest unsatisfied • incoming Data • Data unsolicited • outgoing Data • PIT delete
Legend in diagrams pipeline building block strategy tables feature face feature
incoming Interest outgoing Interest Interest unsatisfied Interest loop Interest rebuff strategy API broadcast strategy original strategy best route strategy incoming Data outgoing Data Data unsolicited PIT delete
incoming Interest pipeline Interest loop Y detect loop insert InRecord cancel unsatisfy / straggler timers receive Interest PIT insert CS lookup app-chosen nexthops? FIB lookup dispatch to strategy Y Y foreach nexthop outgoing Data outgoing Interest
forward according to app-chosen nexthops • Given incoming Interest, if its local control header contains nexthops chosen by application, forward to these nexthops • Strategy is not used; outgoing Interest pipeline is still used
dispatch incoming Interest to strategy • Given FIB entry and incoming Interest, determine which strategy should process this Interest, and trigger that strategy
outgoing Interest pipeline set PIT unsatisfy timer send Interest pick Interest insert OutRecord timer event Interest unsatisfied
pick outgoing Interest packet • Given PIT entry and nexthop, decide the guiders onthe outgoing Interest • Nonce and InterestLifetimecome 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
Interest rebuff pipeline • Process an Interest that has been decided that it has nowhere to go set PIT unsatisfy timer timer event Interest unsatisfied
Interest loop pipeline • Process an Interest that has been considered looped • This pipeline is currently empty, which means Interest packet is dropped. NACK support could be added here
Interest unsatisfied pipeline invoke PIT unsatisfied callback cancel strategy timers PIT delete
incoming Data pipeline receive Data PIT match Data unsolicited PIT delete timer event Y foreach PIT entry CS insert cancel unsatisfy / straggler timers mark PIT satisfied set PIT straggler timer foreach pending downstream outgoing Data invoke PIT satisfy callback
outgoing Data pipeline traffic manager send Data
Pass-through traffic manager • Goal: provide a traffic manager that does nothing and merely passes Data packet to the next step
Data unsolicited pipeline accept to cache? Y CS insert
PIT delete pipeline cancel strategy timers PIT delete
strategy API • Provide APIs between strategy and other parts of forwarder • triggers: call into strategy • actions: call from strategy • attributes: information exposed to strategy
broadcast strategy • Provide a strategy that sends Interest to all nexthops in FIB entry
original strategy • Provide a strategy that sends Interest to the fastest nexthop in FIB entry, and use incremental adjustment to determine RTO • aka ccnd strategy
best route strategy • Provide a strategy that sends Interest to the first nexthopin FIB entry