mptcp学习

17
MPTCP学习 [email protected] 2016-06

Upload: hubugui

Post on 08-Apr-2017

275 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: MPTCP学习

MPTCP学习[email protected]

2016-06

Page 2: MPTCP学习

目录•介绍

– Multipath TCP Data transfer– MPTCP over WiFi/3G– 官方性能测试-50Gbps

•常见QA• iperf流量测试

– 准备– 环境– 交换机限速– TCP流量– MPTCP流量– 灾备问题

•可行性•参考

2

Page 3: MPTCP学习

介绍• What

• MPTCP是一种基于TCP的传输层协议,利用多IP地址/网卡同时传输数据,提高吞吐率• 延续标准TCP Socket API,应用软件无须修改

• Why• Benefits of this include better resource utilization, better throughput and

smoother reaction to failures• mobile hosts to handover traffic from WiFi to 3G, without disrupting the

application• IPv6/IPv4 coexistence

• How• 利用双方多个IP地址的多条组合来建立多个TCP连接(subflow),并行传输数据

• 标准• IETF组织发布实验标准RFC6824, 2013年

• 实现• 2009年开始比利时UCL大学一直在维护基于Linux内核的版本

• 最新V0.90/linux-image-3.18.20-90-mptcp,但没有合并进入Linux官方内核• iOS7/Mac OS X 10.10/FreeBSD

Page 4: MPTCP学习

Multipath TCP Data transfer

• Two levels of sequence numbers

Multipath TCP

TCP1

socket

TCP2

Multipath TCP

TCP1

socket

TCP2

ABCDEF

Data sequence #TCP1 sequence #

TCP2 sequence #

内容来源:http://multipath-tcp.org/data/MultipathTCP-netsys.pptx

Page 5: MPTCP学习

MPTCP over WiFi/3G

8Mbps, 20ms

2Mbps, 150ms

内容来源:http://multipath-tcp.org/data/MultipathTCP-netsys.pptx

Page 6: MPTCP学习

6

MPTCP over WiFi/3G

C. Raiciu, et al. “How hard can it be? designing and implementing a deployable multipath TCP,” NSDI'12: Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation, 2012.

内容来源:http://multipath-tcp.org/data/MultipathTCP-netsys.pptx

Page 7: MPTCP学习

官方性能测试-50Gbps• 环境

• 2台HP DL380p G7,各有3张Intel dual-port 10Gb Ethernet NICs,也就是各6个10Gb/s的网口• Linux内核根据硬件定制• client's script和server's script• custom netperf implementation

• 测试结果– Multipath TCP is able to transmit a single data-stream at the rate of up to 51.8 Gbit/s.

This corresponds to more than 1 DVD per second, or an entire Blu-Ray disk (25GB) in only 5 seconds !

– 实际带宽51.8Gbit/s,利用率达到物理带宽60Gb/s的86%

Page 8: MPTCP学习

常见QA• Q1. MPTCP的一端单网卡,另一端3网卡时,到底建立了几条TCP连接?• A1. 假设单网卡机器上设立分属3个网段的IP地址,在另一端3网卡机器上将3张网卡地址分别设置为与单网卡的3个IP地址段一一相同网段,比如:A有1张网卡,却有3个IP地址,分别:10.1.1.3/10.1.2.3/192.168.1.151,而B有3张网卡,IP地址分别:10.1.1.2/10.1.2.2/192.168.1.155,那么MPTCP连接建立时,会产生3*3=9个TCP连接(MPTCP full mesh模式),但经尝试后有效连接仅3个,分别是:

10.1.1.3 <---> 10.1.1.2 10.1.2.3 <---> 10.1.2.2 192.168.1.151 <---> 192.168.1.155• Q2. 如Q1,一条MPTCP连接中的多条TCP连接的端口号如何分配?• A2. 对于应用开发者而言和TCP一样,只有一对端口,但实际上由于建立了3条TCP连接,也就是有3个本地端口分别对应对端的1个端口.端口的分配和管理全部由MPTCP实现,应用开发者无需关心.

• Q3. MPTCP监测连接"健康"状态,发送数据时优选最优连接吗?• A3. 是的,MPTCP会定期监控并挑选合适的TCP连接来传输数据,这包括计算拥塞,延时等参数来给每个连接评分.但看到一些文章介绍到MPTCP的拥塞算法还有明显的改进空间.

Page 9: MPTCP学习

iperf流量测试

9

Page 10: MPTCP学习

• 2台Ubuntu14.04机器• A,笔记本,有1个千兆网卡• B,工作站,有4个千兆网卡

