This is a reaction to the academic paper that came from MIT's Laboratory of Computer Science entitled "End-to-end Arguments to System Design". It was authored by J.H. Saltzer, D.P. Reed and D.D. Clark.
From what I understand, the paper's point is for software architects and network designers to be careful about putting in too much faith in checks and balances in the transmission medium of a computer network.
This argument actually has a parallelism on how our government does its operations. Excessive regulation on our public procedures have made government transactions redundant and/or snail-paced. You would have to get a signature on each and every public office that you would pass thru, in order to get a government document that you need. Sometimes, the signatures are just ministerial, sometimes, they really do check your papers. But one thing is sure. By the time you are through getting the document, you would have already aged ten years. Im not kidding, try to get a building permit from the city hall.
In the same way, multiple error checking in the the different layers of data transmission may have a negative impact in the speed and accuracy of the data being transmitted over its medium. The author is making a point that by removing, or at least, minimizing these checks on the lower layers, you would be able to increase the speed and efficiency of your transfer, as well as the use of the medium on which the transfer is occurring. In this case, improved network latency and minimum consumption of bandwidth.
I agree with the point that he is making. I had a relatively similar experience of this scenario in my work. You see, Im a network operator. One of the users of our network has a video conferencing project that they are trying to test out. They ran it over our network, and were a bit disappointed that there were synchronization issues when it comes to the audio and the video. For the first few minutes, audio and video were in sync. After a certain time, audio or video would lag.
Now when we use our offices' "proprietary, commercial" video conferencing unit, everything would function perfectly. When we used an open source video conferencing product that we downloaded from the internet, again, everything would be ok. Take note, locations and network infrastructure are not changing. Everything is the same. The only difference were the applications. The developers of the project were thinking why their application was working perfectly on their local area network (LAN), but was malfunctioning when run on a wide area network (WAN). I could not give an expert opinion on it, since I lacked the proper data. But my guess was that their application was working perfectly inside their lab, since packets only had to traverse one network equipment, which was their network switch, in order to travel from source to destination. In a wide area network scenario, the packets had to go thru diverse router and switches, and in the process, go up and down its communication layers. My guess is this may have contributed to the audio and video being out of sync.
I think their application should have the necessary "checks and balances" to make sure that data is received in a way that would still make the application usable, even if it passes thru a flaky network. Reason being the motivation for them to make such an application is for it to run over the internet. The internet, per se, is a flaky network. For the application to run well inside a LAN, and for it to be buggy when run over a WAN, "might" be an indication of the point that the author of the paper is trying to make, which is end to end communications should be ensured by the application. Notice that I used the word "might", since I have no proof of this.
They were asking if anything was wrong with the network, and I said no. My basis on this was that ping (a tool to see if you can reach a certain network device) was ok, and error/dropped packets (which we were monitoring) were non existent on the link. So from a network operators' perspective, the network was functioning fine.
Given the benefit of the doubt, even if there were configuration changes or network tweaks that could have been done on our network, and it improves the performance of their applications, how would we go about with this if it were a long distance test, say, one end of the video conference would be at our office, and the other end would be in the US. Would it mean that we would need to tweak all the devices that the packets would traverse. That would be a impossible job since packets would traverse several local and international networks.
To go back to our original trail of thought, the parallelism on the example that I cited would be that the network application should adopt to the communication medium, and should make sure that its end to end needs are met by checks and balances on the application itself.
By the way, I find the layered approach in network communications helpful in a multi-vendor setup, since it delineates the functionality of the products of different vendors :-)
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment