运营商的很多客户,特别是网吧老板,都是靠网络连接来营业的,网络连接可靠性对这些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条线路都用起来,那么我们很容易想到使用等价路由,即电信、联通的默认路由是一视同仁的,选择谁做出口都一样,这个看起来的确要比传统解决方案要带感一些。
在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
#
好了,本期专栏又要和大家说再见了,我们下期再见。有什么问题请记得给我留言。