[Ns-developers] Implementation of an IPv6 stack for NS-3
Tom Henderson
tomh at tomh.org
Fri Jun 27 09:00:39 PDT 2008
Sébastien Vincent wrote:
> Dear ns-3 devs,
>
> We are glad to announce the first release of our functional IPv6 stack
> for ns-3. You can retrieve this implementation from our mercurial
> repository:
>
> hg clone https://svnet.u-strasbg.fr/hg/ns-3-ipv6/
>
> A website about the implementation is available at http://ns3v6.enstb.fr/
>
> This work has been achieved by the University of Strasbourg, France and
> Telecom Bretagne, France.
>
> Our implementation supports basic IPv6 operations (IPv6 address format,
> routing, etc.) and several layer 4 protocols (UDP, TCP and ICMPv6). We
> also support the Neighbor Discovery protocol, which is used in IPv6 for
> address resolution, address autoconfiguration, etc. In addition, we
> provide various IPv6 extensions such as fragmentation, routing header
> type 0 (loose routing) and others. We also implement an IPv6 Raw socket
> which can be used to forge packet and/or forward all IPv6 packets
> received at layer 3 directly to the application.
>
> Our mercurial repository is synchronized daily with the ns-3-dev
> repository. You can find some more details about the implementation at
> the end of this email.
>
> Any feedback is very welcome in order to improve our implementation.
Sebastien,
Mathieu hit on some of these already and I'm sure more will arise as we
start to test it more, but I just had a few higher level questions and
comments:
- I think it will be a great help to researchers to start to make
available and maintain these IPv6 models in the main tree. To that end,
one way we could do this is to isolate some small chunks and schedule
their merge with ns-3-dev. For instance, start with IPv6 address class
definition, then perhaps adding the addresses to interfaces, IPv6
address generation for scripts, basic link-local operations, etc.
The other option would be to try to do a big merge of everything you
have. I think it would be nice to try to do things incrementally
because, as you note, there will need to be more testing with each
portion (e.g., your focus on CSMA NetDevice). How might you propose to
define smaller mergeable chunks?
From my perspective, this is code we will want to merge but we have a
lot in our queue already so we need to try to weave it into the schedule.
- I've noticed (and you mentioned in your email) that you have taken a
non-intrusive approach to the existing codebase. I am curious, though,
whether there are particular aspects that you feel could benefit from
refactoring, or even better API choices to facilitate IPv4 and IPv6
coexistence. One area that leaps out is how to make TCP and UDP
implementations work across address families; it would be nice to come
up with a plan to avoid duplicating those transport protocols entirely.
(I see you are discussing that on IRC even this morning) But I'm also
curious whether there are parts of the simulator where you think that
the design is too slanted towards IPv4.
Mathieu already raised the IPv4 multihoming problem and discussed your
solution for IPv6 (which I think is reasonable), and this is an issue
that I'd like to try to work out once we get past this next release.
So, from my standpoint, it might be nice to work towards a goal of
having both IPv4 and IPv6 addresses on interfaces, with multihoming
support for both, as a focus for next month.
- Also, if you could come up with some priority lists for next steps
identify any area where help is needed or how other researchers might
contribute. Maybe if you could post a wiki page to describe your
evolving roadmap. Particularly, I'm interested in your plans for
routing support, tunneling protocols, and also mobile Ipv6.
Thanks again for initiating all of this work,
Tom
More information about the Ns-developers
mailing list