[Ns-developers] Google SoC 2009 - Modeling routers
Lorenzo De Carli
lorenzo at cs.wisc.edu
Fri Mar 27 10:14:28 PDT 2009
Adrian,
thanks for your quick reply. I still have a couple more doubt...
> Partially correct. But this is not sufficient to make a router. There
> are several issues cannot be addressed solely by the NetDevice, for
> example, routing logic is not in a NetDevice because a NetDevice is
> virtually connected to a physical link, which means a packet there is
> in post-routing stage. Also, because a NetDevice is a L2 device,
> suppose the routing is in L3, which means it is not appropriate to do
> there.
Thanks for the clarification. So, currently the IPv4 infrastructure is
implemented in IPv4L3Protocol, but queues are implemented in NetDevices
(layer II). Maybe the best way to approach this problem would be to
extend NetDevice adding input queues, and then to create a new Router
object sitting between NetDevice and Ipv4L3Protocol. This object could
then add custom delays (depending on the router model) before and after
the routing decision is made, decide which input packets are to be
serviced first, etc... As for queuing algorithms, I think they will be
easily integrated in this model. Since they are implemented by extending
the Queue class, it should be enough to configure the NetDevices to use
a particular kind of queue instead of another (e.g. RED instead of the
basic FIFO).
I hope all this makes sense... please stop me if I am going in the wrong
direction :-)
> For a router, some of the features that current NS3 lacks are (1)
> delay in route processing. Only queueing delay is modelled in NS3 but
> processing delay is not. (2) input buffering. Currently, when a packet
> arrive at a router, it is immediately routed and put into an output
> buffer. But sometimes, having input buffer is easier to do some
> functions. An example is the Ethernet PAUSE mechanism. When a Ethernet
> NetDevice want to pause its uplink to cease it from sending more
> packets/frames, it is not trivial to do in output buffering.
>
> Besides the paper you mentioned, I think the paper about "Click" by
> Kohler et al can also give an overview of what shall be done by a
> router. Of course, if you are familiar with Cisco routers, you can
> think about what they do can't be done by NS3. Some starting point
> might be: 1. Can we route IP packets in parallel with MPLS frames? 2.
> Can we reassemble fragments in the middle of a route (for use in, e.g.
> firewall node)? 3. Can we do packet filtering, or QoS in NS3? 4. Can
> we do RED/ECN in NS3?
>
> My point is not to ask you to implement these, but whether the current
> architecture allows one to easily do these.
Summarizing what you said, I think there are two possible directions for
a GSoC project:
1) Given the current NS-3 architecture, provide support for implementing
detailed models of routers and other devices. I say "other devices"
because, for example, the PAUSE mechanism that you mentioned works at
layer II and could be useful not only for routers but also for switches.
Another issue is input queue management: as I said before, I think the
best place to implement those would be the NetDevice object. However, if
QoS is needed the layer III should be able to "peek" into the input
queues and choose the next best packet to forward. So maybe there is
need for a more complex interface between layer II and III.
2) Another possible GSoC project would be to implement a detailed router
model. The multi-server/multi-queue model from Infocom 2008 is nice but
lacks some features. Besides implementing the model, it would be
interesting to try to extend it, for example adding diffserv support.
Ok, that's a lot of stuff :-D. My question now is: what is more useful
for ns-3 right now? Working on the architecture in general on a specific
router model? Maybe there is enough time to work on both aspects... but
I think I need some advice on this point. In other words, what would it
be a realistic goal for the GSoC project?
Another doubt I have is the level of detail needed for the proposal. For
example, are some general idea about which model to implement, and how
to do it, enough? Or do I have to go more into details?
Thanks in advance,
Lorenzo
More information about the Ns-developers
mailing list