• Install MPTCP• 安装完重启进入Grub"高级选项",选择linux-image-3.18.20-90-mptcp• uname -a可查看当前系统内核版本

• 启动MPTCP• sudo sysctl -w net.mptcp.mptcp_enabled=1

• 客户端• sudo ifconfig eth0:1 10.1.1.3 netmask 255.255.255.0 up• sudo ifconfig eth0:2 10.1.2.3 netmask 255.255.255.0 up

• 服务器• sudo ip rule add from 10.1.1.2 table 1• sudo ip rule add from 10.1.2.2 table 2• sudo ip route add 10.1.1.0/24 dev eth0 scope link table 1• sudo ip route add 10.1.2.0/24 dev eth1 scope link table 2

• 交换机• 连接A-笔记本的端口设在1Gb/s• 连接B-工作站的4个端口限速10Mb/s

• 测试工具• iperf,流量测试应用软件• bmon,检测网卡流量

准备

10

Page 11: MPTCP学习

环境

11

千兆网卡,接交换机1Gb/s速率端口

多IP地址10.1.1.310.1.2.3192.168.1.151

10.1.1.2

192.168.1.155 3个千兆网卡

接交换机10Mb/s速率端口

A B

上图有3条IP地址路径,故每个MPTCP连接建立3条TCP子连接

10.1.2.2

10Mb/s 1Gb/s

• 测试方法:iperf测试TCP流量• A作服务器,B作客户端,贴近真实环境

路径1 路径2 路径3

10Mb/s

10Mb/s

Page 12: MPTCP学习

交换机限速

• 编号为17/19/21/23的4个端口被限速10Mb/s• 前3个由B-工作站使用,最后1个空闲

Page 13: MPTCP学习

TCP流量(关闭MPTCP)

13

iperf服务器 iperf客户端

运行: iperf -s -f M -i 1 运行: iperf -c 10.1.1.3 -f M -i 1 -t 1000

BA

iperf流量1.12MB/s

iperf流量1MB/s

bmon检测到网卡流量eth0有1.18MB/s

bmon检测到网卡流量• eth0有1.18MB/s• eth1有0MB/s• eth2有2.4KB/s

•客户端只启用1张网卡, 双方的iperf应用流量 ≈ bmon的网卡流量•服务器接收带宽 ≈ 客户端发送带宽•服务器接收带宽8.96Mb/s=8 * 1.12MB/s,占总带宽10Mb/s的89%

Page 14: MPTCP学习

MPTCP流量

14

bmon检测到网卡流量eth0有3.52MB/s

bmon检测到网卡流量• eth0有1.18MB/s• eth1有1.18MB/s• eth2有1.17MB/s

•客户端启用了3张网卡, 双方的iperf应用流量 ≈ bmon的网卡流量•服务器接收带宽 ≈ 客户端发送带宽•计算十次平均,服务器接收带宽提高到26.6Mb/s=8 * 3.32MB/s,占总带宽30Mb/s的88%

结论: MPTCP可激活3张网卡同时传输,使得1+1+1 ≈ 2.66

iperf服务器 iperf客户端

运行: iperf -s -f M -i 1 运行: iperf -c 10.1.1.3 -f M -i 1 -t 1000

BA

iperf流量3.32MB/s

iperf流量3.23MB/s

Page 15: MPTCP学习

• B-工作站是客户端,A-笔记本是是服务器• B-工作站向A-笔记本请求数据时,先ifconfig

down掉eth2(default路由),然后ifconfig up eth2,流量不会恢复

•拔掉eth2/eth0/eth1的网线则不发生•反过来A-笔记本作为客户端,不发生

•有关MPTCP协议栈和网卡驱动粘合部分,实际LTE场景再看

灾备问题

15

Page 16: MPTCP学习

可行性•应用优势

– 专为移动端和数据中心设计– iOS7已引入,成为IETF标准,受到业界认可

•潜在问题– 最新MPTCP实现基于Linux内核3.8,而官方内核发展到4.6,移植MPTCP内核到嵌入式平台可能有障碍

16

Page 17: MPTCP学习

• www.multipath-tcp.org/• http://multipath-tcp.org/data/MultipathTCP-netsys.pptx• http://inl.info.ucl.ac.be/system/files/these_pres.pdf• https://en.wikipedia.org/wiki/Multipath_TCP• netperf

• http://www.netperf.org/svn/netperf2/tags/netperf-2.7.0/src/• wget -np -m -l5 http://www.netperf.org/svn/netperf2/tags/netperf-

2.7.0/

参考

17