负载均衡

负载平衡(Load balancing)是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。

​ 一般来说,如果运营商不限制多次拨号(例如校园网不限制拨号数),或者多线接入,即可使用多拨技术有效将各个账号的带宽结合起来以提高网络速度。

​ RouterOS中提供了多种方式进行负载均衡:

  • ECMP(Equal-Cost Multi-path):ECMP是通过在route列表添加多网关的静态路由,然后由路由协议建立劢态的多线路由。这种负载均衡有个缺点,缺点就是每十分钟内核会重新均衡线路,使一些连接会被指定到其他路线,出现频繁掉线的情况。

  • NTH:NTH是采用第N次链接的负载均衡,它不仅可以实现基于IP的负载均衡,同时还能实现对端口负载均衡和对nat指定有序的访问。这样基本实现了不掉线的真正负载均衡。但是NTH存在着一个弊端,就是在某些对IP要求严格的网站会反复要求验证。比如,网银。这样我们需要通过策略将一些IP或者端口指定走固定的线路出去,从而避开网站繁琐的验证。

  • PCC(Per connection classified): PCC是通过判断源地址或者目的地址、源端口或者目的端口对数据进行分类来实现负载均衡,对每个连接进行分类大多保持了连续性,这样大大弥补了NTH 的不足。

RouterOS设置

本文使用RouterOS的vrrp进行单端口三拨,eth-wan1作为wan口,ether2-5为lan口

  1. Interfaces菜单下添加三个vrrp拨号。

    NameInterfaceVRID
    vrrp1eth-wan11
    vrrp2eth-wan12
    vrrp3eth-wan13
  2. Interfaces菜单下添加三个PPPOE Client,分别填写User和Password,不要勾选Dial On Demand、Use Peer DNS和Add Default Route。

    NameInterfaces
    pppoe-out1vrrp1
    pppoe-out2vrrp2
    pppoe-out3vrrp3
  3. 在IP->Addresses下设置接口的ip地址。

    InterfaceAddressNetwork
    eth-wan1192.168.100.1/24192.168.100.0
    vrrp1192.168.100.2/24192.168.100.0
    vrrp2192.168.100.3/24192.168.100.0
    vrrp3192.168.100.4/24192.168.100.0
  4. IP->Firewall->Mangle下添加Change MSS标记。

  5. 添加三条线路的连接标记和路由标记。PCC设置中,N条线的值分别为N/(0~N-1)。

    ChainIn. InterfacePer Connection ClassifierDst. Address TypeActionNew Connection Mark
    preroutingbridgeboth addresses 3/0local invertmark connectionPCC_1
    preroutingbridgeboth addresses 3/1local invertmark connectionPCC_2
    preroutingbridgeboth addresses 3/2local invertmark connectionPCC_3
    ChainIn. InterfaceConnection MarkActionNew Routing Mark
    preroutingbridgePCC_1mark routingPCC_ROUTE1
    preroutingbridgePCC_2mark routingPCC_ROUTE2
    preroutingbridgePCC_3mark routingPCC_ROUTE3

    结果如图:

  6. IP->Routes添加路由。

    GatewayRouting Mark
    pppoe-out1PCC_ROUTE1
    pppoe-out2PCC_ROUTE2
    pppoe-out3PCC_ROUTE3

    再添加三条空路由

    GatewayDistance
    pppoe-out11
    pppoe-out22
    pppoe-out33

    结果如图:

  7. IP->Firewall->NAT伪装地址。

    ChainOut. InterfaceAction
    srcnatpppoe-out1masquerade
    srcnatpppoe-out2masquerade
    srcnatpppoe-out3masquerade
  8. IP->DNS设置Servers为114.114.114.114,223.5.5.5。勾选Allow Remote Requests。

  9. IP->Pool设置IP地址池。

    IP->DHCP Server设置DHCP服务器。

  10. IP->Firewall->Mangle中设置input和output路径。

    ChainIn. InterfaceActionNew Connection Mark
    inputpppoe-out1mark connectionPCC_1
    inputpppoe-out2mark connectionPCC_2
    inputpppoe-out3mark connectionPCC_3
    ChainConnection MarkActionNew Routing Mark
    outputPCC_1mark routingPCC_ROUTE1
    outputPCC_2mark routingPCC_ROUTE2
    outputPCC_3mark routingPCC_ROUTE3

    把出入口标记拖到MSS下面。

测试

只有部分支持多线程的下载软件可以同时利用多路速度,例如百度网盘、迅雷等。

可以看到,三条线均达到了我这里的理论带宽(20~30M),叠加后的速度为70M。