Archive Page 2

A Measurement-Based Study of the Optimal Value of DNS Timeouts

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.

Abstract Paper Tools (tar.gz) Tools (zip)

The Domain Name System (DNS) is an Internet service that allows domain names, such as, to be used in place of IP addresses, such as 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.

Ubuntu Wireless Manual Setup on Dell D610 with Active Directory Authentication

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, 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:


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:


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


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



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.