[Ns-developers] NetDevice and ArpIpv4Interface
Mathieu Lacage
mathieu.lacage at sophia.inria.fr
Fri May 16 09:35:18 PDT 2008
On Thu, 2008-05-15 at 11:20 +0100, Gustavo Carneiro wrote:
> NetDevice and ArpIpv4Interface look perfect candidates for merging into a
> single virtual object via AddObject (aka AddInterface). Right now:
>
> 1- ArpIpv4Interface "decorates" (or "wraps") NetDevice;
> 2- The ArpIpv4Interface has one "interface index" at IP level, NetDevice
> has another "interface index" at Node level, and they can be different (I
> was surprised to find out recently);
Yes, because it is possible to have multiple Ipv4 interfaces to map to a
single NetDevice to support multihoming.
> 3- There are two interface lists, one at IP level, one at Node level;
Yes, again, this is by design to support multihoming.
> 4- Checking if a NetDevice supports IP or not is not trivial, as my
> GlobalRoutingManager patch demonstrates:
>
> + // Check if it is an IP interface (could be a pure L2 NetDevice)
> + bool isIp = false;
> + for (uint32_t i = 0; i < ipv4Local->GetNInterfaces (); ++i )
> + {
> + if (ipv4Local->GetNetDevice (i) == ndLocal)
> + {
> + isIp = true;
> + break;
> + }
> + }
> + if (!isIp)
> + {
> + continue;
> + }
> +
>
> I think this design predates the introduction of object interfaces in NS-3.
> If we were designing it now, I think most of us would agree in a better
> design:
>
> 1- ArpIpv4Interface becomes an optional interface of NetDevice
> (AddObject);
> 2- Thus there would be only one interface index for both, and only one
> interface list at Node level (IP can filter out non-IP interfaces).
I don't think that the above could be made to support IP-level
multihoming correctly.
regards,
Mathieu
More information about the Ns-developers
mailing list