我一直对多网聚合推流编码器、视频回传背包等设备很好于是我就开始研究多网聚合到底是怎么一回事,今天终于实现。
如何实现,大概的原理就是在Ubuntu系统上编译安装mptcp协议,然后在配置代理服务器,或者搭建同样具有mptcp协议的服务器(这个就不需要代理)。
猜想:是不是我把流媒体服务器直接搭建在有mptcp协议的服务器系统上,是不是就可以省去聚合服务器了呢?
在Ubuntu上实现:
一、先编译安装mptcp协议
1、去GitHub下载代码并在Ubuntu上编译安装
Releases · multipath-tcp/mptcp · GitHub
把.deb的文件下载下来,然后通过两个命令安装
sudo dpkg -i linux*.deb
sudo apt-get install -f
2、使用配置脚本(基于 Ubuntu/Debian 的系统)
在/etc/network/if-up.d/
可以放置每次出现新界面时执行的脚本。我们创建了两个脚本:
#!/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
- 将其放在 /etc/network/if-up.d/ 中并使其可执行。
命令:
sudo cp mptcp_up /etc/network/if-up.d/
sudo chmod 755 /etc/network/if-up.d/mptcp_up
#!/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 cp mptcp_down /etc/network/if-post-down.d/
sudo chmod 755 mptcp_down /etc/network/if-post-down.d/mptcp_down
然后加入开机选择系统
sudo sed -i 's/GRUB_TIMEOUT_STYLE=hidden/GRUB_TIMEOUT_STYLE=menu/g' /etc/default/grub
sudo sed -i 's/GRUB_TIMEOUT=0/GRUB_TIMEOUT=10/g' /etc/default/grub
sudo update-grub
二、然后重启系统,进入系统前前选择高级,再选择带mptcp的系统版本
进入系统后配置mptcp
sudo sysctl net.mptcp.mptcp_enabled=1
sudo sysctl net.mptcp.mptcp_path_manager=fullmesh
sudo sysctl net.mptcp.mptcp_scheduler=default
sudo sysctl net.ipv4.tcp_congestion_control=cubic