■中国联通湖北分公司省网管中心 薛 刚
互联网发展到今天,紧密结合各大中型企业与Internet的日常商业通信应用已经是一项非常紧迫的任务。电子邮件、网页浏览、电子商务等通信手段已经与世界经济关联的商业模式紧密地结合在一起了。经过我们多年大客户、大企业互联网接入经验的总结,现对大中企业Internet连接的优化进行分析总结,供业界同仁参考。
一、大中企业典型的Internet连接方式
各企业连接Internet主要考虑网络的可靠性、可用性,随着企业间的竞争加剧,企业对网络的快速反应也提出了相当的要求,下面我们就各种情况下的网络接入作出分析。
1.简单的单宿主末端网络
简单的单宿主网络结构最简单,接入成本最低,在早期确实是中小型企业接入Internet网络的主流方式,这种方式通常几乎提供不了冗余性,就算有也很少。当Internet的连接性对于商业操作并非至关重要的时候,该设计的选择确实不愧为一种低成本的解决方案。
单宿主末端网络在一般情况下不需要使用BGP路由协议,ISP提供商可以向企业用户网络发布一条指向用户前缀的静态路由,企业向Internet网络回指一条静态缺省路由。
假如ISP提供商路由器与企业路由器之间使用了多条链路,那么就需要使用多条静态路由。假定在这一设计中使用的多条连接都终结在企业网内同一台路由器上,则该设计所提供的冗余程度是最小的,并且只能保护链路失效。ISP接入路由器失效将导致连接性的完全丢失。
2.企业怎样接收BGP路由信息
中型企业通常使用多宿主末端网络设计。虽然企业连接到单个上游提供商,但却不是连接到ISP的某一点上,而是连接到同一ISP的多个接入点,这样的冗余增强了,它不仅保护了单台提供商路由器的失效,而且保护了链路的失效。
当末端网络有多个宿主时,一般情况下建议使用BGP。一旦企业网络与上游ISP提供商之间采用BGP相连时,一方面能够给企业网络带来更大的灵活性、可用性,增加灵活控制出口流量,选择策略路由的技术手段;但是,另一方面采用BGP路由后,对企业接入路由器的处理能力,维护人员的技术水平也有了更高的要求。所以,各企业在选择是否采用BGP前,很有必要对BGP路由的相关特性有相当的了解。首先,当企业选择BGP路由与上游ISP联网时,必须确定从上游ISP那里接受什么路由信息,这个问题是非常重要的,当企业在做路由选择决定的时候,可用的更具体的路由信息使得企业有机会更优化地确定应该采用那条最佳的路径到达目的地。一般情况下,有如下三种路由信息可接收。
(1)选择缺省路由
当企业网络只需要上游ISP提供缺省路由时,可以和BGP一起使用。缺省路由既可以被静态定义,也可以从提供商那里通过BGP接收。被注入IGP的缺省路由指示流量流向最近的边界路由器,使用缺省路由所需要的系统资源最少,但可能会导致次优化路由选择等问题,这种情况发生在企业BGP路由与多个ISP相连时,该问题尤为重要,需上游ISP做精确的路由策略控制,若控制不当,可能会给ISP和企业都带来一些严重的路由选择上的问题。
(2)选择缺省路由加部分路由
当企业连接Internet时,采用了多宿主的方式,最常见的情况是使用部分路由。它提供了相当数量的具体路由信息,这样就答应路由选择优化,但又比获得完全的路由选择所需要更少的资源。部分路由可以由提供商发送,也可以被企业所定义。假如企业定义了部分路由选择表,那么就需要向提供商请求完全路由选择表,并需要企业路由器应用入境过滤措施;假如提供商发送了部分路由,那么它通常是ISP的本地路由和客户路由,并已经过滤了从其他对等体或上游穿透提供商接收到的路由。最后还有一点也非凡重要,就是企业BGP路由器在使用部分路由的时候,也需要使用缺省路由以确保完整的Internet连接性。
(3)Internet全路由表
当企业从上游提供商那里接收Internet全路由信息表时,这种路由方法可以给企业提供更多的具体路由信息,但这需要企业接入路由器具备更多的资源。实践表明,利用CISCO7500档次的路由器,在配置至少128M内存的情况下是可以接收Internet全路由信息的,因此必须在两者之间作出权衡。一旦企业路由器接收到了Internet全路由表后,企业达到全球任何一条可达前缀的可用具体路由信息答应了最大限度的路由选择优化,企业可以利用这个特性,灵活地调整自己的出口和入口,可以最大限度地使企业内部用户与Internet中的任一用户之间相互通信总是在走最佳路由选择路径。因为任何具体路由的目的地都是可达的,所以假如使用完全路由选择表,就不需要使用缺省路由了。
3.多宿主末端网络
所谓多宿主(multihoming),就是说和Internet连接有多于一条路径,有多条路径到达一个ISP或多个ISP。企业选择多宿主主要基于如下两个主要原因。
可靠性——为企业重要的网络商业环境提供不间断的Internet服务已经成为一种紧迫的任务。多宿主的连接方式可以提供所需要的冗余以确保可靠的服务。
选择路由——通过多宿主可以增强Internet连接性能。通常情况下可以通过使用不同的ISP提供商来完成,这些提供商能够提供更多相异的路径选择以到达目的地。
在采用多宿主的网络环境,主要有如下几种典型的接入模式。
(1)单台边界路由器
如图1所示,企业通常使用单台路由器设备与同一个ISP提供商有多条连接,并且这些连接终结点在同一个提供商的不同地方。
图1 单边路由器多宿主末端网络连接
企业在部署这一设计方案时,应该使用BGP来为可能的负载分担提供额外的控制,同时上游ISP可以答应企业使用自定义的私有AS。这意味着企业不需要从AS注册机构那儿获得惟一公用的、且能被外界看到的ASN。上游ISP提供商可以从接收到的更新信息中清除企业私自定义的ASN。
在这种设计中使用BGP路由的相关属性可以灵活地控制出入企业网流量的模式和路径选择方式,在链路不相等的情况下,这非凡有用,因为可以使用路由选择策略根据链路的带宽容量来按比例地分担流量。
(2)多台边界路由器
使用单台企业边界路由器可能会产生网络单点故障。再增加一台边界路由器就可以消除最后的故障单点。这种设计选择在企业网络中有多台边界路由器,每一台路由器有连接到上游ISP提供商的一条或多条连接。在该设计中,仍然使用单个ISP上游提供商。网络连接如图2所示。
图2 多边路由器多宿主末端网络连接
在这种网络中,还是建议使用BGP,虽然ISP和企业可能会使用静态路由,但是,这不能让企业影响流量模式和路径选择模式以及诸多路由策略控制手段。假如连接到上游提供商的多条链路具有不相等的带宽容量,或者这些链路分别终结到不同的省份和城市,那么BGP的这种多点控制和灵活平衡流量的能力就显得非凡重要了。
在这种设计中,企业仍然可以使用私有AS,运行私有AS的主要好处是不需要企业花费较大的精力去申请一个新的AS号码。运行BGP的目的在于它能够为企业定义出入境路由选择策略提供额外的支持。除了与上游ISP提供商建立EBGP会话外,企业还应该在边界路由器之间和涉及到可能有边界路由器提供穿越服务的所有第三层设备之间建立IBGP全连接会话。这一要求可以确保流量不会被发送到没有去往目的路由选择信息的设备上。企业还应该从每一台边界路由器上发起缺省路由。在边界路由器的上行链路失效的情况下,为了防止流量沿着缺省路由回流到边界路由,形成流量恶性循环,必须在链路连接起来并激活的条件下发布缺省路由。这种条件性路由通告可以是基于接口的静态路由来完成,或者把从BGP接收到的缺省路由重分布到IGP中,由此可见这种条件性的通告并不是BGP的条件通告特性。假如从上游ISP接收到其他前缀信息,不要把它们重分布入边界路由器上运行的任何IGP进程中。
4.标准多宿主网络
所谓的标准多宿主网络相比多宿主网络而言,就是企业连接了多个ISP提供商,那些跨地域的超大型企业通常有这种需求。当企业采用这种方式组网时,需要企业从区域注册机构获得自己的ASN,同时也需要获得一块ip地址空间,并且该IP地址空间还应该足够大,以至于可以顺利通过互联网上标准的对等体过滤器。
(1)单台边界路由器
使用单台边界路由器的标准宿主网络设计到多个上游提供商,所有的连接都终结到单个企业边界路由器上,如图3所示。
图3 多边路由器宿主
这种组网结构为保护链路失效提供了冗余,并能避免某个ISP的网络全面发生故障所带来的影响。同时,这种网络连接也为优化出境流量提供了额外的支持。
在这种设计下,企业边界路由器和两个或多个ISP都建立了EBGP的关系,企业边界路由器从ISP接收到的信息可能为零,也可能一直到完全的路由选择信息。同时在这一设计情形下,需要EBGP对等关系来使得企业的IP地址空间可以被一致地发布,若不使用BGP,那么上游ISP看起来都在发送相同的前缀,这没有任何意义。多个始发自治系统通过相同的前缀叫做非一致通告,非一致的前缀通告工作在通常的情况下会工作得良好,但是因为前缀的始发点的不明确,因此并不赞成这种方式。
配置路由选择信息的第一种方法就是让企业边界路由器拒绝所有的前缀而配置指向出站接口的静态路由。假如链路宕掉了,那么企业的地址空间就不会被通告给那个ISP。指向失效链路的缺省路由也会从企业本地路由选择表中被自动清除。假设链路的带宽容量都是相等的情况,那么就可能会为出境流量提供相当均匀的负载分担。但在这种情况下,问题在于以ISPA为目的的流量可能会被发送到连接提供商B的链路上。除非在本地BGP路由器做相当精细的路由策略控制,因此该种路由方式应该谨慎使用。
第二种方式就是接收部分路由选择信息,企业可以请求上游提供商只发送他们本地发起的前缀和他们用户的前缀。这使得企业可以正确地路由以某一个提供商为目的地的流量。同时,企业仍然需要指向每一个提供商的缺省路由以到达上游提供商和它们用户范围之外的任何网络前缀。该种方式最为常见。
最后,企业当然还可以从多个ISP提供商那里接收完全的路由选择表。这使得企业的边界路由器可以向在逻辑上距离目的地最近的上游提供商发送流量,这一逻辑距离可以从BGP路由的AS-PATH属性中导出。假如AS-PATH路径是相等的,那么流量就会沿着具有最低的ROUTER-ID的路径被发送给上游的ISP提供商。
(2)多台边界路由器
如图4所示,对于大型企业来说,使用多台边界路由器来设计的标准多宿主网络最为常见,这种设计通过多个ISP、多条链路以及多台企业边界路由器提供了最高程度的冗余。在这种设计下,企业边界路由器和它们的上游提供商建立EBGP对等关系。所有的边界路由器之间和可能为企业边界路由器提供穿越服务的任何其他的第三层设备之间也有IBGP全连接会话。它接收到的前缀信息量可能的状况和使用单台边界的状况是相同的。
图4 多边路由器多宿主网络连接
最常见的机制涉及到使用部分路由选择信息,这可能意味着企业从上游提供商请求部分路由选择信息并和缺省路由一起使用,或者请求完全路由选择表并修改入境过滤策略而获得合理的负载分担。最后,使用的方法依靠于企业特定的目标。最简单的方法就是把一条链路用作主要连接,而把其他链路纯粹用作备份连接。最困难的任务就是在多条链路上达到相当均衡的负载分担。
二、企业BGP路由优化
当涉及到有关企业BGP路由优化的问题时,一般情况下,企业路由器只需注重路由过滤和流量负载平衡这两个最主要的问题就行了。下面分别作简要说明。
1.路由过滤
路由选择信息正确过滤的重要性无论怎样强调都不过分,企业应该在边界路由器和上游ISP之间使用路由过滤机制。
(1)入境过滤
一般情况下,企业网络应该在从上游ISP提供商接收到的前缀信息中过滤掉如下私用地址、非凡地址前缀和自身的前缀信息。
下面的一些私有地址和非凡的地址是不应该被通告到Internet路由表中的。
RFC1918地址空间:RFC1918规定了10.0.0.0/8,172.16.0.0/12和192.168.0.0/16这些地址空间都不能在全球被通告。
系统本地地址:127.0.0.0/8地址空间被保留为系统内部所使用。
终端节点自动配置地址块:169.254.0.0/16网络块是为自动地址分配而保留的,它用于DHCP服务不可用的条件下。
0.0.0.0/8:这段地址空间被一些系统内部使用,它们没有被分配出来。
测试网络地址:192.0.2.0/24地址空间被保留作网络测试。
D类和E类地址:D类地址不是真正的主机地址,它们代表IP多播组,这些组播地址不能被单播路由协议所通告,也不应该通过BGP被接收到。D类地址空间为224.0.0.0/4。E类地址空间为240.0.0.0/4,它们都是被保留的,也不应该被前缀通告所使用。
除了上面几类非凡的地址空间外,另外还有一些地址是企业在边界路由器上不应该接收其通告的,这些地址就是企业自己的地址空间,非凡是企业网络核心路由器的LOOPBACK地址等。这包括等于或长于企业网络地址块的前缀通告,而不包括短于企业网络地址块的前缀通告,因为这也许代表了一个地址聚合,而企业网络地址块是其中的一个组成部分。
(2)出境过滤
企业网络应该仔细过滤发送给上游ISP提供商的前缀信息,以保证只向上游通告企业网络地址块。假如企业网络多宿主到不同的提供商,并且没有应用出境过滤策略,那么企业网络就有为两个提供商提供穿越服务的可能,这当然是企业最不愿意看到的。
通常建议企业使用多层的处境过滤措施以防止误配置,第一层建议采用前缀过滤机制,具体做法是灵活地使用前缀列表或分布列表;第二层过滤机制就是使用过虑列表,并根据AS-PATH属性来过滤,使得只有源于企业AS的前缀才能被发送到上游提供商。
2.负载平衡
Internet连接性的最大挑战就在于最大程度地使用有效的带宽,与IGP路由一样,BGP总是选择单条路径而不是负载平衡流量,这一事实的存在导致很多不平衡的流量。并且我们在BGP环境下平衡流量时,一定要明白入境流量和出境流量在逻辑上是相互独立的,用来控制每一个方向上的流量的机制也是相互独立的。下面分别讨论出入方向上的流量平衡。
(1)入境流量负载平衡
下面有一些方法可以较好地控制入境流量,可用的方法依靠于多宿主的形式。
假如企业多宿主到同一个提供商,控制入境流量的办法有很多种,当然最为常见的就是充分利用MED属性等措施。
假如到上游提供商有两个连接点,最简单的方法就是把地址空间分成两半,分别向外通告。例如:企业网络有一个由提供商分配的/21的地址块,那么它可以把该地址块分成两个/22的网络,并在一条链路上通告一个/22,在另一条链路上通告另一个/22。另外,在两条链路上都通告/21。假如这还不能提供所期望的负载平衡,就把网络进一步拆分,并在每一条链路上通告不同的网络前缀直到获得期望的流量模式为止。同样重要的是,若两条链路的带宽容量不等,那么把前缀劈成两半的方法也许就不合适了。
平衡流量真正的困难在于企业网络多宿主连接到两个不同的ISP提供商的时候,要想获得均衡流量的过程是个反复尝试的过程。其常见的做法就是密切监视链路的利用率,这里有一点需要说明一下,那种绝对的、完美的均衡流量并不是明智的目标,实际情况告诉我们:相当接近的负载分担才是目标,并且这个过程永远是动态的。假如流量严重偏爱其中一条链路,可以在高利用率的路径前面添加企业的ASN,然后继续监视这条链路的利用率,假如利用率仍然较高,再添加一次ASN,直至将流量平移到理想的状态。在这里需要进一步说明的是,一旦使用了AS_PATH前置的方法来把流量尽可能地分摊到两条链路上以后,几乎就没有什么进一步平衡流量的方法了,这时,惟一剩下的方法就是利用上游ISP提供商分配的团体属性来进一步平衡流量。
(2)出境流量平衡
企业在平衡出方向的流量有更多的控制方法,这是因为有可能接受12万多条Internet全路由信息或者定义远端目的地的前缀,而在平衡入流量时,只通告了一些前缀。这里有一个重要的原则必须明白,就是BGP在路由的过程中,控制路由选择信息的出入方向与其对应流量出入刚好是反向的,同时流量被操纵的粒度是以使用的前缀空间为基础的。
当企业的网络不是连接多个ISP的时候,平衡流量最简单的方法就是使用缺省路由,它可以提供均衡的流量,不过,它所产生的次优化路由的可能性非常大,假如企业多宿主到同一个ISP提供商,那么使用缺省路由很可能就是最简单的解决办法。
当企业多宿主到不同的ISP上游提供商的时候,这时想获得足够的负载分担就需要更多的创造性,最简单的方法就是向上游提供商请求部分最优路由,利用这些最优路由加上一条静态缺省路由组合在一起以提供完全的可达性。这种方法本省也许能提供可接受的负载均衡,也能提供合理程度的路由选择优化。
假如缺省路由和提供商通过的部分路由一并被使用的方法不能达到良好的负载平衡,下一步就是向上游提供商请求完全的Internet路由选择表,然后,企业应该执行入境过滤策略生成自己的部分路由选择表。最好的过滤形式就是AS-PATH过滤,只要保证不阻断直接上游的AS就行了,同时,缺省路由和企业专门创建的部分路由选择表需要一起被使用,否则企业网络就只有部分路由可达。对这种方法所做的细微修改就是降低非优选前缀的本地优先属性值而不是过滤它们。这样就把流量转移到具有更高优先属性值的前缀上而又保住了具有更低优先属性值的备份路由。还有更重要的一点,就是当链路发生故障的情况下,缺省路由的存在可以维护网络的可达性,而这种方法消除了这一需要,由此可见,该方法确实是行之有效的。
三、总结
企业Internet接入,从技术的角度上讲,有很多种可以选择的方案,采用BGP路由连接只不过是其中的一种,选用这种方式,是最灵活而又复杂的,它可以为企业提供更灵活的接入路由、流量控制的手段、端到端高效率的透明通信服务。国外那些跨国公司在这方面都作出了很多有益的尝试,力争它们网络在全球范围内能够快速响应他们客户的访问,目前在国内,采用BGP路由上联多家ISP运营商的企业为数不多,多半是鉴于成本的因素、技术治理、网络复杂性等诸多因素而放弃了BGP连接,而去采用那种最简单的默认静态路由的连接,同时在上联接口还采用PAT、NAT转换、ACL访问控制、Map_route策略路由选路等技术手段,然而采用这些方式,在目前上游ISP网络不平等,结构不合理这个大环境下,或多或少地存在某种通信服务上的局限性,最终网络不能为企业提供全透明的、高效的、快捷的端到端的透明通信承载服务。因此,从长远的眼光观察,大型企业采用BGP路由与Internet相连是未来企业信息网络发展的必然趋势。