Giter Site home page Giter Site logo

manniru / ns2-umts Goto Github PK

View Code? Open in Web Editor NEW

This project forked from huangminghe/ns2-umts

0.0 1.0 0.0 156.78 MB

umts simulation with ns2

Home Page: www.minghe.me

Makefile 0.34% xBase 0.07% C 23.21% Groff 24.90% Emacs Lisp 0.04% TeX 3.42% C++ 26.85% Tcl 16.94% Shell 1.35% PostScript 0.02% HTML 0.61% Perl 1.29% Lua 0.01% Awk 0.04% Mathematica 0.81% MATLAB 0.01% Gnuplot 0.04% Batchfile 0.01% DIGITAL Command Language 0.03% Objective-C 0.01%

ns2-umts's Introduction


Welcome!

this repo include a whole ns2.29-allinone and a simulation of handover between UMTS cell and WLAN. what a wonderful thing is that I developed the real time network performance monitor function for ns2, so we can handover based on the real time network performance monitor.

How to

1.Download ns2.29-allinone and its UMTS extension package
    Two choices for you 
	a. using the package I have compile and it works on my Fedora17.
	b. download these two packages individully and make it works by yourself, what need to mention 	is both of choice are need you to recompile it. individule package of ns2.29-allinone and UMTS extension package is in the umts-extension-package directory.

2.Installation of ns2.29-allinone with UMTS enabled

