Installing BIC or CUBIC Linux Kernel
Step 1: Download Kernel and Patches
- Download Linux Kernel 2.4.25 to /usr/src [Download
Now]
- Download the Web 100 Patch for Linux 2.4.25 to /usr/src [Download
Now]
- Apply the BIC or CUBIC Patch for Linux 2.4.25 to /usr/src [BIC CUBIC
]
Step 2: Unpack and Patch Kernel
- "cd /usr/src"
- "tar -xzf linux-2.4.25.tar.gz"
- "tar -xzf web100-2.3.6-200403191530.tgz"
- "cd linux-2.4.25"
- "make mrproper"
- "make clean"
- "patch -p3 < web100/web100-2.4.25-2.3.6-200403191530.patch"
- BIC: "patch -p1 < ../bictcp-web100.2.3.6-kernel2.4.25.patch"; CUBIC: "patch
-p1 < ../cubictcp-web100.2.3.6-kernel2.4.25.patch"
Step 3: Configure Kernel
-
"make xconfig" to configure Kernel based on your machine hardware.
For more information on Kernel configuration, visit TLDP
and LinuxFocus.
- To enable Web100, do the following steps. For more information about Web100, visit Web100 site:
- Code maturity level options
- [*] Prompt for development and/or incomplete code/drivers
- Processor type and features
- [*] Symmetric multi-processing support (Select for SMPs only)
- Networking options
- [*] Web100 networking enhancements (NEW)
- [*] Web100: TCP statistics (NEW)
- (0666) Web100: Default file permissions
- (0) Web100: Default gid
- [*] Web100: Net100 extensions (NEW)
- [*] Web100: netlink event notification service (NEW)
- (7) Web100: default winscale initial value (NEW)
- For Intel e1000 NIC Users: Turn on NAPI option
- Network Device Support
- Ethernet (1000 Mbit)
- Intel(R) PRO/1000 Gigabit Ethernet support
- Use Rx Polling (NAPI)
Step 4: Compile and Install Kernel
- "make dep"
- "make bzImage"
- "make modules"
- "make modules_install"
- "make install"
- grub.conf users: edit file /boot/grub/grub.conf, change the line with
"default" to "default=0". lilo.conf users: read LinuxFocus
for instructions
- "shutdown -r now"
Step 5: Set Kernel Parameters for GigaBit WAN
-
sysctl -w net.core.rmem_max=33554432
-
sysctl -w net.core.wmem_max=33554432
-
sysctl -w net.core.rmem_default=65536
-
sysctl -w net.core.wmem_default=65536
-
sysctl -w net.ipv4.tcp_rmem="4096 33554432 33554432"
-
sysctl -w net.ipv4.tcp_wmem="4096 33554432 33554432"
-
sysctl -w net.ipv4.tcp_mem="33554432 33554432 33554432"
-
sysctl -w net.core.netdev_max_backlog=1500
-
ifconfig eth0 txqueuelen 4000
-
sysctl -w net.ipv4.web100_default_wscale=7
-
sysctl -w net.ipv4.WAD_IFQ=1
-
For Intel e1000 NIC Users: Add "options e1000 RxDescriptors=4096" into /etc/modules.conf
If you have any questions, please send email to sha2@ncsu.edu or rhee@ncsu.edu.