Overview
We implement ImTCP and ImTCP-bg (one of applications using the measurement results of ImTCP) by modifying the FreeBSD version 4.10 kernel system. If you want to use ImTCP(-bg), download the following archive file and rebuild your kernel system.
imtcp_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
- ImTCP ... kernel configuration for ImTCP
- netinet
- imtcp.c ... ImTCP measurement units
- imtcp.h ... ImTCP measurement units (header file)
- tcp_imtcp.c ... ImTCP control units
- tcp_imtcp.h ... ImTCP control units (header file)
- 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
When you install ImTCP(-bg), the value of HZ becomes important. The accuracy of measurement result depends on the parameter HZ. When HZ is set to large value, you can obtain the bandwidth information more accurately. On the other hand, setting the large value to HZ affects the performance of your system. So when determining the value of HZ, you should consider the trade-off relationship between the accuracy of measurement result and the performance of the system.
For more information you can read [3], and you can change the value of HZ by modifying i386/conf/ImTCP.
Download now
Please visit here.
Installing ImTCP and ImTCP-bg
In this section, we show an example for installing ImTCP(-bg) in your kernel system. When installing ImTCP(-bg), 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 imtcp_freebsd_4_10_1.0.1.tar.gz
- # cp -fr imtcp_freebsd_4_10/* sys
- # cd sys/i386/conf
- # config ImTCP
- # cd ../../compile/ImTCP
- # make clean
- # make depend
- # make
- # make install
- # reboot
Parameter settings
In this section, we describe parameters of ImTCP(-bg). All parameters are set by sysctl, and the list of parameters is as follow.
- net.inet.tcp.imtcp_mode
- Measurement mode switch flag (Default:0)
- net.inet.tcp.imtcp_streams
- Number of streams per measurement (Default:4)
- net.inet.tcp.imtcp_packets
- Number of packets per stream (Default:10)
- net.inet.tcp.imtcp_gamma
- Smoothing parameter of measurement result (Default:12)
- net.inet.tcp.imtcp_delta
- RTT threshold (Default:130)
- net.inet.tcp.imtcp_pct_high
- Extra parameters for ImTCP (Default:55. used for calculating the available bandwidth)
- net.inet.tcp.imtcp_pct_low
- Extra parameters for ImTCP (Default:55. used for calculating the available bandwidth)
- net.inet.tcp.imtcp_pdt_high
- Extra parameters for ImTCP (Default:40. used for calculating the available bandwidth)
- net.inet.tcp.imtcp_pdt_low
- Extra parameters for ImTCP (Default:40. used for calculating the available bandwidth)
If you use ImTCP and ImTCP-bg, set to the imtcp_mode parameter before begining data transmission.
case of ImTCP: # sysctl net.net.tcp.imtcp_mode=1
case of ImTCP-bg: # sysctl net.inet.tcp.imtcp_mode=3