Overview
We implement ICIM by modifying the FreeBSD version 4.10 kernel system. If you want to use ICIM, download the following archive file and rebuild your kernel system.
icim_freebsd_4_10 archive file contains:
- conf
- files ... definition file for building kernel system
- newvers.sh ... definition file of kernel version (shell script)
- options ... definition file of kernel options
- i386
- conf
- ICIM ... kernel configuration for ICIM
- netinet
- icim_input.c ... ICIM control units
- icim_output.c ... ICIM control units
- icim_subr.c ... sub functions for ICIM (including measurement units)
- icim.h ... header file for ICIM
- tcp_input.c ... control units for receiving ACK (modified the source code of original TCP )
- tcp_output.c ... control units for transmitting data packets (modified the source code of original TCP)
- tcp_subr.c ... sub functions for TCP (modified the source code of original TCP)
- tcp_var.h ... header file for TCP
Download
Please visit here.
Installing ICIM
In this section, we show an example for installing ICIM in your kernel system. When installing ICIM, some source files are overwritten. So when you modify the files, be careful.
- # cd <$work> (ex. <$work> = ~/work/)
- # mkdir sys
- # cp -fr /usr/src/sys/* sys
- # tar xzvf icim_freebsd_4_10_1.0.0.tar.gz
- # cp -fr icim_freebsd_4_10/* sys
- # cd sys/i386/conf
- # config ICIM
- # cd ../../compile/ICIM
- # make clean
- # make depend
- # make
- # make install
- # reboot
Parameter settings
In this section, we describe parameters of ICIM. All parameters are set by sysctl, and the list of parameters is as follow.
- net.inet.tcp.icim_mode
- Measurement mode switch flag (Default:0)
- net.inet.tcp.icim_cwnd
- Congestion window size ICIM can start measuring the available bandwidth (Default:50)
- net.inet.tcp.icim_nburst
- Number of bursts in a measurement (Default:4)
- net.inet.tcp.icim_tburst
- Upper limit of intervals between packets (Default:100)
- net.inet.tcp.icim_dbg_level
- Debug level (Default:0)
If you use ICIM, set to the icim_mode parameter before begining data transmission.
# sysctl net.net.tcp.icim_mode=1