Ubuntu下配置MPTCP


本周調研了一下多徑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:檢測網站


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM