软件测试管理

当前位置:首页 > 软件测试管理

《计算机网络:自顶向下方法》第四章 续8

4.6.3自治系统间的路由选择: BGP


我们刚才学习了ISP如何使用RIP和OSPF来决定位于相同AS内部的源和目的对之间的优化路径。我们现在研究下,跨越多个AS的源和目的对之间是如何确定路径的。由RFC4271 (亦可参见[RFC 4274])定义的边界网关协议( Broder Gateway Protocol, BGP)版本4是当今因特网中域间路由选择协议事实上的标准。它通常被称为BGP4或简称为BGP。作为一个自治系统间路由选择协议(参见4.5.3节),BGP为每个AS提供了进行以下工作的手段:


1)从相邻AS处获得子网可达性信息。


2)向本AS内部的所有路由器传播这些可达性信息。


3)基于可达性信息和AS策略,决定到达子网的“好”路由。


更为重要的是,BGP使得每个子网向因特网的其余部分通告它的存在。一个子网高声宣布“我存在,我在这里”,并且BGP确保在因特网中的所有AS知道该子网以及如何到达那里。如果没有BCP的话,每个子网将是隔离的,即它们孤独并且不为因特网其余部分所知。


1. BGP基础


BGP极其复杂,许多专著致力于研究该主题,而且许多问题仍没有得到很好理解[ Yannuzzi 2005]。此外,作为较高层ISP的设计者或管理员,即使在阅读了这些专著和这些RFC以后,如果不花数月(即使不是数年)实际实践BCP的话,可能发现难以全面掌握BGP。无论如何,因为BGP是因特网中绝对至关重要的协议,即从本质上讲,正是这个协议将所有的东西粘合在一起了,因此我们至少需要获得该协议工作原理的初步知识。我们从描述BGP在简单的例子网络环境下如何工作开始,我们曾在图4-32中学习过该例子网络。在下面的描述中,我们的讨论将基于4.5.3节中的层次路由选择,希望读者能复习一下该材料。


在BGP中,路由器对通过使用179端口的半永久TCP连接来交换路由选择信息。又于图4-32中的网络而言,该半永久TCP显示在图4-40中。对于每条直接连接位于两个不同的AS中的路由器的链路而言,通常有一条这样的BGP TCP连接。因此,在图4-40中,在网关路由器3a和1c之间有一条TCP连接,在网关路由器lb和2a之间有另一条TCP连接。在一个AS中的路由器之间还有许多半永久BCP TCP连接。特别是,图4-40显示了一个AS内部的每对路由器之间的一条TCP连接的通常配置,在每个AS内部产生了网状的TCP连接。对于每条TCP连接,位于该连接端点的两台路由器称为BGP对等方( BGPpeers),沿着该连接发送所有BGP报文的TCP连接称为BGP会话( BCP session)。此外,跨越两个AS的BGP会话称为外部BGP (eBGP)会话( external BCP session),在同一个AS中的两台路由器之间的BGP会话称为内部BGP (iBGP) 会话( intemal BGPsession)。在图4-40中,eBGP 会话显示为长虚线,iBGP 会话显示为短虚线。注意到图4-40中的BGP会话线并不总是与图4-32中的物理链路对应。


《计算机网络:自顶向下方法》第四章 续8




实践原则


获得因特网的存在:拼好拼图


假定你刚刚创建一个有一些服务器的小型公司网络,包括一个描述你所在公司产品和服务的公共Web服务器、公司雇员获得电子邮件报文的电子邮件服务器和一台DNS服务器。你很自然地希望整个世界能够在你的Web站点上冲浪,知道你那些令人兴奋的产品和服务。此外,你将希望公司雇员能够向遍及全球的潜在用户发送和接收电子邮件。


为了满足这些目标,你先要获得因特网连通性。为做到这一点,要与一个本地ISP签订合同并与之连接。你的公司将要有一台网关路由器,将其与本地ISP相连接。这种连接可以是通过现有的电话基础设施的DSL连接、一条到ISP的租用线,或在第1章中描述的许多其他种接入方案之一。你的本地ISP也将为你提供一个IP地址范围,例如一个由256个地址组成的/24地址范围。一旦有了自己的物理连接和IP地址范围,你将在该地址范围内分配IP地址:一个给你的Web服务器,一个给你的邮件服务器,一个给你的DNS服务器,一个给你的网关路由器,其他IP地址给你公司网络中的其他服务器和网络设备。


