• (OK) Ubuntu下配置MPTCP



    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/rtlwif
    sudo apt-get update
    sudo 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-dev
    apt-get install build-essential 

    获取MPTCP源码

    cd /usr/src
    git clone --depth=1 git://github.com/multipath-tcp/mptcp.git
    cd 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/mptcp
    sudo 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 update
    sudo apt-get install linux-mptcp

    重启。

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

    路由配置

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

    编辑mptcp_up

    cd /etc/network/if-up.d
    sudo 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 -e
    
    env > /etc/network/if_up_env
    
    if [ "$IFACE" = lo -o "$MODE" != start ]; then
            exit 0
    fi
    
    if [ -z $DEVICE_IFACE ]; then
        exit 0
    fi
    
    # FIRST, make a table-alias
    if [ `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_tables
    fi
    
    if [ $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_IFACE
    else
        # 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_IFACE
    fi

    设置文件可执行

    sudo chmod a+x mptcp_up

    编辑mptcp_down

    cd /etc/network/if-post-down.d
    sudo 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 -e
    
    env > /etc/network/if_down_env
    
    if [ "$IFACE" = lo -o "$MODE" != stop ]; then
            exit 0
    fi
    
    ip rule del table $DEVICE_IFACE
    ip route flush table $DEVICE_IFACE

    设置文件可执行

    sudo chmod a+x mptcp_down

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

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


  • 相关阅读:
    51Nod 1119 机器人走方格 V2 组合数学 费马小定理
    Codeforces Round #439 div2 869A The Artful Expedient +869B The Eternal Immortality
    51Nod 1050 循环数组最大子段和 dp
    51Nod 1009 数字1的数量 数位dp
    51Nod 1082 与7无关的数 暴力打表(埃氏筛的感觉)
    POJ 2001 Shortest Prefixes
    字典树模板
    HDU 1251 统计难题
    kmp算法模板
    HDU 2087 剪花布条
  • 原文地址:https://www.cnblogs.com/ztguang/p/12645911.html
Copyright © 2020-2023  润新知