BGP线路和IDC机房的那些事

   BGP就是边界网关协议,英文全称Border Gateway Protocol,是一种在自治系统(即AS)之间动态交换路由信息的路由协议。

谈到BGP对于IDC的好处,还得从头说起。

        自从2003年电信与网通南北分离之后,北方网通与南方电信网络的互联瓶颈问题一直没有得到很好的解决,这个问题也严重困扰广大的ICP(互联网内容服务商)。初期,ICP也只能根据自己网站主流用户群是在南方还是在北方,服务重点是在南方还是北方而进行取舍。当然谁也不想自己的网站因网速而丢失另一部分的用户及访问者,都在想办法解决网络瓶颈,希望实现南北快速互通互联。在这种情况下,IDC双线(或多线)技术应运而生,主要是第三方IDC运营商比较主动去推动,反而是电信、网通比较被动地去谨慎接受。

      IDC双线(或多线)技术就是在数据中心机房通过特殊的技术手段把不同的运营商的服务接入到一台服务器(或服务器集群),使服务器所提供的网络服务访问用户能尽可能以同一个ISP的连接来进行访问,从而解决用户访问网站的缓慢延迟的问题。目前有多种具体实现方式:

一、 最简单的多IP多线路

在一台服务器上安装多块网卡,分别接入电信、联通、移动等不同网络运营商。这种方法在一定程度上提高了不同运营商宽带/手机用户访问网站的速度,但缺点是由于服务器接入的是多网卡,必须在服务器上进行路由表设置,这给普通用户增加了维护难度,并且所有的数据包都需要在服务器上进行路由判断然后再发往不同的网卡,当访问量较大时服务器资源占用很大。此方案一般限于规模较小的IDC提供商使用。

 

二、 CDN方式实现多线路

  CDN,英文全称Content Delivery Network,就是多服务器分网托管加智能域名DNS,实现不同宽带/手机用户都能访问到离自己最近网段上的网站,从而避免因为网络问题而影响网站访问速度的目的。现绝大部份CDN技术在处理静态网站上比较成熟,对交互性很强如全动态页面的网站还不是很成熟。CDN方案主要作为一种辅助的解决方案。

 

三、 用BGP协议实现单IP多线路

  BGP的最主要功能在于控制路由的传播和选择最好的路由。不同运营商都具有自己的AS号,全国各大网络运营商多数都是通过BGP协议与自身的AS号来互联的。使用此方案来实现多线,第三方IDC运营商需要在CNNIC(中国互联网信息中心)申请自己的IP地址段和AS号,然后通过BGP协议将自己申请来的IP地址段广播到联通、电信、移动等网络运营商,使用BGP协议互联后,网络运营商的所有骨干路由设备将会判断到IDC机房IP段的最佳路由,以保证用户的高速访问。

当然,现在也有第三方IDC运营商,不用自己的AS,仅仅是向电信、联通、移动申请对自己的IP地址段分别进行静态广播,而且申请的是非全穿透。这样一来也基本能实现为宽带/手机客户选择最好的路由,但缺点是,一旦某家网络运营商的线路断了,该网络运营商的客户将无法访问服务,一般需手动调整路由。



关于BGP的补充说明(不感兴趣的可以不看):

    从路由协议的大分类来说,分为IGP(内部网关协议)和EGP(外部网关协议)。同AS内用IGP,不同AS之间使用EGP,但EGP就只有BGP路由协议一种(其实,严格来讲,BGP都不算是路由协议)。

    BGP产生的原因是为了在不同AS之间进行路由转发,而其中又提出了EBGP和IBGP两种。EBGP用于在不同AS之间,提供路由的传递以及路由的控制。IBGP,它是应用于AS内部,可是前面我们说到,在AS内部我们是使用IGP,这就和"BGP是应用于不同自治系统之间"产生矛盾,那么什么时候需要使用到IBGP?为什么要有IBGP,原因如下:

    首先,IGP的能力限制,IGP处理路由的条目有限,假如没有IBGP,那么这些路由只能采取重分发的方式直接导入到IGP中, IGP本身也无法处理这样大的路由数量;如果非要让IGP来处理,那么根据IGP的处理原则,任何一条路由发生变化,那么运行IGP的路由器就不得不重新计算路由,这种计算量对于绝大多数路由器来说是无法负担的。除去带宽占用率不谈,我想,也只有少量高端的GSR以及TSR能够有这样的性能吧。

    其次,是路由环路的问题。BGP是靠路由属性来防止路由环路的,假如说没有IBGP协议,那么当所有BGP路由重分发到IGP中后,路由属性必然丢失,这就破坏了BGP的路由环路防止机制,产生了路由环路的隐患。