Project

General

Profile

Actions

Feature #4578

closed

Make NFD Congestion Control work in ndnSIM

Added by Anonymous almost 6 years ago. Updated over 5 years ago.

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

100%

Estimated time:
3.00 h

Description

The current NFD congestion detection doesn't work in ndnSIM, since ndnSIM doesn't use the regular TCP, UDP, or Unix faces.

We can discuss how to fix this below.


Related issues 1 (0 open1 closed)

Related to ndnSIM - Task #4672: ndnSIM Congestion Control: Implement BIC and CUBICClosed07/18/2018

Actions
Actions #1

Updated by Anonymous almost 6 years ago

From our email discussion (Davide's answer to me):

On Thu, Apr 12, 2018 at 6:21 PM, Klaus Schneider klaus@cs.arizona.edu wrote:

Forwarding as a more general question:

Is there some fundamental reason why the congestion control scheme
implemented in NFD wouldn't work (at least out of the box) in ndnSIM?

Yes. ndnSIM doesn't use NFD's faces because, well, it's a simulator,
so it obviously cannot use regular OS sockets.

I have two guesses:

  1. Maybe it's the way ndnSIM handles the face/transport classes for TCP, UDP, and Unix sockets? Do we need add support for ndnSIM faces here?

Yep. NetDeviceTransport needs to gain an implementation (override) of
the virtual function(s) that were added for congestion control.

  1. Is NDNLP fully supported in ndnSIM, i.e., the way congestion marks are carried from link to link?

It should be, but I'm not sure.

Actions #2

Updated by Davide Pesavento almost 6 years ago

  • Project changed from NFD to ndnSIM
  • Parent task deleted (#1624)
Actions #3

Updated by Junxiao Shi almost 6 years ago

  • Tracker changed from Task to Feature
  • Start date deleted (04/12/2018)
  • Estimated time set to 3.00 h

NetDeviceTransport needs to gain an implementation (override) of the virtual function(s) that were added for congestion control.

There are two functions:

The implementation is trivial, and can qualify as a beginner task.

Is NDNLP fully supported in ndnSIM, i.e., the way congestion marks are carried from link to link?

Yes, see ndnsim:commit:5ea3322623a0550799431f25b2fc4e7e4df5c046.

Actions #4

Updated by Anonymous almost 6 years ago

Thanks for the clarification.

But I think a much cleaner solution would be to provide a queue class that does the congestion marking, as I did with "codel-queue2" in my simulation code: https://github.com/schneiderklaus/ns-3-dev/tree/ndnSIM-v2/src/internet/model

The current NFD code is basically a poor CoDel implementation, as a workaround since we can't access or change the queuing discipline of NFD routers.

In ndnSIM, it's much easier to change the queuing discipline and using the actual CoDel code should improve performance.

With this queue implementation, the only thing the user needs to do is to change the default queue of all netdevices:

  Config::SetDefault ("ns3::PointToPointNetDevice::TxQueue", StringValue ("ns3::CoDelQueue2"));
Actions #5

Updated by Anonymous almost 6 years ago

Can someone assign this to Eric?

Somehow I can't edit the description.

Actions #6

Updated by Alex Afanasyev almost 6 years ago

  • Assignee set to Eric Newberry
Actions #7

Updated by Eric Newberry almost 6 years ago

  • Status changed from New to In Progress
Actions #8

Updated by Eric Newberry over 5 years ago

  • Status changed from In Progress to Code review
  • % Done changed from 0 to 100
Actions #9

Updated by Eric Newberry over 5 years ago

  • Status changed from Code review to Closed
Actions #10

Updated by Anonymous over 5 years ago

  • Related to Task #4672: ndnSIM Congestion Control: Implement BIC and CUBIC added
Actions

Also available in: Atom PDF