1 背景
TCP协议增强器,是指将TCP/IP协议栈中传输层的TCP协议进行增强,使之符合一些复杂网络环境的参数要求(如时延、误码率、速率等)的一种应用层软件技术,将TCP协议增强器编译在PC上,可以作为一般网络和复杂网络通信的桥梁,或者说转换网络环境的网关,其应用示意图如下:
上图中,客户端如果要访问服务器网页,由客户端发送的连接请求经过左边的TCP协议增强器GW1增强,成功传输到右边的TCP协议增强器GW2,然后转换成原来的TCP包再发送给服务器,这样就能在复杂网络环境下也能建立连接并进一步传输数据。
TCP协议增强网络系统的关键部分是TCP协议增强软件,这是在github上可下载的开源软件,实现在Linux平台上,编译后软件运行在应用层,将传输层的TCP协议进行增强,转换成复杂网络环境需要的协议,适应某些网络环境的复杂性。本片博客中说明了该软件的编译和配置,并搭建模拟通信环境,对于TCP协议增强器的技术实现方案进行测试和抓包验证。
2 要求和术语
TCP增强网络系统的一般技术要求:
(1)两个增强器直连:网络层Ping通,传输层正常进行Socket通信,应用层正常进行HTTP传输;
(2)两个增强器通过网线连接同一个路由器,:网络层Ping通,传输层正常进行Socket通信,应用层正常进行HTTP传输;
其中TCP协议增强器应用软件按照编译方式的不同分为TUN模式和TAP模式,前者是点对点方式,后者是模拟以太网设备的方式,本博客主要介绍TUN方式。
术语
TCP:TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,广泛应用与互联网TCP/IP协议栈的传输层中。
TAP:TCP协议增强器的TAP模式,也可说是以太网连接模式。此外TAP还是一种虚拟网卡模拟方式.
TUN:TCP协议增强器的TUN模式,也可以说是一种点对点设备。此外TUN还是一种虚拟网卡模拟方式.Tap/Tun虚拟网卡工作原理:http://www.ibm.com/developerworks/cn/linux/l-tuntap/
Namespace:一种虚拟空间的实现方式,简单来说就是在一台PC上可以实现类似于两台PC通信的效果,将TCP协议增强器应用软件放在客户端虚拟空间内,然后虚拟空间外的浏览器就可以认为TCP协议增强器是在另一台PC上。在Linux上创建虚拟空间参考:http://blog.csdn.net/dog250/article/details/26147357
3 编译
源码编译
首先介绍TAP模式的TCP协议增强器源码编译过程:
1 在Ubuntu平台上解压缩源码包
2 解压后进入source文件夹,修改Makefile.in文件中Version` on`date`\nCompile-time改为Version` on `date` Compile-time,即用空格代替原来的”\n”
2cd ../apps
3./configure
4cd ../source
5./configure --gateway=yes –tap=yes
6cd ..
7make clean,make
再介绍TUN模式的TCP协议增强器源码编译过程:
1 在Ubuntu平台上解压缩源码包
2 解压后进入source文件夹,修改Makefile.in文件中Version` on`date`\nCompile-time改为Version` on `date` Compile-time,即用空格代替原来的”\n”
2cd ../apps
3./configure
4cd ../source
5./configure --gateway=yes --tun=yes
6cd ..
7make clean,make
4 测试
4.1 TCP增强器软件与客户端独立的方案
4.1.1 测试拓扑
4.1.2 测试步骤
1.内核配置。按照上述的内核配置内容修改rp_filter和reverse path
2.源码编译配置。按照上述的源码编译内容编译成TUN模式。
3.工具安装。安装必备工具brctl和Wireshark。
4.网络地址配置。按照下面的ip配置给各个网口分配ip地址
注意:服务器端要把相邻网口的IP设为默认网关,这样在Ping的时候才能让网口找到不同网段的目的IP地址。
5.TCP协议增强器的resource file(rfile)中绑定各个网口,并开启,rfile配置见user_manual。
6. IP和rfile确定正确配置完后,开启两个TCP协议增强器。
7. 在客户端上ping服务器地址192.168.2.2,能够ping通则进行下一步。在客户端PC上运行socket程序客户端并指定本机ip(192.168.1.2),同时在服务器PC上运行socket程序服务器端并指定本机ip(192.168.2.2)和对端ip(192.168.1.2),socket通信成功则进行下一步(socket程序见其他博客)。在中间的PC上运行Wireshark抓包。
8. 确保服务器端Apache开启后,在客户端PC的浏览器输入服务器ip(192.168.2.2),能正确显示预先写好的服务器页面,包括文字和图片,并能下载服务器上的文件。这时同样在服务器端PC上运行Wireshark抓包。
4.2 TCP增强器软件内置于客户端(虚拟空间内)
4.2.1 测试拓扑
4.2.2 测试步骤
1.内核配置。按照上述的内核配置内容修改rp_filter和reverse path
2.源码编译配置。按照上述的源码编译内容编译成TUN模式。
3.工具安装。安装必备工具tunctl/brctl和Wireshark在客户端PC上创建Namespace,并在虚拟空间Namespace上启动TCP协议增强器(还有一种方案是在虚拟空间Namespace上创建虚拟网卡)
4.网络地址配置。按照下面的ip配置给各个网口分配ip地址:
5.在TCP协议增强器的resource file(rfile)中绑定各个网口,并开启,rfile配置见用户手册。
6. IP和rfile确定正确配置完后,开启两个TCP协议增强器。在这里将4和6所述的操作都写在一个shell脚本中,只需执行这个脚本文件即可。
7. 在客户端上ping服务器地址192.168.2.2,能够ping通则进行下一步。在客户端PC上运行socket程序客户端并指定本机ip(192.168.1.2),同时在服务器PC上运行socket程序服务器端并指定本机ip(192.168.2.2)和对端ip(192.168.1.2),socket通信成功则进行下一步(socket程序见其他博客)。在中间的PC上运行Wireshark抓包。
8. 确保服务器端Apache开启后,在客户端PC的浏览器输入服务器ip(192.168.2.2),能正确显示预先写好的服务器页面,包括文字和图片,并能下载服务器上的文件。这时同样在中间的PC上运行Wireshark抓包。
5 功能配置/注意事项
在测试过程中,如果发现传输速率过慢,则可以在rfile配置中对传输速率进行更改,如果发现传输到一部分断开传输,则对缓冲区进行调整。具体调整见TCP协议增强器目录下内置的配置手册。