• 文章搜索:
  • IP技术专栏

        • 分享到...

        • 新浪微博
        • 腾讯微博
        • 推荐到豆瓣 豆瓣空间
        • 分享到搜狐微博 搜狐微博
        • 分享到QQ空间 QQ空间
        • 分享到腾讯朋友 腾讯朋友
        • 网易微博分享 网易微博
        • 添加到百度搜藏 百度搜藏
        • 转贴到开心网 开心网
        • 转发好友 告诉聊友
    • 推荐
    • 打印
    • 收藏

    技术点详解---互联网双出口的选择

    运营商的很多客户,特别是网吧老板,都是靠网络连接来营业的,网络连接可靠性对这些boss而言尤其重要,常见的单线路(链路)连接互联网就变得不那么给力,一旦线路故障,整个业务就歇菜了,他们选择往往是双运营商双线路,这种模式我们也称为互联网双出口。双出口情况下有几种解决方案,应该如何在解决方案中选择是我们这期专栏要讨论的内容。

    一、 传统的主备线路解决方案

    这名可敬的客户为ICG网关打造了双出口网络:

    1. 电信线路为主线路,出口IP为6.16.5.6;

    2. 联通线路为备线路,出口IP为2.17.1.24;

    3. 对内连接4台PC,分别是PC1~PC4,ICG连接这些PC的内部VLAN地址是192.168.1.1。

    主备的双出口解决方案是最容易实现的,因为它最容易想到:

    1. 电信出口默认路由优于联通出口默认路由,因此在电信线路连接正常情况下,所有PC都是从电信线路访问互联网;

    2. 当电信线路发生故障,那么电信出口默认路由失效,联通出口默认路由生效,所有PC切换到联通线路访问互联网。

    如上图所示,电信线路故障,所有PC都从联通线路访问互联网。这种方案虽然简单,但是怎么看都觉得不是特别带感,因为2条线路在同一时刻只能使用1条,可是敬业的客户可是同时为2条线路掏钱的,同时使用2条线路可以增加带宽,可以带来更客观的生意,网吧老板对传统解决方案有些生气,我们需要让传统解决方案变得更紧实一些,我们能完成这项任务吗?请相信科技的力量,我们为此而生。

    二、 让2条线路都用起来的解决方案——等价路由

    在传统的解决方案中,电信、联通两条默认路由是不等价的,而是主备,电信的优于联通,如果要让2条线路都用起来,那么我们很容易想到使用等价路由,即电信、联通的默认路由是一视同仁的,选择谁做出口都一样,这个看起来的确要比传统解决方案要带感一些。

    在ICG网关正确的调度下,这2条链路的确都可以利用起来,而且流量可以近似于平分秋色,那这么做是不是就可以达到网吧老板的期望了呢?我不得不说,选择这项解决方案的同学可能过不久又会接到网吧老板的抱怨电话“很多网游玩不了了,客人都围着老子退款呢,还不如用传统解决方案呢”。

    面对责难,我们是迎难而上还是退避?身为血性男儿,岂有轻言退让之理,但老兄,迎难而上也需要淡定分析,我们先来分析为什么有些网游玩不了,有的页面打不开,对症下药方能药到病除。我们以内部PC4访问Tektalk进行分析:

    1. 假设地址为192.168.1.14的PC4对Tektalk发起访问的数据包在ICG处首先选择的是电信出口;

    2. 电信出口做NAT后,Tektalk收到的访问请求来源与ICG的电信出口地址6.16.5.6,由此创建一个访问会话6.16.5.6:30000ßàTektalk:80;

    3. 如果后续的数据包都选择电信出口的话,这个访问将会非常正常,可事实往往和思想出入太远。

    1. 杯具的酿成就是PC4上的同一个会话,ICG网关这次选择了联通出口;

    2. Tektalk这时收到的数据包来自于2.17.1.24:40000,会话记录中没有2.17.1.24:40000ßàTektalk:80,只有6.16.5.6:30000ßàTektalk:80,因此这个数据包被丢弃了。

    知道杯具的原因之后,我们就会有对应的解决办法,这个问题早已不是什么新鲜事物了,只要在转发流程上稍作修改就可:

    1. ICG网关需要维护NAT表项,如PC4访问Tektalk的表项索引即为192.168.1.14:1024ßàTektalk:80;

    2. ICG网关在做转发时,对于相同表项的数据包选择固定的出接口,如将NAT表项192.168.1.14:1024ßàTektalk:80==6.16.5.6:30000ßàTektalk:80固定一段时间,后续相同会话的数据包都匹配这个表项进行转发。

    这下貌似问题已经解决,实际上还是有问题,因为NAT表项是有生命的,过一段时间这个表项可能就不存在了,互联网出口还是会变成无组织无纪律的选择方式,网吧老板需要一个有秩序、和谐的双出口解决方案,而不是提心吊胆的。没有问题,相信科技的力量是无穷的,看我怎么把它搞定。

    三、 终结者——负载分担双链路

    这个终结者解决方案有什么厉害之处呢?一一来看:

    1. 2条链路能同时使用,一半PC优先选择电信,另外一半PC优先选择联通;

    2. 2条链路为主备方式,电信线路为主,联通线路为备;

    3. 但可以实现电信线路断开,所有PC选择联通线路,联通线路故障,所有PC选择电信。

    还是看图更爽:

    究竟是什么科技可以这么给力,我们来一一分析:

    1. 按PC选择线路,这个并不难,所有PC都有IP地址,IP地址是数字,有数字就有奇偶,网吧老板规定奇数IP选择联通线路,偶数IP选择电信线路;

    2. 默认路由设置和传统解决方案一致,电信路由优于联通路由。

    这里可能大家会有疑问了,既然电信路由优于联通路由,那么怎么让奇数IP选择联通线路呢?这里要给大家做一个科技普及:

    1. 正常的路由都是根据目的IP选路,比如根据目的Tektalk选择电信线路或者联通线路或者两者中任选一个;

    2. 基于策略的路由,也叫策略路由,英文名叫PBR(Policy Based Route),它除了根据目的IP选路外,还提供根据源IP选路的功能,这和现实生活就很像了,比如交通分流,公交车可以走专门的公交车道,民用车则不行,PBR可以先识别所有奇数IP,然后控制这些IP优先选择联通线路。

    策略路由解决了选路问题,那链路备份问题怎么解决呢:

    1. 由于策略路由只控制奇数IP,所以偶数IP默认情况下就是优选电信线路,电信线路Down情况下选择联通线路,这和传统解决方案一致;

    2. 关键的是奇数IP,奇数IP在策略路由的控制下,优选了联通线路,PBR有一个特性,如果出接口联通线路Down,则PBR失效,奇数IP恢复正常的路由转发,选择电信线路。

    策略路由是不是很给力呢?我们还是来看一下具体的配置吧,这会让我们记忆更加深刻:

    acl number 2000

    rule permit source 0.0.0.1 255.255.255.254

    #

    policy-based-route mypbr permit node 5

    if-match acl 2000

    apply ip-address next-hop 联通网关

    #

    interface vlan-interface1

    ip address 192.168.1.1 255.255.255.0

    ip policy-based-route mypbr

    #

    ip route-static 0.0.0.0 0.0.0.0 电信网关

    ip route-static 0.0.0.0 0.0.0.0 联通网关 preference 80

    #

    好了,本期专栏又要和大家说再见了,我们下期再见。有什么问题请记得给我留言。

    顶端