Monday, May 16, 2005

Skype Bits and Bytes

Lars writes rather dismissively about the bandwidth requirements for Skype over a wireless data connection, quoting and attempting to correct an article titled "Why Skype for Mobile isn't a Big Deal" in an online publication called The Feature, which is owned by Nokia.

First, the quote from The Feature:

Skype says its software uses 0-0.5 KBps when idle, or 3-16 KBps when on a call. That's 30 KB per minute when idle or beween 180 and 960 KB per minute on a call -- which on many mobile networks would run up a huge bill quite quickly.
Then, Lars's attempt at countering the math:

To use the author's own words, there is a bit of a disconnect in his calculations between bandwidth (measured in kbps) and storage (measured in KB) and consequently between his deductions and reality. Multiplying the kbps by 60 does NOT lead to a KB value per minute (as the author has done). There are 1.000 bits in a kilobit (10^3 bits) and 1.024 bytes in a kilobyte (2^10 bytes), while one byte consists of 8 bits. So to convert from a bit-value to a byte-value you need to divide the bit-value by 8. Hence, 1.000 bits are 125 bytes. So by using the author's figures, a bandwidth rate of 16 kbps for Skype would actually mean transfering 2.000 bytes per second or 120.000 bytes per minute or exactly 117,1875 KB per minute - a far cry from the 960 KB per minute claimed.
The only problem is, the author of the article in The Feature was directly citing Skype's figures, which are stated in kilobytes per second:

How much bandwidth does Skype use when there are no active calls?

On average Skype uses 0-0.5 kilobytes/sec while idle. This is used mainly for contact presence updates. The exact bandwidth depends on many factors.

How much bandwidth does Skype use while I'm in a call?

Skype automatically selects the best codec depending on the connection between yourself and the person you are calling. On average, Skype uses between 3-16 kilobytes/sec depending on bandwidth available for other party, network conditions in between, callers CPU performance, etc.
So doing the math myself - Skype uses up to 4 kilobits per second (kb/s) while idle, and anywhere between 24 and 128kb/s for an active call. And the original author's math is exactly correct: an idle Skype client will use as much as 30 kilobytes per minute, and a Skype call will consume anywhere from 180 to 960 kilobytes per minute.

Also note that generally-accepted practice is to use the ISO abbreviation "k" for kilo = 10^3, and the character "K", which does not stand for anything, for 2^10. Thus, a kilobit is 1000 bits, a kilobyte is 1000 bytes, and a Kbyte - usually shortened to simply a KB or K - is 1024 bytes.

So a one-minute Skype call will result in data transfer of between 175K and 937K. Using the Vodafone D2 rates Lars quotes, 0.0963 cents (Euro) per KB, that'll cost you between 17 and 90 cents (Euro) per minute. (For those of you in the US, the cheapest Verizon Wireless plan seems to be 60MB for $59.99, or 0.0977 cents US per KB, so that Skype call would cost between 17 and 92 cents US per minute.)

Why Skype chooses to cite bandwidth figures in kilobytes per second instead of the more common kilobits per second is left as an exercise to the paranoid.