
ENHANCE TCP PERFORMANCE WITH MULTIPLE PATH ROUTING BY FRANK E. WATSON B.S., University of Colorado, 2000 A thesis submitted to the Graduate Faculty of the University of Colorado at Colorado Springs in partial fulfillment of the requirements for the degree of Master of Science Department of Computer Science 2005 ii © Copyright By Frank E. Watson 2005 All Rights Reserved This thesis for the M.S. of Computer Science degree by Frank E. Watson has been approved for the Department of Computer Science by C. Edward Chow, Chair Jugal K. Kalita Sudhanshu K. Semwal Date iv Watson, Frank E. (M.S., Computer Science) Enhance TCP Performance with Multiple Path Routing Thesis directed by: Professor C. Edward Chow Latency caused by bottlenecks with in a network can hamper any task regardless of the severity or resources alloted. This thesis talks about a multi-path routing technique to increase bandwidth regardless of a bottleneck. This is done inside the Linux Kernel using IP Tunneling. IP Tunnel is used to mask the route to an intermediate server and the Linux kernel can be modified to alternate and control the IP Tunnel taken automatically without intervention of the user. Taking multiple- routes spreads the hit of a bottleneck but also increases the likelihood of out-of-order packets and duplicate acknowledgment lowering the TCP window size. This thesis also proposes an internal connection-based buffer to solve out of order packets. v Dedication To Dave Lohman, the Unix system administrator for EAS, for inspiring and helping with a facination with the Linux operation system. vi Acknowledgments For years, I had good people who helped me finish my thesis. If it was not for their help, I would have never finished. The first on my list is Yu Chi for all his help with IP Tunnels and the Linux Kernel code. I hope in the next few months, I can return a portion of how much you helped me with my thesis. Thank you Dave Havatin for helping me with learning Lyx and LATEX and leaving me a copy of your disertation in Lyx. I would not of been able to figure out Lyx and LATEX otherwise. Thanks to my Dad and Hwan for letting me live with them for over 8 years while I finished school. Then Dad turning around and virtually buying me a house. Thanks Dad and Hwan! Thanks also to my second family at Circle Drive Baptist Church where I have grown up these last fifteen years. Thanks to Dave Nixon at work for letting me take many hours (191 hours of vacation last year) to finish my tests and work on my thesis. Without your understand and tollerance towards my school work, I would still be working on my thesis. Obviously, I have to thank my advisor. Thank you Dr. Chow for the many encouraging words and the pushes in the right direction when I repeatly hit brick walls. Thanks to Jim Martin, Dr. Kalita, Dr. Semwal and the rest of EAS faculty and Staff who have been my friends, teachers, and mentors over the last 10 years. Finally but not least, thanks to my sweetheart and fianc’ee, Kelly. I look forward to being married and spending the rest of my life with you. Galatians 6:9; Proverbs 3:5 Psalm 115:1 vii Contents 1 Introduction 1 1.1 Goals and Modivation for User Mode Linux . 1 1.2 Goals and Motivation for Multiple Path Routing . 2 2 Techniques for Vitrual Machines 3 2.1 Kgdb overview . 4 2.2 User Mode Linux Overview . 5 2.2.1 Background . 5 2.2.2 The Root File System: root_fs . 5 2.2.3 UML Kernel Executable . 7 2.2.4 How UML Could Be Used . 7 3 Technique for Multiple Path Routing 8 3.1 Iproute2 to create IP tunnels . 12 3.2 Changing the Linux network device driver . 13 3.3 Packet buffering . 15 3.4 Utilizing the Proc File System . 16 3.5 Testing using TC bandwidth limiting . 19 4 Performance Analysis 21 4.1 Baseline results . 21 4.2 Bandwidth controlled scenario . 24 4.3 Weighted scenarios . 27 4.3.1 Weighted paths and one path with small bandwidth . 29 viii 4.3.2 Weighed paths, one path with small bandwidth, and additional paths band- width controlled . 32 4.4 Buffer results . 35 4.5 Summary of results . 36 4.5.1 Multiple path routing . 36 4.5.2 Weighted multiple path routing . 36 4.5.3 Buffering . 36 5 Conclusion and future work 38 5.1 Work contributions . 39 5.2 Additional work . 41 5.3 Future work . 42 5.3.1 A scheduler for applying the weights to each connection path . 42 5.3.2 One-time pad crytograpy using the INET code . 43 5.3.3 Pornography filter within the kernel . 44 Bibliography 45 A Comments on User Mode Linux and Testing Perl Script 48 A.1 Installing the UML utilities . 48 A.2 Compile the kernel the UML kernel . 49 A.3 Creating the root_fs . 51 A.4 Resizing the root_fs . 52 A.5 Parameters for running UML . 52 A.6 Network Setup . 53 A.6.1 Ethertap . 54 A.6.2 Tuntap . 55 A.7 Once inside the UML session . 55 A.7.1 Inside of Slackware – configuring the Slackware root_fs . 56 A.7.2 spawning off xtermals (setting the number of xterminals) . 56 A.7.3 Setting up DNS . 57 ix A.7.4 Installing and uninstalling programs . 58 A.7.5 Configuring the network on startup . 58 A.8 Debugging with UML . 59 A.8.1 Installing the skas patch on the host machine . 59 A.8.2 Crashing gracefully . 60 A.8.3 Using a .gdbinit . 61 A.8.4 Debugging in gdb . 62 A.8.5 Gdb debugging inside Eclipse . 62 A.9 Perl script used for testing . 72 B Instruction manual 74 B.1 Building User Mode Linux . 74 B.1.1 UML Building a UML Kernel . 74 B.1.2 Root file system . 76 B.1.3 Installing UML tools . 76 B.2 Running UML . 76 B.3 Running the perl test files . 77 C Assessment on how INET processes TCP/IP packets 79 C.1 Overview of TCP . 79 C.2 TCP Header and Sk_buff . 80 C.3 Establishing a TCP connection . 83 C.3.1 Inet code processes SYN and SYN ACK . 88 C.4 Connection established . 89 C.4.1 Inet transferring data . 95 C.5 Closing the Connection . 96 C.5.1 Inet closing a connection . 96 C.6 Window . 97 C.7 Checksum . 98 D Comments on TCP structures 100 x D.1 sk_buff . 100 D.1.1 Link list . 101 D.1.2 Packet header . 101 D.1.3 Routing . 102 D.1.4 Control buffer . 103 D.1.5 Stats and Markers . 103 D.2 BSD and INET Sockets . 104 D.2.1 TCP connection using sockets . 104 D.2.2 INET Socket: IP routing . 106 D.2.3 INET Socket: TCP management engine . 107 D.3 Kernel network tips and tricks . 109 D.3.1 Changing a packets sending address . 109 D.3.2 Sending a packet . 109 D.3.3 Receiving a packet . 110 E Media 112 E.1 DVD . 112 E.2 Writing tools . 112 xi List of Tables 4.2 Baseline results . 23 4.4 Direct connection with bandwidth rate limiting . 25 4.6 IP Tunnel with bandwidth rate limiting . 26 4.8 Multiple path routing with bandwidth rate limiting . 26 4.10 Multiple path routing with buffer.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages128 Page
-
File Size-