Transcript 启动tcp流的工具
诺西实习总结报告
王淼
报告提纲
测试的背景
传输协议udt
整个测试脚本的介绍
实习的感受
Page 2
测试的背景
分布式数据库进行数据备份、传输数据的需要
数据库
高效性
backup
数据库
Page 3
数据库
准确性
友好性
udt
传输协议udt
常用传输协议
UDP:无连接的传输协议,不可靠。 在网络质量不好时丢包严重
TCP:面向连接的传输协议,可靠。 在高带宽长距离网络上性能低
udt传输协议(UDP-based Data Transfer Protocol)
由于UDT完全在UDP上实现,并引入新的拥塞控制和数据可靠性控制机制。
UDP
Header
UDT
Header
udt提供了两种传输模式:m2m(memory to memory)
d2d(disk to disk)
Page 4
传输协议udt
关于udt性能的测试
udt的官方文档说即使有500ms的网络延时,在1G bit/s的物理网卡上,速率也能
够达到900Mbit/s以上,并且没有丢包。
测试过程:
udt参数调优
tc(traffic control)队列选择、参数调优
测试结果
tc加延时从0ms一直到500ms,udt流的速率非常稳定,均可以最高达到
950Mbit/s,且丢包率稳定后为0。这证明了udt的高效性和准确性。udt正如它自
己声明的那样: 支持高速广域网上的海量数据传输。
Page 5
整个测试脚本的介绍
测试架构
内核工具tc进行网络延时模拟
启动tcp流工具、监视网络状态工具
测试关注的参数
数据结果分析
虚拟网卡bonding的影响
Page 6
整个测试脚本的介绍
测试架构
脚本的主要架构
Config files
TCP flows
UDT flows
TC
(Number, BW limit, mode(M2M)) (Number, modes(D2D/M2M), BW limit) (Add latency)
Perf. Collection &Statistic
(CPU/memory/transmission status)
Analysis
(dimensionally)
Page 7
整个测试脚本的介绍
测试架构
测试环境搭建
server
TC manager
client
必要配置
打开服务器的路由转发功能 /proc/sys/net/ipv4/ip_forward
配置路由转发,使server和client之间的数据先经过tc manager(对数据包进行延时)处理后
再发送
连接测试
Page 8
整个测试脚本的介绍
内核工具tc进行网络延时模拟
tc(Traffic Control)是linux内核中用于流量控制的工具,它主要是通过在网卡的出
口上建立一个队列来实现流量控制的目的。
Upper layers(TCP, UDP, …)
Input
Forwarding
tc的三个组成部分:
queuing disciplines:指定数据包排列的队列类型
classes:可以为一些特定的数据包设定一个类别
filters:指定想要进行限制的数据包的过滤器
Page 9
Traffic control
Output queuing
整个测试脚本的介绍
内核工具tc进行网络延时模拟
tc三个部分的关系图示:
Filter
class
QDisc
class
QDisc
Filter
Filter
Queuing discipline
Page 10
整个测试脚本的介绍
内核工具tc进行网络延时模拟
我们的测试中,主要是利用tc进行对server与client上通过的数据包进行网络延时,
来模拟实际的网域网传输情况,功能如下图所示:
server
TC
延时100ms
manager
client
为了测试的正确性,如果数据包不是从server发往client(或从client发往server),
则不会被tc过滤器过滤而进行延时操作。
Page 11
整个测试脚本的介绍
内核工具tc进行网络延时模拟
为了达到这个目的,构建的tc结构树如下所示(已经过测试选择队列):
root 1:0
qdisc htb
filter
client ip address
Page 12
1:1
class
filter
server ip address
1:11
class
1:12
class
11:0
delay ?ms
12:0
delay ?ms
111:
qdisc sfq
122:
qdisc sfq
整个测试脚本的介绍
启动tcp流工具、监视网络状态工具
启动tcp流的工具 ---- D-ITG
D-ITG是一种比较流行的数据流产生工具。通过ITGSend发送数据,在目的服务器
上用ITGRecv接收数据。
目的:在server和client之间同时启动udt流和tcp流,观察udt对tcp的友好性,以
及两种数据流共同存在时相互的影响。
实验结果:D-ITG产生的tcp数据流在有udt流和没有udt流两种情况下,速率相差
很小,这也证明了udt对于tcp的友好性。
使用范例:
./ITGSend -a 10.141.7.166 -rp 9500 -C 1000 -u 1000 2000 -l send_logfile
Page 13
整个测试脚本的介绍
启动tcp流工具、监视网络状态工具
D-ITG使用中的问题
server端和client端时间同步
与网络提供的时间服务器同步:由于服务器均不能连接外网,失败
两台服务器之间同步:ntp工具
使用中出现的问题:
Udp流、tcp流丢包率不一样
Receive端cpu占用率过高700%~800%
启动不稳定,在连续case测试时有时ITGSend不能正常启动
ITGDec使用方式不是十分了解
Page 14
整个测试脚本的介绍
启动tcp流工具、监视网络状态工具
监视网络状态工具
iftop
nload
ifstat
功能和需要不太符合
sar
load runner
ntop
都需要图形界面
iptraf
针对测试,需要能够监测网卡经过数据包的源ip地址、目的ip地址以及流量大小统
计,因此使用iftop工具。
Page 15
host port
total flow of each connection
Page 16
average flow in
past 2s, 10s,40s
整个测试脚本的介绍
测试关注的参数
测试中设定的参数
tc设定延时 latency
udt传输模式 udt_type
udt流数量 udt_num
udt流最大使用带宽 udt_bandwidth
tcp流数量 tcp_num
tcp流最大使用带宽 tcp_bandwidth
测试结果关注的参数
udt、tcp流传输速率 throughput
udt、tcp流的client端cpu占用率、mem占用率
udt、tcp流的server端cpu占用率、mem占用率
Page 17
整个测试脚本的介绍
数据结果分析
使用xml作为数据结果分析的格式
编写xml的schema,定义xml文件的格式规范。
从测试的中间结果数据(client端、server端)中抽取、计算数据。
包括从client端的中间结果中提取throughput,从client端的top结果中提取
client进程占用的cpu、mem,以及ssh远程到server端服务器提取server进程占用
的cpu、mem。
将数据整合成xml文档。
将xml导入excel表格, 然后编写程序使excel将特定的数据区域自动绘出数据图线。
Page 18
Page 19
整个测试脚本的介绍
虚拟网卡bonding的影响
发现问题
当将在本地服务器上配置好的脚本放到慕尼黑服务器上之后,数据结果较之前性能
下降很多。Top命令发现所有的软件中断全部分配到一个cpu上,负载严重不均衡。
可能原因
虚拟网卡bonding
慕尼黑的testbed上面的网卡是用两块物理网卡bonding成一块虚拟网卡来使用的。
也许虚拟网卡会对负载均衡产生影响。
在本地机器上搭建虚拟网卡环境,测试各种bonding工作模式,并尝试将不同网卡
中断号上的负载分配到不同的cpu上(smp_affnity配置),但是使用tcpdump抓
包分析发现,似乎目前的虚拟网卡工作模式的功能并没有非常完善,或者不能适用
于我们测试的特殊环境。
Page 20
实习的感受
做事情头脑要清晰,细心谨慎,考虑全面。编程序时尽量避免等到整个程序跑起来
出问题再回头检查。
对自己的任务应该全力以赴,做事情要负责任,不能推脱。自己要努力成为让人信
任的人。
英语听说能力很重要。
在和别人交流时,要表达清晰,尽量不要胆怯。
善于学习,养成习惯把解决好的问题记在本上,下次再遇到的时候就不必再费力
google了。
反思:做事情一定要有效率,要善于和别人交流,要对自己有正确积极的自我评价。
Page 21
Thanks!