[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ns] about the ns wfq and wfq+ implementation



sir,i had ever met that problem.
the wfq patch had generated a makefile.in, 
it seems we should use the makefile.in to modify the makefile in the same dir,
had u do it?
from u makefile, i cannot found wfq.o,
so look makefile.in and modified makefile like the makefile.in,
hehe,i just add the differences between makefile.in and makefile,
and make again,all were done.(i dont know how to generate makefile from makefile.in automatically as the file asked, so i chosed this stupid method,
but it worked.hehe)
wish u happy

BTW,do u have any other examples about wfq?
thanks

Regard

JIN xiaohui

----- Original Message ----- 
From: Matthew WONG <[email protected]>
To: <[email protected]>
Sent: Monday, October 09, 2000 2:21 PM
Subject: [ns] about the ns wfq and wfq+ implementation


> I am using ns-allinone-2.1b6 and redhat linux 6.2,
> I can run some of the ns original examples smoothly but I can't get the
> wfq, wf2q+
> and csfq function to work.
> I download the wfq patch from:
> http://www.pao.lombardiacom.it/wfq.html
> and wf2q+ patch from:
> http://www.cs.cmu.edu/~cheeko/wf2q+/
> 
> I can compiled the files so I get wfq.o, wf2q.o and csfq.o.  When I call
> 
> the queueing methods in the program codes, they fail and give me the
> following messages:
> 
> invalid command name "Queue/WFQ"
>  while executing
> "Queue/WFQ create _014 "
>  invoked from within
> "catch "$className create $0 $args" msg"
>  (procedure "new" line 3)
>  invoked from within
> "new Queue/$qtype"
>  ("default" arm line 2)
>  invoked from within
> "sitch -exact $qtype {
> ErrorModule {
> if {[llength $args] >0 } {
> set q [eval new $qtype $args]
> } else {
> set q [new $qtype Fid]
> }
> }
> intserv {
> set qtyp..."
>  (procedure "_o3" line 10)
>  (Simulator simplex-link line 10)
>  invoked from within
> "_o3 simplex-link _o10 _o12 5Mb 2ms WFQ 10"
>  ("eval" body line 1)
>  invoked from within
> "eval $self simplex-link $n1 $n2 $bw $delay $type $args"
>  (procedure "_o3" line 9)
>  (Simulator duplex-link line 9)
>  invoded from within
> "$ns duplex-link $n0 $n1 5Mb 2ms WFQ 10"
>  (file "example.tcl" line 12)
> 
> My program code is attached in this mail (example.tcl)
> 
> When I call the ns and type in the program line by line, it give me the
> following error messages:
> 
> % set ns [new Simulator]
> _o4
> % set n0 [$ns node]
> _o11
> % set n1 [$ns node]
> _o13
> % $ns duplex-link $n0 $n1 5Mb 2ms WFQ 10
> class Queue/WFQ: constructor failed: invalid command name "Queue/WFQ"
> % $ns duplex-link $n0 $n1 5Mb 2ms WFQ
> class Queue/WFQ: constructor failed: invalid command name "Queue/WFQ"
> 
> My makefile in the ns-2.1b6 directory is also attached (Makefile)
> Can u help me to solve my problems.
> Really thanks a lot!!
> 
> Best Regards
> 
> Matthew WONG
> 
> 
> 


--------------------------------------------------------------------------------


> #  Copyright (c) 1994, 1995, 1996
> # The Regents of the University of California.  All rights reserved.
> #
> #  Redistribution and use in source and binary forms, with or without
> #  modification, are permitted provided that: (1) source code distributions
> #  retain the above copyright notice and this paragraph in its entirety, (2)
> #  distributions including binary code include the above copyright notice and
> #  this paragraph in its entirety in the documentation or other materials
> #  provided with the distribution, and (3) all advertising materials mentioning
> #  features or use of this software display the following acknowledgement:
> #  ``This product includes software developed by the University of California,
> #  Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
> #  the University nor the names of its contributors may be used to endorse
> #  or promote products derived from this software without specific prior
> #  written permission.
> #  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
> #  WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
> #  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
> #
> # @(#) $Header: /usr/src/mash/repository/vint/ns-2/Makefile.in,v 1.179 2000/01/05 00:00:58 heideman Exp $ (LBL)
> 
> #
> # Various configurable paths (remember to edit Makefile.in, not Makefile)
> #
> 
> # Top level hierarchy
> prefix = /usr/local
> # Pathname of directory to install the binary
> BINDEST = /usr/local/bin
> # Pathname of directory to install the man page
> MANDEST = /usr/local/man
> 
> BLANK = # make a blank space.  DO NOT add anything to this line
> 
> # The following will be redefined under Windows (see WIN32 lable below)
> CC = gcc
> CPP = c++
> LINK = $(CPP)
> MKDEP = ./conf/mkdep
> TCLSH = /root/ns-allinone-2.1b6/tclbox/bin/tclsh8.0
> TCL2C = ../tclcl-1.0b9/tcl2c++
> AR = ar rc $(BLANK)
> 
> RANLIB = ranlib
> INSTALL = /usr/bin/install -c
> LN = ln
> TEST = test
> RM = rm -f
> PERL = /usr/bin/perl
> 
> 
> CCOPT = -g -Wall
> STATIC = 
> LDFLAGS = $(STATIC)
> LDOUT = -o $(BLANK)
> 
> DEFINE = -DTCP_DELAY_BIND_ALL -DNO_TK -DTCLCL_CLASSINSTVAR  -DNDEBUG -DUSE_SHM -DHAVE_LIBTCLCL1_0B9 -DHAVE_TCLCL_H -DHAVE_LIBOTCL1_0A5 -DHAVE_OTCL_H -DHAVE_LIBTK8_0 -DHAVE_TK_H 
> INCLUDES = \
> -I.  \
> -I../tclcl-1.0b9 -I../otcl-1.0a5 -I../tkbox/include -I../tclbox/include 
> # -I. @V_INCLUDE_X11@ \
> # @V_INCLUDES@
> 
> LIB = \
> -L../tclcl-1.0b9 -ltclcl -L../otcl-1.0a5 -lotcl -L../tkbox/lib -ltk8.0 -L../tclbox/lib -ltcl8.0  \
> -L/usr/X11R6/lib -lXext -lX11 \
> -lnsl -ldl \
> -lm 
> # -L${exec_prefix}/lib \
> 
> # @V_LIBS@ \
> # @V_LIB_X11@ \
> # @V_LIB@ \
> # -lm @LIBS@
> # -L@libdir@ \
> 
> CFLAGS = $(CCOPT) $(DEFINE)
> 
> # Explicitly define compilation rules since SunOS 4's make doesn't like gcc.
> # Also, gcc does not remove the .o before forking 'as', which can be a
> # problem if you don't own the file but can write to the directory.
> .SUFFIXES: .cc # $(.SUFFIXES)
> 
> .cc.o:
> @rm -f $@
> $(CPP) -c $(CFLAGS) $(INCLUDES) -o $@ $*.cc
> 
> .c.o:
> @rm -f $@
> $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $*.c
> 
> 
> GEN_DIR = gen/
> LIB_DIR = lib/
> NS = ns
> NSX = nsx
> NSE = nse
> 
> # WIN32: uncomment the following line to include specific make for VC++
> # !include <conf/makefile.win>
> 
> 
> OBJ_CC = \
> random.o rng.o ranvar.o csfq.o wf2q+.o fred.o util.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 \
> 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 \
> 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 \
> delay.o snoop.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_DIR)int.Vec.o $(LIB_DIR)int.RVec.o \
> $(LIB_DIR)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 \
> lanRouter.o filter.o pkt-counter.o \
> Decapsulator.o Encapsulator.o \
> channel.o mac.o ll.o \
> mac-802_11.o \
> mac-802_3.o \
> mip.o mip-reg.o gridkeeper.o \
> propagation.o tworayground.o antenna.o omni-antenna.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 \
> tfrc.o tfrc-sink.o energy-model.o ping.o tcp-rfc793edu.o
> 
> # don't allow comments to follow continuation lines
> 
> #  mac-csma.o mac-multihop.o\
> # sensor-nets/landmark.o mac-simple-wireless.o \
> # sensor-nets/tags.o sensor-nets/sensor-query.o \
> # sensor-nets/flood-agent.o \
> 
> # what was here before is now in emulate/
> OBJ_C =
> 
> OBJ_COMPAT = $(OBJ_GETOPT) win32.o
> #XXX compat/win32x.o compat/tkConsole.o
> 
> OBJ_EMULATE_CC = \
> emulate/net-ip.o \
> emulate/net.o \
> emulate/tap.o \
> emulate/ether.o \
> emulate/net-pcap.o \
> emulate/internet.o \
> emulate/ping_responder.o \
> emulate/arp.o \
> emulate/icmp.o \
> emulate/nat.o
> 
> OBJ_EMULATE_C = \
> emulate/inet.o
> 
> OBJ_GEN = $(GEN_DIR)version.o $(GEN_DIR)ns_tcl.o $(GEN_DIR)ptypes.o
> 
> SRC = $(OBJ_C:.o=.c) $(OBJ_CC:.o=.cc) \
> $(OBJ_EMULATE_C:.o=.c) $(OBJ_EMULATE_CC:.o=.cc) \
> tclAppInit.cc tkAppInit.cc
> 
> OBJ = $(OBJ_C) $(OBJ_CC) $(OBJ_GEN) $(OBJ_COMPAT)
> 
> CLEANFILES = ns nsx ns.dyn $(OBJ) $(OBJ_EMULATE_CC) \
> $(OBJ_EMULATE_C) tclAppInit.o \
> $(GEN_DIR)* core core.$(NS) core.$(NSX) core.$(NSE) \
> ptypes2tcl ptypes2tcl.o
> 
> SUBDIRS=\
> indep-utils/cmu-scen-gen/setdest \
> indep-utils/webtrace-conv/dec \
> indep-utils/webtrace-conv/epa \
> indep-utils/webtrace-conv/nlanr \
> indep-utils/webtrace-conv/ucb
> 
> all: $(NS) all-recursive
> 
> all-recursive:
> for i in $(SUBDIRS); do ( cd $$i; $(MAKE) all; ) done
> 
> $(NS): $(OBJ) tclAppInit.o Makefile
> $(LINK) $(LDFLAGS) $(LDOUT)$@ \
> tclAppInit.o $(OBJ) $(LIB)
> 
> Makefile: Makefile.in
> @echo "Makefile.in is newer than Makefile."
> @echo "You need to re-run configure."
> false
> 
> $(NSE): $(OBJ) tclAppInit.o $(OBJ_EMULATE_CC) $(OBJ_EMULATE_C)
> $(LINK) $(LDFLAGS) $(LDOUT)$@ \
> tclAppInit.o $(OBJ) \
> $(OBJ_EMULATE_CC) $(OBJ_EMULATE_C)  $(LIB) -lpcap
> 
> ns.dyn: $(OBJ) tclAppInit.o
> $(LINK) $(LDFLAGS) -o $@ \
> tclAppInit.o $(OBJ) $(LIB)
> 
> PURIFY = purify -cache-dir=/tmp
> ns-pure: $(OBJ) tclAppInit.o
> $(PURIFY) $(LINK) $(LDFLAGS) -o $@ \
> tclAppInit.o $(OBJ) $(LIB)
> 
> NS_TCL_LIB = \
> tcl/lib/ns-compat.tcl \
> tcl/lib/ns-default.tcl \
> tcl/lib/ns-errmodel.tcl \
> tcl/lib/ns-lib.tcl \
> tcl/lib/ns-link.tcl \
> tcl/lib/ns-mobilenode.tcl \
> tcl/lib/ns-sat.tcl \
> tcl/lib/ns-cmutrace.tcl \
> tcl/lib/ns-node.tcl \
> tcl/lib/ns-hiernode.tcl \
> tcl/lib/ns-packet.tcl \
> tcl/lib/ns-queue.tcl \
> tcl/lib/ns-source.tcl \
> tcl/lib/ns-nam.tcl \
> tcl/lib/ns-trace.tcl \
> tcl/lib/ns-agent.tcl \
> tcl/lib/ns-random.tcl \
> tcl/lib/ns-namsupp.tcl \
> tcl/lib/ns-address.tcl \
> tcl/lib/ns-intserv.tcl \
> tcl/lib/ns-autoconf.tcl \
> tcl/rtp/session-rtp.tcl \
> tcl/lib/ns-mip.tcl \
> tcl/rtglib/dynamics.tcl \
> tcl/rtglib/route-proto.tcl \
> tcl/rtglib/algo-route-proto.tcl \
>         tcl/interface/ns-iface.tcl \
> tcl/mcast/BST.tcl \
>         tcl/mcast/ns-mcast.tcl \
>         tcl/mcast/McastProto.tcl \
>         tcl/mcast/DM.tcl \
> tcl/mcast/srm.tcl \
> tcl/mcast/srm-adaptive.tcl \
> tcl/mcast/srm-ssm.tcl \
> tcl/mcast/timer.tcl \
> tcl/mcast/McastMonitor.tcl \
> tcl/mcast/mftp_snd.tcl \
> tcl/mcast/mftp_rcv.tcl \
> tcl/mcast/mftp_rcv_stat.tcl \
>         tcl/ctr-mcast/CtrMcast.tcl \
>         tcl/ctr-mcast/CtrMcastComp.tcl \
>         tcl/ctr-mcast/CtrRPComp.tcl \
> tcl/rlm/rlm.tcl \
> tcl/rlm/rlm-ns.tcl \
> tcl/session/session.tcl \
> tcl/lib/ns-route.tcl \
> tcl/emulate/ns-emulate.tcl \
> tcl/lan/vlan.tcl \
> tcl/lan/ns-ll.tcl \
> tcl/lan/ns-mac.tcl \
> tcl/webcache/http-agent.tcl \
> tcl/webcache/http-server.tcl \
> tcl/webcache/http-cache.tcl \
> tcl/webcache/http-mcache.tcl \
> tcl/webcache/webtraf.tcl
> 
> $(GEN_DIR)ns_tcl.cc: $(NS_TCL_LIB)
> $(TCLSH) bin/tcl-expand.tcl tcl/lib/ns-lib.tcl | $(TCL2C) gen/ns_tcl.cc
> # $(TCLSH) bin/tcl-expand.tcl tcl/lib.ns-lib.tcl | \bs ../tclcl-1.0b9/tcl2c++ et_ns_lib >gen/ns_tcl.cc
> $(GEN_DIR)version.c: VERSION
> $(RM) $@
> $(TCLSH) bin/string2c.tcl version_string < VERSION > $@
> 
> $(GEN_DIR)ptypes.cc: ptypes2tcl packet.h
> ./ptypes2tcl > $@
> 
> ptypes2tcl: ptypes2tcl.o
> $(LINK) $(LDFLAGS) $(LDOUT)$@ ptypes2tcl.o
> 
> ptypes2tcl.o: ptypes2tcl.cc packet.h
> 
> install: force install-ns install-man install-recursive
> 
> install-ns: force
> $(INSTALL) -m 555 -o bin -g bin ns $(DESTDIR)$(BINDEST)
> 
> install-man: force
> $(INSTALL) -m 444 -o bin -g bin ns.1 $(DESTDIR)$(MANDEST)/man1
> 
> install-recursive: force
> for i in $(SUBDIRS); do cd $$i; $(MAKE) install; done
> 
> clean:
> $(RM) $(CLEANFILES)
> 
> distclean:
> $(RM) $(CLEANFILES) Makefile config.cache config.log config.status \
>     gnuc.h os-proto.h
> 
> tags: force
> ctags -wtd *.cc *.h webcache/*.cc webcache/*.h dsdv/*.cc dsdv/*.h \
> dsr/*.cc dsr/*.h webcache/*.cc webcache/*.h lib/*.cc lib/*.h \
> ../Tcl/*.cc ../Tcl/*.h 
> 
> TAGS: force
> etags *.cc *.h webcache/*.cc webcache/*.h dsdv/*.cc dsdv/*.h \
> dsr/*.cc dsr/*.h webcache/*.cc webcache/*.h lib/*.cc lib/*.h \
> ../Tcl/*.cc ../Tcl/*.h
> 
> tcl/lib/TAGS: force
> ( \
> cd tcl/lib; \
> $(TCLSH) ../../bin/tcl-expand.tcl ns-lib.tcl | grep '^### tcl-expand.tcl: begin' | awk '{print $$5}' >.tcl_files; \
> etags --lang=none -r '/^[ \t]*proc[ \t]+\([^ \t]+\)/\1/' `cat .tcl_files`; \
> etags --append --lang=none -r '/^\([A-Z][^ \t]+\)[ \t]+\(instproc\|proc\)[ \t]+\([^ \t]+\)[ \t]+/\1::\3/' `cat .tcl_files`; \
> )
> 
> depend: $(SRC)
> $(MKDEP) $(CFLAGS) $(INCLUDES) $(SRC)
> 
> srctar:
> @cwd=`pwd` ; dir=`basename $$cwd` ; \
>     name=ns-`cat VERSION | tr A-Z a-z` ; \
>     tar=ns-src-`cat VERSION`.tar.gz ; \
>     list="" ; \
>     for i in `cat FILES` ; do list="$$list $$name/$$i" ; done; \
>     echo \
>     "(rm -f $$tar; cd .. ; ln -s $$dir $$name)" ; \
>      (rm -f $$tar; cd .. ; ln -s $$dir $$name) ; \
>     echo \
>     "(cd .. ; tar cfh $$tar [lots of files])" ; \
>      (cd .. ; tar cfh - $$list) | gzip -c > $$tar ; \
>     echo \
>     "rm ../$$name; chmod 444 $$tar" ;  \
>      rm ../$$name; chmod 444 $$tar
> 
> force:
> 
> test: force
> ./validate
> 
> # Create makefile.vc for Win32 development by replacing:
> # "# !include ..." -> "!include ..."
> makefile.vc: Makefile.in
> $(PERL) bin/gen-vcmake.pl < Makefile.in > makefile.vc
> # $(PERL) -pe 's/^# (\!include)/\!include/o' < Makefile.in > makefile.vc
>