Upload
eugenia-roberts
View
213
Download
0
Embed Size (px)
Citation preview
1
Link ServiceJunxiao Shi, 2015-08-28
2
Outline
• Introduction• Design of generic link service
3
Introduction
4
What is Link Service
• Link Service is a part in NFD Face System providing face features universal to all socket types, such as:• NDNLP• face authentication• network-layer counters
5
Face architecture with LAL
Face
Forwarding
Socket
generic link service
vehicular link service
UNIX transport
Ethernet transport
UDP transport
TCP transport
network layer packet: Interest, Data, Nack
TLV Block
UNIX/TCP stream, Ethernet frame, UDP packet
6
LinkService needs to be modular• Network environment dictates what features are
needed in LinkService.• LinkService designed for routers, workstations, and
mobile phones is unlikely to work well in vehicular networks or sensor networks.• Even if all environments can agree on using NDNLPv2 as
the universal packet format, different NDNLPv2 features (defined or to-be-defined) would be enabled.
7
LinkService needs to be modular
Generic LinkService• fragmentation• failure detection• reliability improvement• …
Vehicular LinkService• over-earing implicit-ack• retransmission
cite: G. Pau 2013-08-11 AsiaFI
8
LinkService needs to be modular• A single LinkService that covers all possible
NDNLPv2 features would be extremely complicated.• NDNLPv2 is designed to operate as a single layer.
Interaction between features must be carefully planned, to allow them work together.• eg. BFD feature transmits an IDLE packet only if no packet has
been transmitted by other features in Tidle.• It's much easier to design a LinkService for a selected
subset of NDNLPv2 features, because there are less interactions to consider.
9
Generic LinkService
10
GenericLinkService
• The GenericLinkService is a link service design that covers these NDNLPv2 features:• indexed fragmentation• ARQ• BFD• HMAC• NACK• extra fields for forwarding: NextHopFaceId, HopLimit,
CachePolicy, IncomingFaceId
• Every feature can be individually turned on or off.
11
Send Path
encode net packet
Interest/Data/Nack+ Tags for:• HopLimit• IncomingFaceId
Block of network layer packet+ LpPacket header (for first fragment) with:• HopLimit• IncomingFaceId• Nack
fragmentation
assign Sequence HMAC
LpPackets without Sequence
piggyback
ARQ
Repeat reQuest
transport
BFD
IDLEIDLE
cache
signed LpPacket
suppress IDLE
cached LpPacket retransmission
12
Receive Path
HMAC
reassembly
BFD
transport
ARQ
keep alive detect gap; Repeat reQuest
verified LpPacket
decode net packet
Block of network layer packet+ LpPacket of first fragment, contains:• Nack• NextHopFaceId• HopLimit• CachePolicy
Interest/Data/Nack+ Tags for:• NextHopFaceId• HopLimit• CachePolicy
13
Intermediate Packet Structurestruct Packet { union { shared_ptr<Interest> interest; shared_ptr<Data> data; shared_ptr<Nack> nack; } shared_ptr<Block> netPacketWire; size_t fragStartOffset; shared_ptr<LpPacket> lpPacket; NetworkAddress localAddr; NetworkAddress remoteAddr;} // note: This is a conceptual representation, not a real C++ struct.
14
Intermediate Packet Structure• In the send path:• The original network layer packet is referenced for LP
features to inspect.• Forwarding can control localAddr and remoteAddr (if
face represents L2 interface, and socket is capable of setting localAddr and remoteAddr).
• In the receive path:• After reassembly, the LpPacket for the first segment is
reference for LP features to inspect.• localAddr and remoteAddr are passed from socket layer
to forwarding for informational purpose.