除了与一个ISP签约外,你还需要与一个因特网注册机构签约,以便为你的公司获得一个城名,如第2章所述。例如,如果你的公司名为Xanadu公司,你当然试图获得域名xanadu. com。你的公司还必须在DNS系统中存在。特别是,因为外部要与你的DNS服务器联系以获得服务器的IP地址,你还需要注册你的DNS服务器的IP地址。你的注册机构则将你的DNS服务器(域名和对应的地址)放入。com顶级城名服务器中的一个表项中,如在第2章中所述。完成这个步骤后,知道你域名(如xanadu. com)的任何用户将能够经过DNS系统获得你DNS服务器的IP地址。


为了使人们能够发现你Web服务器的IP地址,你需要在你的DNS服务器中包括一个将你的Web服务器名字(如www. xanadu. com)映射为其IP地址的表项。你还要有用于其他公共可用的公司服务器的类似表项,包括你的邮件服务器。如此一来,如果Alice要浏览你的Web服务器,DNS系统将联系你的DNS服务器,找出你的Web服务器的IP地址,并将其提交Alice。Alice则能够与你的Web服务器直接创建一条TCP连接。


然而,允许来自全世界的外部者接入你的Web服务器仍存在其他必要的、决定性的步骤。考虑下列情况,假设Alice知道你Web服务器的IP地址,当她向那个IP地址发送一个IP数据报(如一个TCP SYN报文段)。这个报文段将通过因特网进行路由,访问位于许多不同AS中的一系列路由器,并最终到达你的Web服务器。当这些路由器中的任一个接收到该报文段,将去其转发表中查找表项,以决定它转发该报文段的出口。因此,每台路由器需要知道你公司的/24前缀(或某些聚合项)的存在。一台路由器怎祥才能知道你公司的前缀呢?如我们刚才所见,它从BP知道了前缀!特别是,当你的公司联系一个本地ISP并分配到一个前缀(如一个地址范围)时,你的本地ISP将使用BCP来向它连接的ISP通告该前缀。那些ISP则将依次使用BCP来传播该通告。最终,所有的因特网路由器将知道你的前缀( 或包括你的前缀的某些聚合),因而能够以你的Web和邮件服务器为目的地适当地转发数据报。



BGP使得每个AS知道经过其相邻AS可达哪些目的地。在BGP中,目的地不是主机而是CDIR化的前缀(prefx), 每个前缀表示一个子网或一个 子网的集合。因此,例如假定有4个子网与AS2相连: 138. 16. 64/24, 138. 16. 65/24,138. 16. 66/24和138. 16. 67/24。则AS2能为这4个子网聚合这些前缀,并使用BGP向ASI通告单一前缀138. 16. 64/22。举另一个例子,假定这4个子网中的前3个在AS2中,第四个子网138. 16. 67/24位于AS3中。则如4.4.2节中的实践原则所述,因为路由器使用最长前缀匹配来转发数据报,所以AS3向ASI通告更特定的前缀138. 16. 67/24,而AS2仍然向ASI通告聚合的前缀138. 16. 64/22。


现在我们研究一下BGP是怎样经显示在图4-40中的BCP会话来分发前缀可达性信息的。正如你所预想的那样,在网关路由器3a和1e之间使用eBCP会话,AS3向AS1发送经AS3可达的前缀列表; ASI向AS3发送经ASI可达的前缀列表。类似地,ASI和AS2通过它们的网关路由器1b和2a交换其可达性信息。同样如你预期的那样,在任何AS中的网关路由器接收到eBGP学习到的前缀后,该网关路由器使用它的iBGP会话来向该AS中的其他路由器发布这些前缀。因此,在ASI中的所有路由器将得知AS3的前缀,包括网关路由器1b也将得知这些前缀。在ASI中的网关路由器1b因此能向AS2重新通告AS3的前缀。当一台路由器(网关或不是网关)得知一个新前缀时,它为该前缀在其转发表中创建一个项,如4. 5.3所述的那样。


2.路径属性和BGP路由


