Hybrid HTTP | ||||||
Hybrid TCP-UDP HTTP ProtocolSemester: Spring 99
Creating a new Proxy server which implements the new Hybrid TCP-UDP
HTTP protocol.
Most of the web traffic today uses the HyperText Transfer Protocol (HTTP). Traditionally, HTTP uses the Transmission Control Protocol (TCP) as its underling transport protocol. TCP provides several important services to HTTP, including reliable data transfer and congestion control. Unfortunately, TCP is poorly suited for the short conversations that comprise a significant component of the web traffic. The overhead of setting up and tearing down TCP state amortizes poorly for these small connections. We have designed and analyzed a hybrid scheme to address this issue. The scheme uses either TCP, or the User Datagram Protocol (UDP) as the underlying transport protocol for carrying web traffic. UDP is used for short transfers while TCP is used for all other transfers. In this manner, we avoid the extra TCP overhead for short connections, but benefit from the reliable delivery and congestion control that TCP provides. We present the result of simulation experiments to quantify the performance advantages of the hybrid scheme. As the World Wide Web (WWW) and other Internet application, such as real-time audio and video become more and more popular, both the Internet itself and the most popular sites are suffering from severe congestion. This congestion is perceived by users as service delays at best, and as a lack of service at worst. A variety of approaches, such as the replication and distribution of servers, are being used today to improve server latency and reliability. This project takes a different approach : it proposes dynamic transport protocol selection for reducing service latency, traffic overhead, and server load by giving services a dynamic choice which transport protocol to use. Most services usually use a single transport protocol, such as the transmission transport protocol (TCP), for all traffic. This project argues that dynamically selecting the underlying transport protocol (e.g., TCP or User Datagram Protocol (UDP)) can substantially improve service latency and reduce network traffic and server load. The mechanisms discussed in this project apply to many client-server protocols: we concentrate on the HyperText Transport Protocol (HTTP) as the canonical example. Available Internet traffic traces show that a large part of web traffic consists of short HTTP transactions: about 40%-50% of web transfers can fit in a single 1.5 KB datagram, that size of an Ethernet maximum transmission unit (MTU). In such cases, using TCP requires 4-5 times the number of packets compared to if UDP was used instead. Using UDP reduces network traffic as well as client-observed latency. In our project we mainly address the client side
of this protocol by building a new proxy server (this proxy is based on
the Jigsaw Team proxy server) which will use the new protocol. That way
any browser on the market can use this new protocol by simply connecting
to our proxy.
In our project we applied the HTTP-TCP/UDP protocol to a proxy server. The proxy server receives a normal HTTP-TCP request from a client (browser); it then prepares a UDP request that holds the URL, and two port numbers, one for the UDP listening connection and one for the TCP connection. After the preparation of the request the proxy sends it to the desired server of the client. Finally the proxy server waits for the reply from the server by listening for it on both connections, the UDP connection and the TCP connection. The decision whether to send a UDP reply or a TCP reply is left to the target server. If the target server is built according to the HTTP-TCP/UDP protocol it will send the reply according to the size of the file, and will answer either to the TCP connection or the UDP connection. If the targeted server is a normal HTTP-TCP based server then it will not recognize the UDP request packet, and it will not respond to it. Consequently the proxy server will receive a TIMEOUT event. Therefore the proxy will try to connect to the target server again, only this time it will use a normal HTTP-TCP request. In both cases, once the proxy will receive the reply from the target server it will send the reply back to the client by using an HTTP-TCP reply. Throughout the entire mentioned process the client sees the proxy server as a normal proxy server. Step 1: The client (browser) asks the Jigsaw’s proxy server for a file, using the normal HTTP protocol. The request is accepted by the httpd class. Step 2: The httpd asks the resource store for the requested file. Step 3: The first and only object in the resource store is a ProxyFrame object. Step 4: The ProxyFrame asks Jigsaw’s Client API to get the file from the appropriate server. The Client API’s first class is HttpManager. Step 5: HttpManager looks for cached HttpServer, or creates a new one. (In our case, he will create HttpTcpUdpServer objects) now he’ll ask the HttpServer to get that file for him. Step 6: The HttpTcpUdpServer will connect to the targeted server, and will ask, using our Hybrid HTTP, for the desired file. When it gets an answer, the reply returns all the way back to the client.
As we can see from the graphs (A and B), the saved time is due to two factors. The first is the use of the UDP connection to transfer the files, thus eliminating the TCP overhead. The second one is that as there is an increase of delay in the network than we will save more time by using a UDP protocol instead of the TCP protocol. These two factors are the reasoning behind the difference between the normal HTTP protocol and our hybrid HTTP protocol. This is shown clearly at the “Afternoon” column in graph B. The same site, in faster network, will show less difference. And in Dilbert’s comics, because the proportion between the UDP files and the TCP one is smaller, we see a smaller difference in any network speed.
This project introduced and developed a hybrid TCP-UDP
transport layer scheme for HTTP. The hybrid TCP-UDP scheme combines the
low cost of using UDP with the high reliability and congestion control
features of TCP. It benefits from the low overhead of using UDP for short
transfers, and for large transfers, it is able to use TCP for reliable
delivery and good congestion behavior. Our simulation experiments verified
these gains.
students: Ron Arazi Semuel Fomberg cn1s99@comnet1.technion.ac.ilsupervisor: Vitali Sokhin |