(OK) Ubuntu下配置MPTCP

来源:互联网 发布:淘宝商品详情页 编辑:程序博客网 时间:2024/05/08 06:38


http://www.cnblogs.com/zhuting/p/5675925.html


本周调研了一下多径TCP(MPTCP),几经周折终于从小白到将MPTCP协议配置到Linux系统中,并成功地通过MPTCP协议访问了支持MPTCP协议的检测网站。

本文主要介绍

  • 实验环境
  • 无线网卡驱动的安装
  • MPTCP的安装
  • 路由配置

实验环境

镜像下载地址,获取安装镜像选择Ubuntu14.04.4(amd64,LiveCD)

无线网卡驱动的安装

进行MPTCP协议的测试必然要用到双网卡,因此选择购买USB无线网卡作为第二网卡。最初的选择为“360随身wifi3”,经查询所用的芯片为MTK7603U,MTK官网没有给出该芯片Linux下的驱动,网上也没有相关的资源。因此从硬件屋将USB无线网卡替换成了“TP-LINK TL-WN823N”,WN823N的芯片型号为RTL8192EU,下面提供一个较为简单的驱动安装方法

sudo add-apt-repository ppa:hanipouspilot/rtlwifsudo apt-get updatesudo apt-get install rtl8192eu-dkms

重启系统,即可在网络连接中看到第二张网卡,可以使用ifconfig命令可以查看两张网卡的详细信息。

MPTCP的安装

本部分主要参考以下三个链接

http://www.multipath-tcp.org/
http://blog.csdn.net/xiaodoubao124/article/details/50150677
http://blog.sina.com.cn/s/blog_758723000101ealy.html

MPTCP的安装方式有两种:获得源码并自行编译内核,使用apt-get命令自动安装。愿意熟悉一下内核编译,DIY一下内核的可以选择前者,而后者可以自动安装,操作十分简单。

获得MPTCP源码并自行编译内核

首先提前安装好依赖环境

sudo apt-get update sudo apt-get install libncurses5-devapt-get install build-essential 

获取MPTCP源码

cd /usr/srcgit clone --depth=1 git://github.com/multipath-tcp/mptcp.gitcd mptcp

配置编译内核

sudo make menuconfig

配置内核时需要注意一下几点:

  • 选择编译时:按y直接编译到内核中,条目前会显示为<*>或[*];按n不编译到内核中,条目前显示为<>或[ ];按m以模块的方式编译,之后使用需要加载该模块才可以,条目前显示为或[M].
  • 由于我们是64位系统,选中第一个64-bit kernel,32位的话就不要选中。
  • 进入networking support->networking options,检查一下IPv6模块,选择编译进内核或者不编译,不要选择以模块方式编译,否则看不到后面的MPTCP选项
  • 找到networking support->networking options->TCP/IP networking->MPTCP protocol(MPTCP),按y选择编译。
  • 找到Networking support->Networking options->IP: advanced router->IP: policy routing,选择编译。
  • 找到Networking support->Networking options->MPTCP protocol,编译。这样一些拥塞控制算法才会出现在TCP:advanced congestion control里。
  • 找到MPTCP: advanced path-manager control,编译。进到里面,编译MPTCP Full-Mesh Path-Manager和MPTCP ndiff-ports。下面的Default MPTCP Path-Manager 选择Full mesh。
  • 找到Networking support->Networking options->TCP: advanced congestion control,进入。这里是拥塞控制算法,需要哪些就选择哪些,*编译到内核,M是编译成模块。这里选择CUBIC ,Vegas,Veno,LIA(MPTCP Link Increase),Olia (MPTCP Opportunistic Linked Increase),wVegas,Balia。选择默认的算法。
  • 保存配置,退出。

编译MPTCP内核

cd /usr/src/mptcpsudo make

编译并安装模块

sudo make modules_install

安装

sudo make install

重启系统,这里官网包括引用的两篇博客都没有说清楚,重启以后要进入新编译好的内核中,在开机的时候选择ubuntu高级选项,找到刚刚编译好的内核,选择进入,如果没有ubuntu高级选项的界面,在重启进入系统的时候按住shift键,界面就会出现。

使用apt-get命令自动安装

MPTCP官网维护了一个公开的apt库来对MPTCP内核进行自动安装和升级。

首先安装他们的gpg-apt-key

wget -q -O - http://multipath-tcp.org/mptcp.gpg.key | sudo apt-key add -

修改apt库的配置文件

sudo gedit /etc/apt/sources.list.d/mptcp.list

在末尾添加

deb http://multipath-tcp.org/repos/apt/debian trusty main

不同版本的系统添加的内容不太一样,其他系统参考以下内容:

