启动tcp流的工具

Download Report

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!