Configure Eclipse NS3 on Mac OS X 10.10 Yosemite

To get ns3 running with Mac OS X 10.10 Yosemite:

Configure Development Environment

  1. Download Xcode from Apple App Store https://itunes.apple.com/tr/app/xcode/id497799835?mt=12
  2. Install Xcode
  3. Download and install command line tools. You can type `xcode-select –install` terminal or https://developer.apple.com/downloads/index.action
  4. gdb 7 has some problems with on Mac OS X so, install gdb 6 with macports using `sudo port install gdb-apple` or homebrew
  5. Download ns3 source code using web site http://www.nsnam.org or get with mercuriel `hg clone http://code.nsnam.org/ns-3-dev`
  6. Change ns3 directory and run `./waf -d debug configure`

Configure Eclipse

  1. Download Eclipse IDE for C/C++ Developers from http://www.eclipse.org/downloads/
  2. From eclipse New->New Project select C++ Project
  3. Point location of the ns3 and name it
  4. Right click on the project and properties, C/C++ Build change build command to waf `${workspace_loc:/NS3Dev}/waf` and build directory to `${workspace_loc:/NS3Dev}/build`
  5. Change incremental build all to build
  6. Now build project
  7. If you get unnecessary errors,from Eclipse Preferences->C/C++->Code Analysis uncheck Syntax and Semantic Erros

Signing gdb

Mac OS X requires gdb to be signed to access memory locations so:

  1. Open Keychain Access, Keychain Access->Certificate Assistant->Create a Certificate…
  2. Name the cert as `gdb-cert` select `Self Signed Root` and `Code Signing` also check override defaults
  3. Next, until “Specify a Location The Certificate” and select `System`
  4. Find cert in Keychain Access and if its not trusted trust the cert.
  5. From terminal sign the gdb `sudo codesign -s gdb-cert $(which gdb)`

Configure Eclipse Debugger

  1. Debug Configurations add new configuration
  2. Select C/C++ Application from list `build/scratch/scratch-simulator`
  3. In Environmental’s tab select new and add `DYLD_LIBRARY_PATH` variable and `${workspace_loc:/NS3Dev}/build` value
  4. In debug section select debugger path to gdb

Carambola2 OpenWRT on Mac OS X Mavericks

There are some sources about building developing OpenWRT on Mac OS X, you have follow different instructions in different web sites. Here is the complete steps to build OpenWRT on Mac OS X 10.9 Mavericks. I tested it both Carambola 2 native and OpenWRT x86 architectures.

First, you need a disk image on your mac. Go to Disk Utiliy->New Image-> Case sensitive, sparse disk Image. I allocate 15GB to work on 2 different builds.

Second, you have to install XCode from App Store, and Command Line Tools or run this on terminal;

xcode-select --install

Third, install macports and install required packages by macports using commandline;

sudo port selfupdate

sudo port install gcc47

sudo port install apple-gcc42

sudo port install coreutils asciidoc bzip2 fastjar flex getopt gtk2 intltool jikes zlib openssl p5-extutils-makemaker rsync ruby sdcc unzip gettext libxslt bison gawk autoconf wget gmake ncurses e2fsprogs ossp-uuid gawk findutils gnutar

Now, everything is ready to get the source code and build.  Mount the disk we setup in the first step and cd into and get OpenWRT stable version.

cd /Volumes/OpenWRT

git clone git://git.openwrt.org/12.09/openwrt.git

or you can clone Carambola 2 sources from github

git clone https://github.com/8devices/carambola2.git

Select gcc 4.2 to compile tools and gcc 4.7 for the rest.

sudo port select –set gcc apple-gcc42

export PATH=/opt/local/libexec/gnubin:/opt/local/bin:${PATH}

make menuconfig

If you are building carambola 2 don’t change architecture. For OpenWRT  you  can choose x86 or whatever you want. For development purposes, following options need to be enabled.

Save changes and run;

make tools/install

After everything compiles successfully, select gcc 4.7 and run make;

sudo port select –set gcc mp-gcc47

make

References;
http://wiki.openwrt.org/easy.build.macosx

http://wiki.openwrt.org/doc/howto/buildroot.exigence.macosx

https://forum.openwrt.org/viewtopic.php?id=47058

 


iPhone 5S Kamera Test

Uzun bir zamandır iPhone 5S in kamerasını denemeyi istiyordum, bugüne nasip oldu. Göztepe 60. Yıl Park’ından birkaç fotoğraf:

Lale Lale IMG_4618


How to set EDCA/DCF parameters in NS3?

Having throughput problems in OMNET++, we have to switch to the NS3 as network simulation platform. It  doesn’t have a builtin IDE like OMNET and simulation language is either C++ or python. I prefer C++.

After a long time period of  searching, I’ve managed to set DCF and EDCA parameters (like contention window) for wireless simulations (802.11 networks).  The problem is when you get Dca pointer and try to set CwMin and CwMax values, it doesn’t apply to the all nodes in the network, it has to be setup every device in the network.  For eaxample;

Ptr<NetDevice> dev = node->GetDevice(0);

Ptr<WifiNetDevice> wifi_dev = DynamicCast<WifiNetDevice>(dev);

Ptr<WifiMac> mac = wifi_dev->GetMac();

PointerValue ptr;

mac->GetAttribute(“DcaTxop”, ptr);

Ptr<DcaTxop> dca = ptr.Get<DcaTxop>();

dca->SetMinCw(minCw);

dca->SetMaxCw(maxCw);

//dca->SetAifsn(2);

 

Ptr<EdcaTxopN> edca;

mac->GetAttribute(“VO_EdcaTxopN”, ptr);

edca = ptr.Get<EdcaTxopN>();

edca->SetMinCw(minCw);

edca->SetMaxCw(maxCw);

//edca->SetAifsn(2);

 

mac->GetAttribute(“VI_EdcaTxopN”, ptr);

edca = ptr.Get<EdcaTxopN>();

edca->SetMinCw(minCw);

edca->SetMaxCw(maxCw);

//edca->SetAifsn(2);

 

mac->GetAttribute(“BE_EdcaTxopN”, ptr);

edca = ptr.Get<EdcaTxopN>();

edca->SetMinCw(minCw);

edca->SetMaxCw(maxCw);

//edca->SetAifsn(2);

 

mac->GetAttribute(“BK_EdcaTxopN”, ptr);

edca = ptr.Get<EdcaTxopN>();

edca->SetMinCw(minCw);

edca->SetMaxCw(maxCw);

//edca->SetAifsn(2);

 


OMNET++ INET 802.11e Throughput Problem

It seems Omnet++ Inet still has problems with 802.11 mac layer  implementation.  The problem I face is, throughput decreases to half when the Max Contention Window  parameter is set to same value with Min Contention Window. I made the experiment with throughput example supplied in Inet. Simulation environment is set up as 1 AP and 1 Station when cwMinData and cwMaxData is set same value throughput is measured around 2.7 Mbps. Interesting thing is it is same regardless of the value I set (3, 7, 32 …). With 1 AP and 1 Station there shouldn’t be a collision and throughput shouldn’t decrease. I asked forums and reported as bug but still couldn’t find a solution. I guess I’ll be looking for alternative simulation environment, may be ns3?