a.Installation preparation
	Before you install ns2.29, you should install some necessary packages. For Fedora user, you need:
		$ yum install gcc
		$ yum install tcl-devel
		$ yum install autoconf
		$ yum install automake
		$ yum install gcc-c++
		$ yum install libX11-devel
		$ yum install xorg-x11-proto-devel
		$ yum install libXt-devel
		$ yum install libXmu-devel
		$ yum install libtool
	After that, what you have to do is install the gcc4.1(for my fedora15, 16 17, gcc4.1.2 works fins), the version of gcc is very important for ns2.29’s installation, so I recommend the gcc4.1.2. Download it here (http://gcc.gnu.org/mirrors.html). After your gcc4.1.2 installed, you have two version of gcc on your computer now, so you have to modify you path of gcc compile link to your gcc4.1.2. which can be done by this:
		$which gcc 
	To get the symbol link of gcc location, the cd to the directory and do
		$sudo mv gcc gcc_bak
		$sudo mv g++ g++_bak
		$sudo mv cc cc_bak
		$sudo other-gcc- other-gcc-bak
	Then you have create the new symbol link to your new version of gcc4.1.2 by:
	$sudo ln –s /directory/to/gcc4.1.2/bin/gcc gcc
	And you should do that for all of them, like g++, cc, c++ or something more.

b.	Installation of ns2.29 with UMTS enabled.
	First thing you have to do is extracting the UMTS package and mv it to ns2.29-allinone to over cover the original ns2.29 directory within ns2.29-allinone directory. Then you can make install it with the simple command now:
		$./install
	There should be some troubles happen, and you can refer to
	This troubles shooting notes here ()

c.	Patch your ns2.29 with my real time performance monitor patch.
	Actually, this version of ns2.29-umts-enabled have patched, but I think maybe a lot person may have troubles installing my own version, so if you install the brand new version of ns2.29-allinone and the UMTS extension package, you should patch it like following to make it has real time performance monitor feature.
		$cd /to/ns2.29/trace/
		$patch –p1 < trace.patch
	Of cause you have to specify to location of patch file. After that you can remake your ns2.29 and have fun.

3.	Usage of real time performance monitor function
You just only type some command in your TCL scripts then easy to get the performance value of real time network.
set my_trace [new Agent/RealtimeTrace]
	#set mean_delay [$my_trace GetMeanDelay “src_nodeaddr” “dst_nodeaddr” “packet_type”
Like.
	set mean_delay [$my_trace GetMeanDelay “5.0.0” “3.0.2” “cbr” ]
	puts “$mean_delay”
You can refer to a handover between UMTS and WLAN according to mean_delay simulation example in the example directory. Have fun!

Trouble shooting

1 For gcc4.1.2 installaion
	open configure file with "$vim configure" find the "# For an installed makeinfo, we require it to be from texinfo 4.2 or# higher, else we use the "missing" dummy.if ${MAKEINFO} --version \| egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' >/dev/null 2>&1; then:elseMAKEINFO="$MISSING makeinfo"fi;;"
	and change the 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' to 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|4\.[1-9][0-9]*|[5-9])'

2 For ns2.29-allinone installaion

	when compiling the ns2 source code, there are some problems I have met and solutions are as follow.

	(1).
	./sctp/sctp.h:705: error: extra qualification 'SctpAgent::' on member 'DumpSendBuffer'
	make: *** [trace/trace.o] Error 1
	---just delete  'SctpAgent::'
	(2).
	./mobile/god.h:88: error:extra qualification ‘vector::’ on member ‘operator=’
	./mobile/god.h:93: error:extra qualification ‘vector::’ on member ‘operator+=’
	./mobile/god.h:98: error:extra qualification ‘vector::’ on member ‘operator==’
	./mobile/god.h:101: error:extra qualification ‘vector::’ on member ‘operator!=’
	---just delete 'vector::'。
	(3).
	queue/red.cc:874: error: invalid conversion from ‘const char*’ to ‘char*’
	queue/red.cc:875: error: invalid conversion from ‘const char*’ to ‘char*’
	queue/red.cc:876: error: invalid conversion from ‘const char*’ to ‘char*’
	queue/red.cc:877: error: invalid conversion from ‘const char*’ to ‘char*’
	---change "char *p" to "const char *p"
	(4).
	dsr/dsragent.cc: In member function ‘void DSRAgent::handleFlowForwarding(SRPacket&, int)’:
	dsr/dsragent.cc:828: error: ‘XmitFlowFailureCallback’ was not declared in this scope
	dsr/dsragent.cc: In member function ‘void DSRAgent::sendOutPacketWithRoute(SRPacket&, bool, Time)’:
	dsr/dsragent.cc:1385: error: ‘XmitFailureCallback’ was not declared in this scope
	dsr/dsragent.cc:1386: error: ‘XmitFlowFailureCallback’ was not declared in this scope
	dsr/dsragent.cc:1403: error: ‘XmitFailureCallback’ was not declared in this scope

	---add the declearation of the functions before line 828 
		void XmitFlowFailureCallback(Packet *pkt, void *data);
		void XmitFailureCallback(Packet *pkt, void *data);
	(5).
	diffusion/diffusion.cc:427: error: ‘XmitFailedCallback’ was not declared in this scope
	make: *** [diffusion/diffusion.o] Error 1
	---add the declearation of the functions before line 427
		void XmitFailedCallback(Packet *pkt, void *data);
	(6).
	diffusion/omni_mcast.cc:388: error: ‘OmniMcastXmitFailedCallback’ was not declared in this scope
	make: *** [diffusion/omni_mcast.o] Error 1
	---add the declearation of the functions before line 388
		void OmniMcastXmitFailedCallback(Packet *pkt, void *data);
	(7).
	queue/rio.cc:565: error: invalid conversion from ‘const char*’ to ‘char*’
	queue/rio.cc:566: error: invalid conversion from ‘const char*’ to ‘char*’
	queue/rio.cc:567: error: invalid conversion from ‘const char*’ to ‘char*’
	queue/rio.cc:568: error: invalid conversion from ‘const char*’ to ‘char*’
	queue/rio.cc:569: error: invalid conversion from ‘const char*’ to ‘char*’
	queue/rio.cc:570: error: invalid conversion from ‘const char*’ to ‘char*’
	queue/rio.cc:571: error: invalid conversion from ‘const char*’ to ‘char*’
	make: *** [queue/rio.o] Error 1
	---change "char *p" to "const char *p"
	(8).
	tcp/tcp-sack-rh.cc:68: error: extra qualification ‘SackRHTcpAgent::’ on member ‘newack’
	make: *** [tcp/tcp-sack-rh.o] Error 1
	---just delete ‘SackRHTcpAgent::’
	(9).
	pgm/pgm-agent.cc:307: error: extra qualification ‘PgmAgent::’ on member ‘trace_event’
	make: *** [pgm/pgm-agent.o] Error 1
	---just delete  ‘PgmAgent::’
	(10).
	pgm/pgm-sender.cc:189: error: extra qualification ‘PgmSender::’ on member ‘trace_event’
	make: *** [pgm/pgm-sender.o] Error 1
	---just delete ‘PgmSender::’
	(11).
	pgm/pgm-receiver.cc:186: error: extra qualification ‘PgmReceiver::’ on member ‘trace_event’
	make: *** [pgm/pgm-receiver.o] Error 1
	---just delete ‘PgmReceiver::’
	(12).
	setdest.h:26: error: extra qualification ‘vector::’ on member ‘operator=’
	setdest.h:31: error: extra qualification ‘vector::’ on member ‘operator+=’
	setdest.h:36: error: extra qualification ‘vector::’ on member ‘operator==’
	setdest.h:39: error: extra qualification ‘vector::’ on member ‘operator!=’
	make[1]: *** [setdest.o] Error 1
	---just delete ‘vector::’

ns2-umts's People

Contributors

metrue avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.