On a Debian for the newest release:
deb http://multipath-tcp.org/repos/apt/debian jessie main
On a Ubuntu Trusty (14.04) for the old v0.90-release:
deb http://multipath-tcp.org/repos/apt/debian trusty main
On a Ubuntu Saucy (13.10) for the old v0.88-release:
deb http://multipath-tcp.org/repos/apt/debian saucy main
On a Ubuntu Raring (13.04) for the old v0.87-release:
deb http://multipath-tcp.org/repos/apt/debian raring main
On a Ubuntu Quantal (12.10) for the old v0.86-release:
deb http://multipath-tcp.org/repos/apt/debian quantal main

安装MPTCP

sudo apt-get updatesudo apt-get install linux-mptcp

重启。

同上,这里官网包括引用的两篇博客都没有说清楚,重启以后要进入新编译好的内核中,在开机的时候选择ubuntu高级选项,找到刚刚编译好的内核,选择进入,如果没有ubuntu高级选项的界面,在重启进入系统的时候按住shift键,界面就会出现。

路由配置

路由配置可以手动配置也可以自动配置,这里介绍自动配置方法。

编辑mptcp_up

cd /etc/network/if-up.dsudo gedit mptcp_up

粘贴以下内容,保存退出(下载地址)

#!/bin/sh# A script for setting up routing tables for MPTCP in the N950.# Copy this script into /etc/network/if-up.d/set -eenv > /etc/network/if_up_envif [ "$IFACE" = lo -o "$MODE" != start ]; then        exit 0fiif [ -z $DEVICE_IFACE ]; then    exit 0fi# FIRST, make a table-aliasif [ `grep $DEVICE_IFACE /etc/iproute2/rt_tables | wc -l` -eq 0 ]; then    NUM=`cat /etc/iproute2/rt_tables | wc -l`    echo "$NUM  $DEVICE_IFACE" >> /etc/iproute2/rt_tablesfiif [ $DHCP4_IP_ADDRESS ]; then    SUBNET=`echo $IP4_ADDRESS_0 | cut -d \   -f 1 | cut -d / -f 2`    ip route add table $DEVICE_IFACE to $DHCP4_NETWORK_NUMBER/$SUBNET dev $DEVICE_IFACE scope link    ip route add table $DEVICE_IFACE default via $DHCP4_ROUTERS dev $DEVICE_IFACE    ip rule add from $DHCP4_IP_ADDRESS table $DEVICE_IFACEelse    # PPP-interface    IPADDR=`echo $IP4_ADDRESS_0 | cut -d \   -f 1 | cut -d / -f 1`    ip route add table $DEVICE_IFACE default dev $DEVICE_IP_IFACE scope link    ip rule add from $IPADDR table $DEVICE_IFACEfi

设置文件可执行

sudo chmod a+x mptcp_up

编辑mptcp_down

cd /etc/network/if-post-down.dsudo gedit mptcp_down

粘贴以下内容,保存退出(下载地址)

#!/bin/sh# A script for setting up routing tables for MPTCP in the N950.# Copy this script into /etc/network/if-post-down.d/set -eenv > /etc/network/if_down_envif [ "$IFACE" = lo -o "$MODE" != stop ]; then        exit 0fiip rule del table $DEVICE_IFACEip route flush table $DEVICE_IFACE

设置文件可执行

sudo chmod a+x mptcp_down

上述两个脚本根据环境变量配置路由表,绝大多数情况下可以正常工作。还可以参考手动配置方法。

至此,MPTCP已经在本机上配置完成,可以通过网站检测自己是否在使用MPTCP:检测网站。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 父亲再婚婚后对我不好怎么办 皮衣搽了护理油后不亮了怎么办 新买的衣服皱了怎么办 新买的裙子很皱怎么办 新买的风衣很皱怎么办 新买的裙子皱了怎么办 货拉拉准点率低怎么办 定机票名字打错了怎么办 做坏事被发现了怎么办 在阳台做被发现怎么办 有秘密被发现了怎么办 微店没有收到货怎么办 cf与主机连接不稳定怎么办 穿越火线与主机连接不稳定怎么办 word被锁定无法编辑怎么办 平衡车系统乱了怎么办 监控老是滴滴的响怎么办 磁盘已满 文件未保存怎么办 cocos只有代码没有项目怎么办 电脑系统管理员密码忘记了怎么办 魔兽小队不显示职业颜色怎么办 魔兽多余的橙装怎么办? f117-f6不读硬盘怎么办 中飞院飞行学生停飞了怎么办 军人对你敬礼时怎么办 小孩抱着就睡放下就醒怎么办 着火了怎么办 我的世界 生存战争2感冒了怎么办 生存战争2吐了怎么办 我的世界hqm重置怎么办 不小心打了110怎么办 我的世界皮肤有黑影怎么办 我的世界字体变大了怎么办 生锈的铁钉扎了怎么办 每天晚上窗纱上老有蝙蝠倒挂怎么办 我的世界没有痒怎么办 七日杀被ban了怎么办 吕框箱子上保护摸撕不掉怎么办 我的世界开光影卡怎么办 我的世界买不了怎么办 我的世界延迟高怎么办