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