Project

General

Profile

Feature #4578

Make NFD Congestion Control work in ndnSIM

Added by Klaus Schneider over 1 year ago. Updated about 1 year 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

Related to ndnSIM - Task #4672: ndnSIM Congestion Control: Implement BIC and CUBICClosed2018-07-18

History

#1 Updated by Klaus Schneider over 1 year 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.

#2 Updated by Davide Pesavento over 1 year ago

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

#3 Updated by Junxiao Shi over 1 year 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.

#4 Updated by Klaus Schneider over 1 year 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"));

#5 Updated by Klaus Schneider over 1 year ago

Can someone assign this to Eric?

Somehow I can't edit the description.

#6 Updated by Alex Afanasyev over 1 year ago

  • Assignee set to Eric Newberry

#7 Updated by Eric Newberry over 1 year ago

  • Status changed from New to In Progress

#8 Updated by Eric Newberry about 1 year ago

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

#9 Updated by Eric Newberry about 1 year ago

  • Status changed from Code review to Closed

#10 Updated by Klaus Schneider about 1 year ago

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

Also available in: Atom PDF