Project

General

Profile

Actions

Feature #3104

closed

NDNLPv2: GenericLinkService encoding/decoding

Added by Junxiao Shi over 8 years ago. Updated over 8 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Faces
Target version:
Start date:
Due date:
% Done:

100%

Estimated time:
3.00 h

Description

Develop GenericLinkService to support NDNLPv2 hop-by-hop headers.

GenericLinkService shall conform to the GenericLinkService external API given in LinkService-face.hpp.

In this issue, GenericLinkService should encode and decode LpPacket with these fields:

  • NACK
  • extra fields for forwarding: NextHopFaceId, CachePolicy, IncomingFaceId

No other NDNLPv2 features should be supported at this moment.


Related issues 3 (0 open3 closed)

Blocked by NFD - Task #3088: Refactor Face as LinkService+TransportClosedEric Newberry

Actions
Blocks NFD - Feature #3157: Nack scenarioClosedHila Ben Abraham

Actions
Blocked by NFD - Feature #3179: EndpointIdClosedJunxiao Shi

Actions
Actions #1

Updated by Junxiao Shi over 8 years ago

  • Assignee set to Eric Newberry

The design needs to be reviewed before starting implementation.
The initial design reviews will be conducted internally at Arizona.

Hints for design:

  • LinkService-face.hpp "generic LinkService" section, comments after external API
  • LinkService_20150828.pptx "generic link service" section, send path and receive path
  • NDNLPv1 fragmentation and reassembly implementation in NFD

The design needs to answer the following questions:

  • What's the send path and receive path?
    With only the features listed in issue description, it would be simpler than LinkService_20150828.pptx.
  • How to process fragmentation and reassembly when GenericLinkService is working with a multi-access underlying link?
    Hint: reassemble packets from each source address separately
  • Show the public API for classes used in fragmentation and reassembly (as a header).
  • Show the full API for GenericLinkService (as a header).
Actions #2

Updated by Junxiao Shi over 8 years ago

  • Blocked by Task #3088: Refactor Face as LinkService+Transport added
Actions #3

Updated by Junxiao Shi over 8 years ago

Actions #4

Updated by Junxiao Shi over 8 years ago

  • Related to Feature #3171: NDNLPv2 fragmentation and reassembly added
Actions #5

Updated by Junxiao Shi over 8 years ago

  • Estimated time changed from 24.00 h to 12.00 h

Implementation of fragmentation and reassembly building blocks is split into #3171 so that it's individually assignable.

The boundary of fragmentation and reassembly building blocks is:

  • Given an unfragmented packet, MTU, and an estimated header size (for NACK, etc), the fragmentation building block can slice the packet into multiple LpPackets.
    This is similar to nfd::ndnlp::Slicer in NDNLPv1 implementation, except that sequence numbers are not assigned.
  • Given received packets from a single source, the reassembly building block can reassemble packets.
    This is similar to nfd::ndnlp::PartialMessageStore in NDNLPv1 implementation.

#3104 should decide the exact API to be provided by #3171.

When working with a multi-access transport, #3104 should find a way to arrange multiple reassembler instances, one for each remote sender.

Actions #6

Updated by Junxiao Shi over 8 years ago

As mentioned in #3178 note-1, part of this issue should have higher priority:

Enhance packet encoding/decoding procedures from #3088, to have not only Nack, but also LocalControlHeader-equivalent fields.
This includes full unit testing for encoding/decoding.

After this is done, we can continue onto the design of whole GenericLinkService and the implementation of fragmentation.

Actions #7

Updated by Junxiao Shi over 8 years ago

Actions #8

Updated by Junxiao Shi over 8 years ago

  • Description updated (diff)

"higher priority" part described in note-6 is not blocked by #3179, and can start as soon as #3088 is complete.

Documentation requirement is moved to #3173.

Actions #9

Updated by Junxiao Shi over 8 years ago

  • Related to deleted (Feature #3171: NDNLPv2 fragmentation and reassembly)
Actions #10

Updated by Junxiao Shi over 8 years ago

  • Subject changed from NDNLPv2: GenericLinkService to NDNLPv2: GenericLinkService encoding/decoding
  • Description updated (diff)
  • Estimated time changed from 12.00 h to 3.00 h

I'm updating this issue to include only packet encoding/decoding.

Fragmentation and reassembly are split to #3171.

Actions #11

Updated by Eric Newberry over 8 years ago

  • Status changed from New to In Progress
Actions #12

Updated by Eric Newberry over 8 years ago

  • Status changed from In Progress to Code review
Actions #13

Updated by Junxiao Shi over 8 years ago

  • % Done changed from 0 to 100
Actions #14

Updated by Junxiao Shi over 8 years ago

  • Status changed from Code review to Closed
Actions

Also available in: Atom PDF