March 6th, 2007 by Paul Kroon
A Measurement-Based Study of the Optimal Value of DNS Timeouts
While in college at Ursinus, I did a research paper over a summer and a semester on DNS. Below are links to my paper, the tools I used, and my abstract.
The Domain Name System (DNS) is an Internet service that allows domain names, such as www.ursinus.edu, to be used in place of IP addresses, such as 198.17.40.106. DNS is consulted every time a host attempts to use a domain name for email, instant messaging, and many other Internet applications. Despite having been developed over 20 years ago, DNS is extremely robust. However, it is still possible for errors to occur. Since DNS queries and responses are sent via UDP, DNS implements its own reliability mechanism. When a system does not respond to a query, another request is sent after a timeout under the assumption that an error occurred. Our research explored the plausibility of reducing the default timeout for DNS queries.
To examine this timeout we used several methods and scripts to compile a large list of remote nameservers. We then measured the round-trip times from a local DNS server to a sample of the remote nameservers. We found that the vast majority of round-trip times were less than 1 second. We noted that current implementations of nameservers use a default timeout starting at 5 seconds. We therefore propose that the default timeout can be significantly reduced, noticeably enhancing user-perceived performance while limiting the overall negative impact on the network.
April 29th, 2006 by Paul Kroon
Setting Up Ursinus Wireless in Ubuntu Dapper on Latitude D610
In order to get the wireless working on the Ursinus Dell Latitude D610 laptops under Ubuntu Dapper, two mains steps are required. First, ndiswrapper must be installed to get the laptop to recognize the wireless card. Second, wpa_supplicant must be installed and configured to allow connection to the Ursinus wireless network.
To install ndiswrapper:
sudo apt-get install ndiswrapper-utils
*It is possible that ndiswrapper is already installed.
Update: I have found that the version of ndiswrapper in the repositories (1.8 as of 3/6/07) does not work properly. The solution has been to install a newer version (1.31 is what I got to work) from the current version of the code. Follow the INSTALL instructions found with the source code. If you encounter problems, an error with “modpost” or something similar, you probably need to install the kernel headers. This should be enough to install them:
sudo apt-get install linux-headers-`uname -r`
Next, we need to make sure that Ubuntu isn’t trying to use a driver of its own:
sudo gedit /etc/modprobe.d/blacklist
Check this file to see if you can find “blacklist bcm43xx”. If you don’t see it, add it to the bottom of that file, save it, then close gedit. Now make sure that the kernel isn’t using any driver currently with:
modprobe -r bcm43xx
modprobe -r ndiswrapper
Now we need to set up ndiswrapper. You’ll need to get the driver files for the card for Windows. You can try to find them in your Windows partition if it’s mounted by `locate bcmwl5.inf`. Otherwise, you can just download it from Dell. Once you have this downloaded, you can extract the driver with `unzip R115320.EXE`. Now you’ll need to find bcmwl5.inf in the files that were just extracted. Once you find it, this will install it and set ndiswrapper up with it:
ndiswrapper -i bcmwl5.inf
ndiswrapper -m
You can use `ndiswrapper -l` to make sure it installed correctly.
Now restart your computer. When it starts back up do the following:
dmesg | grep ndiswrapper
You should see lines similar to:
[89.36] ndiswrapper version 1.8 loaded (preempt=yes,smp=no)
[189.40] ndiswrapper: driver bcmwl5 (Broadcom,12/22/2004, 3.100.46.0) loaded
[19.46] ndiswrapper: using irq 209
[10.66] wlan0: ndiswrapper ethernet device 00:00:00:00:00:00 using driver
bcmwl5, 14E4:4318.5.conf
If you don’t, try `modprobe ndiswrapper` and then try the dmesg again. If this fixes the problem, you may need to add “ndiswrapper” to the bottom of /etc/modules.
[4363141.967000] bcm43xx: Error: Microcode “bcm43xx_microcode5.fw” not available or load failed. You can check to make sure that the card is working properly with the kernel with:
iwconfig
You should notice an interface possibly named “wlan0,” but it could also be an “eth” interface. Either way, it should be obvious that it is there, primarily from the top line that should be something like:
IEEE 802.11g ESSID:off/any
If you have this, then you should now be ready to connect to a wireless signal. You can scan to see what is around with:
iwlist scan
If you have a router, or some other security-disabled network around, you can connect to it by doing:
iwconfig wlan0 essid "ssid"
sudo ifup wlan0
You’ll need to replace wlan0 if your interface is different and ssid with the appropriate site ID.
To install wpa_supplicant
sudo apt-get install wpa_supplicant
After this is installed, you’ll need to configure it:
sudo gedit /etc/wpa_supplicant.conf
The setup for UC should be:
network={
ssid="ursinus"
key_mgmt=IEEE8021X
scan_ssid=1
eap=PEAP
identity="URSINUS\username"
password="password"
phase1="peaplabel=0"
phase2="auth=MSCHAPV2"
}
Add this to the bottom of that file, substituting username and password for your Ursinus username and password. To make sure that your password is better protected, run:
sudo chmod 700 /etc/wpa_supplicant.conf
sudo chown root:root /etc/wpa_supplicant.conf
This will make sure that only root can read this file.
In order to start wpa_supplicant, run:
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -D wext -B
Replace “wlan0” as necessary. You can set this up to run at boot by:
sudo gedit /etc/init.d/wpa_supplicant
Add:
#!/bin/bash
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -D wext -B
Then run:
sudo chmod +x /etc/init.d/wpa_supplicant
sudo update-rc.d wpa_supplicant defaults
Now you should be able to connect to the “ursinus” network in the same method as above:
iwconfig wlan0 essid "ursinus"
sudo ifup wlan0
Extra modifications:
Keeping the Interface Names the Same
If the interface name “wlan0”, “eth0”, etc., changes often after rebooting, causing problems with wpa_supplicant, you can change a few things to help make sure it stays the same.
sudo gedit /etc/network/interfaces
Edit this file by removing the interfaces you don’t want the wireless to use if it’s there, and add the following lines using the interface name you want to use:
auto wlan0
iface wlan0 inet dhcp
Also, you can edit /etc/iftab and make sure that the interface name for the wireless is what you want it to be.
Additional Configuring for wpa_supplicant
You can use `man wpa_supplicant` or search Google for more information about configuring wpa_supplicant to suit your needs, but a common one is using WPA-PSK, or WPA security with a passphrase. wpa_supplicant comes with a program to do this work for you. Run the following command to add the settings to the configuration file, replacing ssid and the passphrase:
sudo wpa_passphrase ssid passphrase >> /etc/wpa_supplicant.conf
Updates
Tuesday, March 6, 2007
- Version of ndiswrapper doesn’t seem to work, need to compile from source with newer version
- The “microcode” error message relates to the bcmwxx module, not a problem when using ndiswrapper. Taken out of howto because the driver is not ready to be used in place of ndiswrapper.
- There seems to be some error when running wpa_supplicant with the driver specified to be ndiswrapper. If wpa_supplicant gives you problems with ndiswrapper, use wext. If wext gives you problems, try ndiswrapper.