Project

General

Profile

Actions

Feature #1913

closed

RetransmissionSuppression: exponential back-off

Added by Alex Afanasyev about 10 years ago. Updated almost 9 years ago.

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

100%

Estimated time:
6.00 h

Description

Currently, BestRoute v2 strategy uses a fixed time interval to suppress any potential retransmissions from client side.
This is used to prevent accidental/malicious clients from sending Interest end-to-end.

However, fixing the interval removes ability for low-RTT communication to retrieve data when losses happen.

Enabling RTT estimation could be a potential option, but given that this estimation would never be reliable (even if granularity of the estimation was Data packet), multi-path nature of Interest forwarding and caches would make such estimation close to useless).
Another point against using RTT is that the clients themselves be using RTT estimation to detect losses, which results in double-control loop and potentially unstable behavior.

Alternative and simpler approach is to use exponential back-off approach with some short (fixed or "estimated") value.
This way, we still give the end-clients control over the retransmission, but effectively prevent abuse of the mechanism.

Detailed steps for the proposal:

  • Set INITIAL_SUPPRESSION_INTERVAL = 1ms (or even lower)

  • Define SuppressionInfo class derived from StrategyInfo to hold time::Duration and time::steady_clock::TimePoint values:

    class SuppressionInfo
    {
    ...
    public:
        time::Duration suppessionInterval;
        time::steady_clock::TimePoint suppressUntil;
    };
    
  • On incoming interest:

    • if new PIT entry

      • install SuppressionInfo on PIT entry, initializing

        suppessionInterval = INITIAL_SUPPRESSION_INTERVAL

        suppressUntil = time::steady_clock::now() + suppessionInterval

      • proceed with normal Interest processing

    • if retransmission detected

      • retrieve StrategyInfo from PIT entry
      • if suppressUntil larger or equal to time::steady_clock::now() abort processing
      • otherwise update SuppressionInfo values:

        suppessionInterval = 2 * suppessionInterval

        suppressUntil = time::steady_clock::now() + suppessionInterval

      • proceed with normal Interest processing


Related issues 2 (0 open2 closed)

Related to NFD - Bug #2621: Interest aggregation scenario: broken due to retransmission suppression changeClosedEric Newberry

Actions
Blocked by NFD - Task #2377: Abstract retransmission suppression logicClosedJunxiao Shi

Actions
Actions

Also available in: Atom PDF