[Ns-developers] ipv6 plans for ns-3

Tom Henderson tomh at tomh.org
Thu Jul 23 06:42:11 PDT 2009


Sébastien Vincent wrote:
> Hi all,
> 
> Some notes about IPv6 progress.
> 
> I have ported many part of the initial IPv6 work : Ipv6Interface, 
> Ipv6InterfaceAddress, Ipv6Route, NdiscCache, Icmpv6L4Protocol, ... and 
> adapted other ones to fit work that has been done (IPv4 refactoring).
> 
> Now I have a working example that used IPv6 raw socket: ping6 (./waf 
> --run ping6). This implementation is a work in progress, there are 
> additionnal work in routing to manage special multicast address 
> (all-nodes, all-routers, all-hosts) directly in Ipv6RoutingProtocol 
> subclasses instead of Ipv6L3Protocol (especially to allow L4 protocol to 
> send to these addresses).
> 
> You will find current work at https://svnet.u-strasbg.fr/hg/ns-3-ipv6-2nd.

Hi Sebastien,
I reviewed this repo and I think it is probably close to merging.  A few 
comments:

- I noticed that many functions need the gnu style space before 
parentheses (the -pcs option in indent)

- Can you please start a file "ipv6-test.cc" in internet-stack/ and 
start to add some unit tests?  I started this for ipv4-test.cc recently; 
not much there yet but we can add in the future.  In general, we need to 
add unit test support for these protocols.


> 
> Files modified:
> src/helper/internet-stack-helper.cc,h
> => add IPv6 stack directly with IPv4 ones (make dual stack node), I 
> think about adding methods to enable/disable IPv4 or IPv6 stack in order 
> to have IPv4 or IPv6 only node.

I agree with this default, and with the notion of adding options to 
disable each stack in the helper class.

What would you prefer the default to be for address autoconfiguration 
once that piece is enabled?  Do you care about the distinction of host 
vs. router and making routers send advertisements (and configuring a 
helper to auto-configure router prefixes) or just something like the 
static address allocation that is there presently?

> 
> As you see many files have been copy/paste/adapt, but for the routing 
> part I think it will have some changes.
> 
> Next steps are :
> - handle link-local multicast in routing part;
> - handle Router Advertisement (receive, parse, extract prefix and 
> autoconfigured global address with it + timer);
 > - radvd application like;

- I am guessing that the DAD stuff commented out in 
icmpv6-l4-protocol.cc can be enabled once the router advertisements are 
enabled?  Maybe we can avoid to merge these commented out code blocks 
until then.

> - UDP and TCP protocol and implementation (need to be discussed here to 
> avoid duplicate code);

I would like to prioritize the above and aim for having the ability to 
send TCP and UDP on a local link by the next release.  Static unicast 
routing would be a bonus (see below).

> - IPv6 global routing.
> 

I think that global and dynamic routing protocols, autoconfigured 
addresses, and multicast/broadcast could wait until the transport 
protocols and static routing are dealt with.

Other:

- I think that we should explicitly add something equivalent to 
inet_select_addr() for source address selection (both to IPv4 and IPv6). 
  For IPv6 it seems more important given the higher probability of 
multi-address interfaces and RFC 3484.

- regarding the static routing, I would like to avoid just 
copy/paste/edit the Ipv4 static routing, as there have been some 
complaints about its lack of longest prefix matching, and we should 
consider whether the API needs some improvement or extension.

Regards,
Tom


More information about the Ns-developers mailing list