I am a fan of podcasts. In particular, I listen to some of the podcasts from Leo Laport's network. FLOSS Weekly is one of these podcasts. With Chris DiBona at his side, Leo interviews people who have had a significant impact on the open source community in one form or another. Last week they had a very good episode. It can be found here. In this podcasts, a couple of the people who work on SAMBA were interviewed. At about 40 minutes into the episode, they started talking about SMB2 in Vista.
Let's side step this subject for just a couple of paragraphs. Not to assume that you are tech illiterate, but just in case: SMB is the protocol used in windows for sharing files, folders, printers and other related tasks. SAMBA is an open source implementation which allows a non windows machines to talk to windows networks. Windows Vista sports a fresh implementation of their protocol with a very innovative name: SMB2. This is hyped to be one of the big innovations for Vista within the networking context Here is a quick quote which should serve as a reference (you can find the whole entry here):
Back to the podcast. So they are geeking out, talking about all they have done in SAMBA, all the people they have reached, and how important their work is for the industry. SBM2 comes to the discussion. They start talking the techniques they use in order to implement the server/client that talks to Windows. I have to admit, that to this mere mortal, it sounds a lot like reverse engineering, but they insist it's not. In any case, part of the process is doing something on a windows machines, and analyzing the network to see what data is transmitted as a result. One of the machines shares some resource, while another does some operation to the resource shared.
We have listened to our customers on the limitations that were present with the original SMB protocol and have removed the restrictive constants in the protocol so we never need to worry about the protocol itself being the limiting factor for scalability. This includes increasing the number of concurrent open file handles on the server, the number of shares that a server can share out amongst other key enhancements which include:
- SMB2 will have transaction support, i.e. full two-phase commit transactional semantics are available over the new SMB protocol. This takes advantage of the new Transactional File System (TxF) feature in NTFS in Longhorn Server
- Client Side Encryption. This allows over the wire encryption of data, i.e. a file is encrypted on the client and sent out to the server where previously the file would have been sent in the clear over the wire and encrypted on the server
- Support for symbolic links over the new protocol
- Supports an arbitrary extensible way of compounding operations to reduce round trips. This is what will primarily enable less chattiness which has often been a major pain point
- The new protocol supports larger buffer sizes than previously allowed
In Windows XP (and previous) when attempting to delete a file, one packet is sent while another is sent back as confirmation. Till now everything sounds cool. Now let's try to do the same with our magical Vista beta. When attempting to delete a file through the console, 6 - 8 packets are sent. Right of the bat this sounded bad. Simply because it's a 600 - 800% increase in traffic. Having said that, 8 packets isn't a big deal for a local network. Depending on the size of a particular operation, it's possible to take that hit. Then they tried to do the same thing, but instead of using the console, they delete the file through a graphical window. After all this is the preferred interface of the average Windows user.
How many packets where sent in order to complete the operation? 20? 30? Come on, take a guess! [Insert drum roll, or other suspenseful effect here]... 1500 packets. Yes, 1500 packets. I'm not joking, and neither were they.
I will one more time reference my awesome (sarcasm) job. We have about hundreds of people on a windows network. As part of day to day work, we need to move files around the network. You don't need a CCNP certification to imagine what will happen to the bandwidth of our lovely network (sarcasm again) if something that takes 1 packet suddenly needs 1500 packets to complete an equivalent task. There goes my already limited bandwidth. Better yet, this could be a denial of service attack, sponsored by the operating system we already paid a lot of money for. What really cracks me up is that Microsoft is using the idea of "scalability" as one of it's main points for hyping the new protocol.
Why do they need to transmit all that data just to simply delete a file? According to one of the people being interviewed, the good ol' folks at Microsoft felt a need to f**k with SAMBA. It's very possible. SAMBA is a very popular alternative, and it could argued that it was hurting their market share. On the other hand I try ('try' being the keyword) to be fair. Consider the source. The SAMBA guys are not going to publicize anything having to do with Microsoft loving them.
What's really depressing is that I'm not the first, nor the last person to say this. There is a list of complaints of why Vista sucks longer than they orthodox church's complaints on modern day life. In the end, we will buy it, install it, scream at out innocent monitors in frustration, reboot, rinse and repeat.
I for one have decided no more. XP is officially the last time I will ever use Windows. I have been using Linux for a while now. I still keep XP my PC on dual boot for the sake of other people in my household who cannot survive without a square button on the bottom left hand side of their monitor which reads "Start". I know what some of you are thinking. There are tons of alternative operating systems, window managers and transformation packs which offer you something that looks and works enough like windows so you can emulate the environment, but different enough to keep the makers from getting sued. It simply doesn't work. Users feel comfort when they know exactly what to expect. Even if you promise them it looks and feels the same, they will fear change.
I've sat through all the motivational speeches about how one person can make a difference. I'll insist on it anyway: I'm just one dude. There are other people who share my opinion, and maybe even a few who will take similar action. In any case, the collective will continue to support Microsoft and their crappy products.
Don't get me wrong, I don't hate the people at Microsoft. If they can make money and support their operation, great! More power to them. I just feel sorry of all the screaming at the innocent monitors who are not at fault. The banging at the poor keyboards and mice. It brings a tear to my eye every time I think about it.