Contents: Disclaimer: This log is initially intended to be used inside my research group, in particular between me and my supervisor only. Anyway, I am glad that this log is useful to several visitors. However, I am very hectic with my research and probably not the right person that you would ask about ns2 installation problems. It would be better to post the questions to ns-2 mailing list. I also ask a few questions there. Anyway, I normally answer sensible e-mails when I have some slots. For any comments or any mistakes spotted, please e-mail me. It would be very appreciated.
General note: ns-2 is compiled smoothly by gcc.2.9x.x included with the old version of Linux OS. However, for gcc 3.x.x, included with Redhat version 7 (up), there are several errors. I log quite a few of them here (that would be most of errors).
- gcc -c -O2 -DNO_TK -DNDEBUG -DUSE_SHM -DHAVE_LIBOTCL1_0A4 -DHAVE_OTCL_H
- -DHAVE_LIBTK8_0 -DHAVE_TK_H -DHAVE_LIBTCL8_0 -DHAVE_TCL_H -DSTDC_HEADERS=1
- -DHAVE_STRING_H=1 -DHAVE_SNPRINTF=1 -DHAVE_STRTOQ=1 -DHAVE_STRTOLL=1
- -DSIZEOF_LONG=4 -DHAVE_INT64=1 -DHAVE_TCL_H=1 -DHAVE_LIBTCL8_0=1
- -DHAVE_TK_H=1 -DHAVE_LIBTK8_0=1 -DHAVE_OTCL_H=1 -DHAVE_LIBOTCL1_0A4=1 -I.
- -I/ns-allinone-2.1b6/otcl-1.0a5 -I/ns-allinone-2.1b6/tkbox/include -I/ns-allinone-2.1b6/tclbox/include -o tracedvar.o tracedvar.cc
- tracedvar.cc: In method `char *TracedInt::value (char *, int)':
- tracedvar.cc:102: `abort' undeclared (first use this function)
- tracedvar.cc:102: (Each undeclared identifier is reported only once for
- each function it appears in.)
- make: *** [tracedvar.o] Error 1
- -I/home/csunix/nuk/ns-allinone-2.1b6/otcl-1.0a5
- -I/home/csunix/nuk/ns-allinone-2.1b6/tkbox/include
- -I/home/csunix/nuk/ns-allinone-2.1b6/tclbox/include -o trace.o trace.cc
- In file included from trace.cc:44: tfrc.h:112: friend declaration requires
- class-key, i.e. `friend class
- TfrcSendTimer' tfrc.h:113: friend declaration requires class-key, i.e.
- `friend class TfrcNoFeedbackTimer' make: *** [trace.o] Error 1 Ns make failed!
- c++ -c -I. -I/home/csunix/nuk/ns-allinone-2.1b6/tclcl-1.0b9 -I/home/csunix/nuk/
- ns-allinone-2.1b6/otcl-1.0a5 -I/home/csunix/nuk/ns-allinone-2.1b6/tkbox/include -I/home/csunix/nuk/ns-allinone-2.1b6/tclbox/include -o utils.o utils.cc
- utils.cc: In function `int saccept(int)':
- utils.cc:360: cannot convert `int*' to `socklen_t*' for argument `3' to
- `int accept(int, sockaddr*, socklen_t*)'
- utils.cc: In function `int sportnum(int)':
- utils.cc:471: cannot convert `int*' to `socklen_t*' for argument `3' to
- `int getsockname(int, sockaddr*, socklen_t*)'
- make[1]: *** [utils.o] Error 1
- make[1]: Leaving directory `/home/cserv1_a/pg/nuk/ns-allinone-2.1b6/ns-2.1b6/indep-utils/webtrace-conv/ucb'
- make: *** [all-recursive] Error 2
- Ns make failed!
- gcc -I../include -L../lib -DFBSD -o ../bin/itm itm.o geog.o ts.o dfs.o -lm -lgb
- gcc -I../include -L../lib -DFBSD -o ../bin/sgb2alt sgb2alt.o -lm -lgb
- gcc -I../include -L../lib -DFBSD -o ../bin/edriver edriver.o eval.o -lm -lgb
- gcc: eval.o: No such file or directory
- make: *** [edriver] Error 1
"edriver is used to compute properties of the generated
graphs like average node degree, diameter etc.
I
think its presence is not essential for the correct running of gt-itm."
(Satish Kumar said in ns2 mailing list)
- In file included from netview.cc:48:
- paint.h:70: declaration does not declare anything
- paint.h:70: parse error before `^' token
- paint.h:71: semicolon missing after declaration of `Paint'
- paint.h:71: parse error before `private'
- paint.h: In static member function `static Paint* Paint::instance()':
- paint.h:58: `instance_' undeclared (first use this function)
- paint.h:58: (Each undeclared identifier is reported only once for each function it appears in.)
- paint.h: In member function `_XGC* Paint::paint_to_gc(int)':
- paint.h:60: `gctab_' undeclared (first use this function)
- paint.h: In member function `int Paint::num_gc()':
- paint.h:61: `ngc_' undeclared (first use this function)
- paint.h: In member function `rgb* Paint::paint_to_rgb(int)':
- paint.h:62: `rgb_' undeclared (first use this function)
- paint.h: In member function `int Paint::thick()':
- paint.h:68: `thick_' undeclared (first use this function)
- paint.h: In member function `int Paint::thin()':
- paint.h:69: `thin_' undeclared (first use this function)
- paint.h: At global scope:
- paint.h:71: parse error before `:' token
- paint.h:74: `Paint*instance_' used prior to declaration
- paint.h:75: `int ngc_' used prior to declaration
- paint.h:77: `_XGC**gctab_' used prior to declaration
- paint.h:78: `rgb*rgb_' used prior to declaration
- paint.h:79: `int thick_' used prior to declaration
- paint.h:80: `int thin_' used prior to declaration
- paint.h:83: parse error before `}' token
- make: *** [netview.o] Error 1
- Nam make failed! Continue ...
- c++ -o nam_stream.o -c -DTCL_TK -DNDEBUG -DUSE_SHM -DHAVE_LIBTCLCL1_0B8 -DHAVE_TCLCL_H
- -DHAVE_LIBOTCL1_0A4 -DHAVE_OTCL_H -DHAVE_LIBTK8_0 -DHAVE_TK_H -DHAVE_LIBTCL8_0 -DHAVE_TCL_H
- -DHAVE_LIBZ1_1_3 -DHAVE_ZLIB_H -I. -I../tclcl-1.0b9 -I../otcl-1.0a5 -I../tkbox/include -I../tclbox/include -I../zlib-1.1.3 nam_stream.cc
- nam_stream.cc:33: declaration of C function `double atof()' conflicts with
- /usr/include/stdlib.h:137: previous declaration `double atof(const char*)' here
- make: *** [nam_stream.o] Error 1
- Nam make failed! Continue ...
- c++ -c -I. -I/home/csunix/nuk/ns-allinone-2.1b6/tclcl-1.0b9 -I/home/csunix/nuk/ns-allinone-2.1b6/otcl-1.0a5
- -I/home/csunix/nuk/ns-allinone-2.1b6/tkbox/include -I/home/csunix/nuk/ns-allinone-2.1b6/tclbox/include -o proxytrace.o proxytrace.cc
- proxytrace.cc: In function `size_t ReadHeader(FILE*, void*)':
- proxytrace.cc:86: `exit' undeclared (first use this function)
- proxytrace.cc:86: (Each undeclared identifier is reported only once for each function it appears in.)
- make[1]: *** [proxytrace.o] Error 1
- c++ -c -I. -I/home/csunix/nuk/ns-allinone-2.1b6/tclcl-1.0b9 -I/home/csunix/nuk/ns-allinone-2.1b6/otcl-1.0a5 -I/home/csunix/nuk/ns-allinone-2.1b6/tkbox/include -I/home/csunix/nuk/ns-allinone-2.1b6/tclbox/include -o my-endian.o my-endian.cc
- my-endian.cc: In function `void ToOtherEndian(TEntry*)':
- my-endian.cc:42: cannot convert `short unsigned int' to `method_t' in assignment
- my-endian.cc:45: cannot convert `u_4bytes' to `method_t' in assignment
- my-endian.cc:48: cannot convert `short unsigned int' to `protocol_t' in assignment
- my-endian.cc:51: cannot convert `u_4bytes' to `protocol_t' in assignment
- make: *** [my-endian.o] Error 1
- ...
- rm -f embedded-tcl.cc
- ./tcl2c++ et_tcl ../tclbox/lib/tcl8.0/init.tcl ../tclbox/lib/tcl8.9/histrory.tcl
- ../tclbox/lib/tcl8.0/word.tcl ../tclbox/lib/tcl8.0/http2.0/http.tcl embedded-tcl.cc > ./tcl2c++
- : error in loading shared libraries libstdc++-libc6.1-2.so.3: cannot open shared object file
- : No such file or directory
- make: *** [embedded-tcl.cc] Error 127
- tclcl-1.0b9 make failed! Exiting ...
- $ cd ~/ns-allinone-2.1b6/tclcl-1.0b9
- $ make
`/home/cserv1_a/pg/nuk/ns-allinone-2.1b6/ns-2.1b6/indep-utils/cmu-scen-gen/setdest'
bgcc -o setdest setdest.o rng.o -Dstand_alone \ -lnsl -ldl -lm
setdest.o: In
function `init()': setdest.o(.text+0x8c): undefined reference to `operator
new[](unsigned)' setdest.o(.text+0x106): undefined reference to `operator
delete[](void*)' setdest.o(.text+0x12d): undefined reference to `operator
delete[](void*)' setdest.o(.text+0x16b): undefined reference to `operator
new[](unsigned)' setdest.o(.text+0x1d7): undefined reference to `operator
new[](unsigned)' setdest.o: In function `main': setdest.o(.text+0x45a):
undefined reference to `operator new(unsigned)' setdest.o(.text+0x49a):
undefined reference to `operator delete(void*)' setdest.o(.text+0x4bf):
undefined reference to `operator delete(void*)' setdest.o: In function
`Node::Node()': setdest.o(.text+0x9ac): undefined reference to `operator
new[](unsigned)' setdest.o: In function `Node::Node()':
setdest.o(.text+0xc3c): undefined reference to `operator new[](unsigned)'
setdest.o: In function `__FRAME_BEGIN__': setdest.o(.eh_frame+0x12):
undefined reference to `__gxx_personality_v0' rng.o: In function
`__FRAME_BEGIN__': rng.o(.eh_frame+0x11): undefined reference to
`__gxx_personality_v0' collect2: ld returned 1 exit status
make[1]: *** [setdest] Error 1
******************************
The error shows all functions in standard C++ library caused problem. So, this is because the stdc++ library is missing!
To solve: check if you have stdc++ installed properly. Then, correct the ~/ns-allinone-2.1b6/ns-2.1b6/indep-utils/cmu-scen-gen/setdest/Makefile.in to enforce stdc++. Apply my setdest.patch.
and a lot of errors about 'undefined reference to' several things..........
#setenv LD_LIBRARY_PATH
~/ns-allinone-2.1b6/otcl-1.0a5:/usr/local/lib
Then, restart your
session; recompile; and set the environment variable back.
c++ -o ns \
tclAppInit.o random.o rng.o ranvar.o misc.o timer-handler.o scheduler.o
object.o packet.o ip.o route.o connector.o ttl.o trace.o trace-ip.o classifier.o
classifier-addr.o classifier-hash.o classifier-virtual.o classifier-mcast.o
classifier-bst.o classifier-mpath.o replicator.o classifier-mac.o classifier-port.o
src_rtg/classifier-sr.o src_rtg/sragent.o src_rtg/hdr_src.o ump.o app.o
telnet.o tcplib-telnet.o trafgen.o traffictrace.o pareto.o expoo.o cbr_traffic.o
tbf.o resv.o sa.o saack.o measuremod.o estimator.o adc.o ms-adc.o timewindow-est.o
acto-adc.o pointsample-est.o salink.o actp-adc.o hb-adc.o expavg-est.o param-adc.o
null-estimator.o adaptive-receiver.o vatrcvr.o consrcvr.o agent.o message.o
udp.o session-rtp.o rtp.o rtcp.o ivs.o tcp.o tcp-sink.o tcp-reno.o tcp-newreno.o
tcp-vegas.o tcp-rbp.o tcp-full.o baytcp/tcp-full-bay.o baytcp/ftpc.o baytcp/ftps.o
scoreboard.o tcp-sack1.o tcp-fack.o tcp-asym.o tcp-asym-sink.o tcp-fs.o
tcp-asym-fs.o tcp-int.o chost.o tcp-session.o nilist.o integrator.o queue-monitor.o
flowmon.o loss-monitor.o queue.o drop-tail.o simple-intserv-sched.o red.o
semantic-packetqueue.o semantic-red.o ack-recons.o sfq.o fq.o drr.o cbq.o
hackloss.o errmodel.o fec.o delay.o snoop.o gaf/gaf.o dynalink.o rtProtoDV.o
net-interface.o ctrMcast.o mcast_ctrl.o srm.o sessionhelper.o delaymodel.o
srm-ssm.o srm-topo.o mftp.o mftp_snd.o mftp_rcv.o codeword.o alloc-address.o
address.o lib/int.Vec.o lib/int.RVec.o lib/dmalloc_support.o webcache/http.o
webcache/tcp-simple.o webcache/pagepool.o webcache/inval-agent.o webcache/tcpapp.o
webcache/http-aux.o webcache/mcache.o webcache/webtraf.o realaudio/realaudio.o
lanRouter.o filter.o pkt-counter.o Decapsulator.o Encapsulator.o encap.o
channel.o mac.o ll.o mac-802_11.o mac-802_3.o mac-tdma.o mip.o mip-reg.o
gridkeeper.o propagation.o tworayground.o antenna.o omni-antenna.o shadowing.o
bi-connector.o node.o mobilenode.o arp.o god.o dem.o topography.o modulation.o
priqueue.o phy.o wired-phy.o wireless-phy.o mac-timers.o cmu-trace.o varp.o
dsdv/dsdv.o dsdv/rtable.o rtqueue.o rttable.o imep/imep.o imep/dest_queue.o
imep/imep_api.o imep/imep_rt.o imep/rxmit_queue.o imep/imep_timers.o imep/imep_util.o
imep/imep_io.o tora/tora.o tora/tora_api.o tora/tora_dest.o tora/tora_io.o
tora/tora_logs.o tora/tora_neighbor.o dsr/dsragent.o dsr/hdr_sr.o dsr/mobicache.o
dsr/path.o dsr/requesttable.o dsr/routecache.o aodv/aodv_logs.o aodv/aodv.o
ns-process.o satgeometry.o sathandoff.o satlink.o satnode.o satposition.o
satroute.o sattrace.o rap/raplist.o rap/rap.o rap/media-app.o rap/utilities.o
fsm.o tcp-abs.o diffusion/diffusion.o diffusion/diff_rate.o diffusion/diff_prob.o
diffusion/diff_sink.o diffusion/flooding.o diffusion/omni_mcast.o diffusion/hash_table.o
diffusion/routing_table.o diffusion/iflist.o tfrc.o tfrc-sink.o energy-model.o
ping.o tcp-rfc793edu.o rio.o semantic-rio.o tcp-sack-rh.o scoreboard-rh.o
plm/loss-monitor-plm.o plm/cbr-traffic-PP.o linkstate/hdr-ls.o mpls/classifier-addr-mpls.o
mpls/ldp.o mpls/mpls-module.o rtmodule.o classifier-hier.o addr-params.o
nix/hdr_nv.o nix/classifier-nix.o nix/nixnode.o routealgo/rnode.o routealgo/bfs.o
routealgo/rbitmap.o routealgo/rlookup.o routealgo/routealgo.o nix/nixvec.o
nix/nixroute.o diffserv/dsred.o diffserv/dsEdge.o diffserv/dsCore.o diffserv/dsPolicy.o
diffserv/dsredq.o red-pd.o pushback/rate-limit.o pushback/rate-limit-strategy.o
pushback/ident-tree.o pushback/agg-spec.o pushback/logging-data-struct.o
pushback/rate-estimator.o pushback/pushback-queue.o pushback/pushback.o
parentnode.o basetrace.o simulator.o gen/version.o gen/ns_tcl.o gen/ptypes.o
win32.o -L/home/csunix/nuk/ns-allinone-2.1b8a/tclcl-1.0b11 -ltclcl -L/home/csunix/nuk/ns-allinone-2.1b8a/otcl-1.0a7
-lotcl -L/home/csunix/nuk/ns-allinone-2.1b8a/lib -ltk8.3 -L/home/csunix/nuk/ns-allinone-2.1b8a/lib
-ltcl8.3 -L/usr/X11R6/lib -lXext -lX11 -lnsl -ldl -lm
/home/csunix/nuk/ns-allinone-2.1b8a/lib/libtcl8.3.a(tclUnixPipe.o): In function
`TclpCreateTempFile':
tclUnixPipe.o(.text+0xef): the use of `tmpnam' is dangerous, better use
`mkstemp'
simulator.o: In function `Simulator::populate_hier_classifiers()':
simulator.o(.text+0x7a1): undefined reference to `RouteLogic::elements_in_level(int*,
int)'
collect2: ld returned 1 exit status
make: *** [ns] Error 1
Ns make failed!
In recent years, several studies have focused on the design of MR-MCC protocols.
However, all of them have some drawbacks. Some designs cause
over-subscription and high packet losses. Some are slow to converge and
unresponsive. Some are TCP-unfriendly. Some designs are too complex or even
arguable in terms of feasibility. Some
others are not scalable.
Hence, we have proposed a new design of MR-MCC, which has the following properties: scalability, responsiveness, fast convergence, fairness (including intra-session fairness, intra-protocol fairness, inter-protocol fairness and TCP friendliness), efficiency in network utilization, and simplicity to implement. Our design is based on an estimation of an explicit target rate using a Packet-pair Probe (PP) and the TCP throughput equation. By combining this target rate estimation, the receiver-driven layered multicast approach and our new framework for the cooperation between the sender and the receivers, we contribute an innovative MR-MCC protocol, called Explicit Rate Adjustment (ERA).
The details of ERA design and simulation results can be found here.
If you are Thai (in Thailand or staying abroad) and you are using ns2 for your research or for your teaching/studying, I would really like to hear from you. What are you doing with ns2 and how long have you been using ns2? What do you think about using ns2 for Networking Course in Thailand? Is it interesting to set up a FORUM for ns2 users in Thailand? Or, there is already one? Please e-mail me.
I'm a great believer in luck and I find that "the harder I work the more I have it" -- Thomas Jefferson (1743-1826)
Last updated : June 2003. By .. Somnuk Puangpronpitag