在对BCP有了一些基本了解后,下面我们更深人地学习它(在此过程中将同时增加一些较为不重要的技术细节!)。在BGP中,一个自治系统由其全局唯一的自治系统号( Autonomous System Number, ASN) [ RFC 1930]所标识。(从技术上讲,并非每个AS都有一个ASN。特殊是有一种所谓桩(stub) AS通常就没有ASN,这种桩AS仅承载源地址或目的地址为本AS的流量。我们将在下面讨论中忽略这种特殊情况,以便能从全局看问题。)就像IP地址一样,AS号由ICANN地区注册机构分配[ ICANN 2012]。


当一台路由器通过BGP会话通告一个前缀时,它在前缀中包括-些BGP属性(BGPattribute)。用BGP术语来说,带有属性的前缀被称为一条路由(route)。 因此,BGP对等方彼此通告路由。两个较为重要的属性是AS- PATH和NEXT-HOP。


●AS-PATH。该属性包含了前缀的通告已经通过的那些AS。当一个前缀传送到一个AS时,该AS将它的ASN增加到AS- PATH属性中。例如,考虑图4-40,假定前缀138.16.64/24首先是由AS2向ASI通告的;如果ASI接下来将该前缀向AS3通告,则该AS-PATH将是AS2ASI。路由器使用该AS-PATH属性来检测和防止循环通告;特别是如果一台路由 器看到它的AS被包括在该路径列表中,它将拒绝该通告。我们将很快讨论到,路由器也使用AS- PATH属性在多条路径中选择相同的前缀。


●在AS间和AS内部路由选择协议之间提供重要链路后,NEXT- HOP属性具有一种微妙而重要的用途。NEXT-HOP 是一个开始某AS- PATH的路由器接口。为了深人理解该属性,我们再次观察图4-40。考虑当AS3中的网关路由器3a向ASI中的网关路由器le通告一条路由时发生的情况。该路由包括通告前缀(我们称该前缀为x)和针对该前缀的一个AS PATH。该通告也包括NEXT-HOP,这是路由器3c通向le的接口的IP地址。(前面讲过台路由器具有多个 IP地址,每个接口有一个地址。)现在考虑当路由器ld得知了来自iBGP的这条路由后发生的情况。在得知到x的这条路由后,路由器1d可能要沿着该路由向x转发分组,即路由器1d可能要在其转发表中包括表项(x, 1),其中1是从ld朝着网关路由器1e开始最低费用路径的接口。为了决定1, ld在NEXT- HOP属性中提供了到它的AS内部路由选择模块的IP地址。注意到AS内部路由选择算法已经确定了到ASI中所有与该路由器相连的子网的最低费用路径,包括到用于1e和3a之间的链路的子网。从1d到le - 3a子网的这条最低费用路径出发,Id 决定它的路由器接口l开始于这条路径,进而将表项(x,1)增加进它的转发表中。这就实现了这项功能!总而言之,路由器使用NEXT- HOP属性正确地配置它们的转发表。


●图4-41图示说明了另种需要NEXT HOP的情况。在该图中,ASI和AS2由两条对等链路连接。在ASI中的路由器能够知道到相同前缀x的两条不同的路由。这两条路由具有到x的相同的AS- PATH,但具有不同的NEXT- HOP值对应于不同的对等链路。使用NEXT-HOP值和AS内部路由选择算法,路由器能够确定到每条对等链路的路径的费用,然后应用热土豆路由选择(参见4.5.3 节)来决定适当的接口。


BGP也包括允许路由器对路由分配偏好测度的属性,以及指示前缀如何插人位于起始AS的BCP的属性。对于路由属性的全面讨论,参见[ Grifin 2002; Stewart1999; Halabi 2000; Feamster 2004; RFC4217]。


当一台网关路由器接收到一台路由器通告时,它使用其输入策略( importpolicy)来决定是否接收或过滤该路由,是否设置某种属性,如路由器偏好测度。输人策略可能过滤掉一条路由, 因为该AS可能不希望通过在该路由的AS-PATH中的某个AS发送流量。网关路由器也可能过滤一条路由,因为它已经知道了一条到相同前缀的偏好路由。


《计算机网络:自顶向下方法》第四章 续8


相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~