zoukankan      html  css  js  c++  java
  • 异构网络中的并行传输问题

    在这里和大家分享下异构网络中的并行传输问题

    (1)怎么理解异构网络中的并行传输这个问题

    举例子,一台Linux机器,有多个可用的网卡,每个网卡使用的是不同的网络,比如说网卡1是以太网,网卡2是4G移动网络,网卡3是Wifi的形式接入到以太网,那么实际应用问题是这台Linux机器如何最大化利用本地网络资源?也就是通信的数据何如同时使用多个网络并行传输数据

    (2)异构网络中的并行传输会遇到哪些问题

    没搞过的人自然不知道会遇到哪些问题,只会觉得只是有几个程序员就能解决编程问题而已,实际上没那么简单。

    那我抛出一个最简单的问题吧:如何分配各个网卡发送的数据?

    有人说,根据带宽分配啊,分分钟解决问题。呵呵,假如那台Linux机器的三张网卡都是4G移动网络,你能知道带宽?

    人又说了,不知道带宽,我可以先测出带宽啊。呵呵,你现在测的带宽能带表下一分钟还是这个带宽值吗?

    傻逼了吧!有人还说了,测带宽可以用更好的方法啊,传输数据的过程中完成对各个链路的带宽值估测,就像TCP协议那中做法。

    好吧,总有牛人能解决这个。那么第二个问题来了,分配各个网卡发送的数据比例后,如何解决接收端的乱序问题?

    啥??还有乱序问题?有啥影响?最简单的乱序就会严重影响TCP的吞吐率,TCP吞吐率上不去,你多网卡有啥卵用。

    有人又来说了,接收端排序啊。那你有没有想过,有一个网卡来的数据就是很慢(虽然可能分配的数据很少),你咋解决?

    所以总结起来,异构网络中的并行传输要解决负载均衡问题和乱序问题,通常情况下负载均衡做的好,乱序问题会加重。

    (3)自己撸一个方案?还不如用MPTCP先试试效果

    为啥MPTCP可以试试,因为MPTCP的拥塞控制对TCP的拥塞控制的线性增加阶段进行了修改,而慢启动,快速重传、快速恢复都没有改变。每条子路径拥有自己的cwnd,MPTCP的拥塞算法主要关心cwnd的改变。要不你觉得不行,你自己去撸Linux 协议栈?能做到比当前TCP 还好?

    (4)达到1+1=2难吗

    1+1=2一个非常苛刻的要求,有人做过实验,两个网卡,固定带宽分别是10M和1M,发送数据比例按10:1来的时候,系统吞吐率最大;当发送数据比例调整到10.5:1的时候,性能就不行了,大幅下降。

    (5)

    (6)做多网口网关可以直接套用MPTCP吗

    参考Performance-enhancing proxy ,Split TCP传输和MPTCP叠加在一起使用,能够达到非常不错的效果。另外把多网口网关的并行传输做成隧道模式,可以实现字节流级别的负载均衡效果,吞吐率也非常不错。

      (7) 如果是端到端并行传输,可以考虑假如其他的优化传输方法(比如随机线性网络编码,具体实现和原理可以参考我的另一篇文章)

    有兴趣可以来信交流(vslinux@qq.com)

  • 相关阅读:
    使用npm安装包失败的解决办法(使用npm国内镜像介绍)
    JavaScript的变量、作用域和内存问题
    JavaScript的基本概念
    在Html中使用JavaScript
    JavaScript简介
    C++为了兼容,所以并不是纯面向对象编程语言
    C++四种不同的对象生存方式
    Java BigDecimal使用
    ext 对齐
    ext grid 子表格
  • 原文地址:https://www.cnblogs.com/rayfloyd/p/11692905.html
Copyright © 2011-2022 走看看