On Aug 13, 7:58 pm, Jinxue Zhang <
zhangjin...@gmail.com> wrote:
> 1. A good suggestion about the generic framework.
> At current design, the recieved part needs to manually classify the packets
> for each specific routing protocol from underlying ns-3 packets. It seems
> that we can provide an interface for user to specify which kinds of packets
> relating to the routing protocols should be passed to the ns-3 packets.
> These packets can be identified by port number, for example. Maybe the
> protocol packets are easily to filter, therefore no need for the somehow
> complete netfilter.
Such an interface would be very helpful.
> 2. For the tap device, I am sorry to make a mistake for its functionality at
> this statement, as you pointed out. Many thanks anyway.
> My original meaning is that each tap device, connecting to a single virtual
> machine, acts like a local file descriptor, allowing the upper applications
> as ns-3 to access it as normal file by opening, reading, writing, etc. While
> for the direction of underlying network, the tap handles the network
> packets. So the paper presented that "tap can bridge local file access".
> This explanation is unclear and somehow ambiguous.
Oh, it's now clear to me, what you have meant.
> BTW, I also consider the necessity of the middle tap layer. It seems that
> ns-3 can talk to the network cards in wirtual machines directly. With more
> details, each network card in virtual machine typically links to a virtual
> network card in hosting machine, known as "veth" in OpenVZ, for instance.
> Since now ns-3 can bind to tap device, it can also bind to veth directly,
> hence bypassing the tap layer. This reduction can hopefully save some
> overheads by contrast with current design.
Do you mean binding to veth in CT0 with EmuNetDevice?
It should work fine, but I had some problems with deploying similar
design (I don't remember well though, what the difficulties was
actually).
> 3. The operation-system level virtualization such as OpenVZ and lxc, use the
> clock from hosting machine.
> I have checked the clock source, it uses "tsc", which is said to provide the
> accuracy of microsecond, used by gettimeofday(). Is that reasonable?
As fas as I understand, TSC itself has a very nice resolution (1/
CPU_clock_rate ~ 1ns).
Due to system call overhead the resolution is worse, but looks like
about ~1us.
You're getting times near ~10us, so the resolution is going to be
enough.
It's maybe interesting to measure time via clock_gettime() and also
clock_getres() on your machine.
> 4. Well, I do discover that when the count of transmitted packets reaches to
> a limit, the ns-3 will crash by throwing out a error of likely scheduler.
> However, the elaborate exploration is still needed and the proposal is in
> the way. Any suggestions?
Well, I'm getting the similar behavior (ns-3 crash) on high traffic
loads, but with different symptoms on CSMA and Wifi devices.
Unfortunately, no, I don't have any suggestions right now.