31、Internet网络层——OSPF&BGP&Internet组播&移动IP(网络层)

54 篇文章 36 订阅

OSPF——内部网关协议

  • 正如前述,Internet由大量的独立网络或自治系统构成,并且由不同的组织运营,这些组织通常是公司、大学或者ISP。在自己网络内部,一个组织可以使用自己的内部路由算法,或者更流行的名称叫域内路由算法。不过,流行的只有极少数几个标准协议。在本节,我们将了解域内路由问题并考查OSPF协议,这是一个被普遍使用的路由协议。域内路由协议也称为内部网关协议。
  • 早期的域内路由协议采用了距离矢量算法的设计思想,基于分布式Bellman-Ford算法,该算法继承自ARPANET。路由信息协议(RIP)是当时运行的一个主要例子。在小型网络系统中RIP运作良好,但它不适应规模较大的网络;而且它还遭受无穷计数问题的困扰,收敛速度一般很慢。因为这些问题,1979年ARPANET切换到一个链路状态协议,1988年IRTF开始为域内路由设计一个链路状态路由协议。该协议在1990年成为标准,它就是开放最短路径优先(OSPF)。它借鉴了另一个称为中间系统到中间系统(IS-IS)的协议,该协议已经成为一个ISP标准。由于它们的共同根源,这两个协议大同小异。它们在域内路由协议中占有绝对优势,大多数路由器制造商都同时支持这两个协议。OSPF更广泛地应用在公司网络,而IS-IS则更多地应用在ISP网络。我们将给出OSPF如何工作的大致轮廓。
  • 由于有了其他路由协议的长期工作经验,负责设计新协议的工作组列出了一系列必须要满足的需求。第一,该算法必须发表在公开的文献中,这便是OSPF中O的含义。第二,新的协议必须支持多种距离度量,包括物理距离、延迟等。第三,它必须是一个动态算法,能够自动而快速地适应可络拓扑结构变化。第四,对于OSPF来说这是新的需求,它必须支持基于服务类型的路由。新的协议必须能够区分实时流量和其他流量,并使用不同的路由方法。当时,IP协议有一个服务类型字段,但是没有一个路由协议使用这个字段。OSPF也包含该字段,但是仍然没有人使用它,最终它又被去掉了。也许这种需求有点超期,因为它先于IETF的区分服务工作展开前提出,区分服务模式使得服务质量重新焕发了活力。
  • 第五条与上面一条有关,OSPF必须实现负载均衡,即把负载分散到多条线路上。大多数以前的协议都将所有的数据包通过最优路径发送出去,即使存在两条同等程度好的路由也只选择一条,其他路径根本不使用。在许多情况下,将负载分散到多条线路上可以获得更好的性能。第六,必须支持层次系统。到1988年,一些网络已经增长到相当大的规模,以至于任何一台路由器都不可能知道其完整的拓扑结构。OSPF必须设计成不要求路由器知道完整的拓扑结构也能很好地工作。第七,要求提供适度的安全性,以防止恶作剧的学生向路由器发送虚假路由信息来欺骗路由器。第八,对于那些通过隧道连接Internet的路由器,新协议也必须能够对能够对它们进行处理。以前的协议并不能很好地解决这些问题。
  • OSPF同时支持点到点链路(比如SONET)和广播网络(例如大多数局域网)。其实它能支持拥有多个路由器的网络,这些路由器中的每一个都可以直接与其他路由器通信(称为多路访问网络),即使它们没有广播能力。此前的协议不能很好地处理这种情况。图中给出了一个自治系统网络。这里主机被省略了,因为它们在OSPF中通常不起作用,真正参与路由协议的是路由器和网络,最终到达这些网络中的主机。然而,路由器R3、R4、R5则是通过一个广播局域网连接,诸如交换式以太网。在这里插入图片描述
  • OSPF的工作方式本质上是对一张图进行操作:将一组实际网络、路由器和线路抽象到一个有向图中,图中的每条弧有一个权值(距离延迟等)。两台路由器之间的点到点连接可以用一对弧来表示,每个方向上一个,两个方向上的权值可以不同。广播网络用一个节点表示,加上网络上每台路由器用一个节点表示,从网络节点到路由器节点之间的弧段权值为0。有主机的网络只需要一条到达网络的弧,没有返回弧。这种结构使得路由可以到达主机但是不能穿过主机。OSPF协议从根本上做了两件事,首先用一个类似图b的图来表示实际网络,然后每个路由器使用链路状态方法计算从自身发出到所有其他节点的最短路径。有可能协议会发现多个同样短的路径,在这种情况下,OSPF记住最短路径集合,并在报文转发期间把流量分摊到这些路径上。这种多路径路由方法有助于负载均衡。该方法称为等价成本多路径(ECMP)。
  • Internet中的许多AS本身非常庞大,而且不便于管理。OSPF可以将这样的AS划分成编号的区域,每个区域是一个网络,或者一组相连的网络区域不能相互重叠,但是也不必面面俱到,也就是说有些路由器可能不属于任何一个区域。全部属于一个区域的路由器称为内部路由器。区域是单个网络的一种泛化形式。在区域外部,能见到的是它的目的地而不是拓扑结构。
  • 每个AS有一个骨干区域,称为0号区域。该区域中的路由称为骨干路由器。所有区域都必须连接到骨干区域,连接方式有可能会通过隧道进行;所以,从AS内的任何一个区域出发经过骨干区域,总是有可能到达该AS的任何其他区域。在图形表示法中,隧道也可以用一个弧来表示,并且有一个权值。如同所有其他的区域一样,骨干区域的拓扑结构对于外部也是不可见的。
  • 每个连接到两个或更多区域的路由器称为局域边界路由器。它必须是骨干区域的一部分。区域边界路由器的工作任务:概括本区域的目的地信息并注入到与自己连接的其他区域。这种概括包含成本信息,但不包括区域内的所有拓扑结构。传递成本信息可以使得其他区域内的主机找到进入本区域的最好区域边界路由器。不传递拓扑信息可以减少流量和简化其他区域路由器的最短路径计算。然而如果只有一个边界路由器通往区域外,甚至路由信息概要都不需要传递。通往该区域外部目的地的路由总是被指令前往边界路由器,这类区域称为存根区域。
  • 最后一种路由器是AS边界路由器。它把通往其他AS的外部路由注入到本区域。然后外部路由就呈现为可以通过AS边界路由器可达的目的地,该路由当然会有某种成本。外部路由可以注入一个或更多AS边界路由器。图中给出了自治系统、区域和各种路由器之间的关系。一个路由器可以扮演多种角色,例如一个边界路由器同时还是一个骨干路由器。在这里插入图片描述
  • 在正常操作期间,每个区域内的路由器有相同的链路状态数据库,并运行相同的最短路径算法。其主要工作是计算从自身出发到每个路由器和整个AS内网络的最短路径。区域边界路由器需要所有需要所有与之相连区域的数据库,并且为每个区域分别运行最短路径算法。
  • 对于在同一区域内的源和目的地,选择最好的区域内路由(全部位于该区域内)。对于不再同一个区域内的源和目的地,区域间路由必须从源所在区域到骨干网络,再从骨干网络区域到达目标区域,最后到达目的地。这种算法强制把OSPF配置成星型结构,骨干区域相当于集线器,其他区域是向外辐射区域。因为路由算法选择的是最小成本路由,因此位于网络不同位置的路由器可能会选择不同的区域边界路由器进入骨干区域和目标区域。从源到目的地的数据包被这样路由,由于它们不需要封装或者隧道(除非目标区域与骨干区域的唯一连接时一个隧道)。此外,通往外部目的地的路由器如果需要可以包括外部成本,或者仅仅包含AS内部成本。外部成本指从AS边界路由器通往目的地的外部路径的成本。
  • 当一台路由器启动时,它在所有的点到点线路上发送HELLO消息,并且通过LAN将HELLO消息组播到一个包含其他所有路由器的组。每台路由器从应答消息中得知谁是自己的邻居。同一个LAN上的路由器都是邻居。OSPF协议需要在邻接的路由器指向相互交换信息才能工作,邻接路由器与邻居路由器是不同的。尤其是,让一个LAN中的每台路由器都跟本LAN上的所有其他路由器进行交换路由信息显然非常低效。为了避免出现这样的情形,OSPF要求从每个LAN中选取一台路由器作为指定路由器。指定路由器与本LAN上的所有其他路由器是邻接的,并且与它们交换信息。实际上,它就是一个代表LAN的单个节点。邻居但不是邻接的路由器相互之间不交换信息。有一台备份的指定路由器总是保持最新的数据状态,以便缓解主指定路由器崩溃时的转接和取代主指定路由器的需要。
  • 在正常操作过程中,每台路由器周期性的泛洪LINK STATE UPDATE信息给它的每台邻接路由器。这些消息给出了它的状态信息,并提供了拓扑数据库用到的成本信息。这些泛洪消息需要被确认,以保证它们的传输可靠性。每条消息都有一个序号,路由器据此判断一条入境LINK STATE UPDATE消息比它当前拥有的信息更新还是更老。当一条线路启用、停止或者其成本发生改变时,路由器也要发送LINK STATE UPDATE信息。
  • DATABASE DESCRIPTION信息给出了由发送方持有的所有链路状态表项的序号。通过把自己相应的值与发送方传过来的这些值进行比较,接收方即可决定谁拥有最新的值。当一条链路启动时使用这些消息。通过使用LINK STATE REQUEST信息,每一对邻接路由器中的任何一个路由器都可以向另一个路由器请求链路状态信息。这个算法的结果是,每一对邻接路由器都可检查谁拥有最新的数据;新的信息就是通过这种方式被传播到整个区域的。所有这些信息都是以IP数据包的形式被直接发出去。下表概括了这5类消息。
消息类型描述
HELLO用来发现所有邻居
LINK STATE UPDATE提供发送者到其邻居的成本
LINK STATE ACK对链路状态更新信息的确认
DATABASE DESCRIPTION声明发送者的链路状态更新情况
LINK STATE REQUEST请求链路状态信息
  • 最后,我们把所有的工作综合到一起。通过泛洪算法,每个路由器把它与其他路由器和网络的链路以及链路成本告诉它所在区域的所有其他路由器。这些信息使得每台路由器都可以构建出它所在区域的拓扑结构,并计算最短路径。骨干区域也是这样工作的。而且为了计算出从每个骨干路由器到其他路由器的最佳路由,路由器还要接受来自每个区域边界路由器的信息。最佳路由器信息又被传回到区域边界路由器,区域边界路由器再将这些信息在本区域广播。利用这些信息,内部路由器可以选择通往区域外目的地的最优路径,包括通向骨干区域的最佳出口路由器。

2、BGP——外部网关协议

  • 在一个AS内部,推荐使用的路由协议是OSPF和IS-IS。在AS之间,则可使用另一个协议,称为边界网关协议(BGP)。之所以在AS之间需要一个完全不同的协议,是因为域内协议和域间协议的目标不同。域内协议所需要做的只是尽可能有效地将数据包从源端传送到接收方,它不必考虑政治方面的因素。
  • 典型的路由政策可能涉及政治、安全或者经济方面的考虑因素。下面是可能的路由限制例子:(1)教育网络不承载商业流量(2)五角大楼发出的流量永远不要走经过伊拉克的路径(3)使用TeliaSonera而不用Version(4)不要使用澳大利亚的AT&T,因为它们性能太差(5)起止于苹果的流量不应该经过谷歌中转。路由政策可以因人而异。它们通常是专有的,因为它们包含了特定的敏感商业信息。
  • 路由政策的实施决定了哪些流量可以经过AS之间的哪些链路。一个常见的政策是客户ISP给提供商ISP付费,以便将数据包传送到Internet上的任何其他目的地以及接收来自Internet上任何其他目的地的数据包。可以说客户ISP从服务提供商ISP购买了中转服务。这就像家庭客户从ISP购买了Internet接入服务一样。为了能工作,提供商应该把到达Internet上全部目的地的路由通过它们之间的链路通告给客户。这样,客户就有一条用来传送数据包到任何地方的可用路由。客户应该向提供商通告它自己网络通往目的地的路由。这样提供商可以只给客户发送要去往来那些目的地址的流量;客户不希望处理来自其他目的地的流量。
  • 例子如图。这里有4个相互连接的AS。连接通常采用了Internet交换点(IXP),为了与其他ISP连接,许多ISP都有一条链路连接到该设施。AS2、AS3、AS4都是AS1的客户,它们从AS1购买了中转服务。因此,当源A给目的地C发送时,数据包从AS2经过AS1,最后到达AS4。路由通告的方向和数据包传送方向相反。为了源端能经过AS1到达C,AS4向它的中转服务提供商,即AS1通告C是一个目的地。以后,AS1向它的其他客户公告到达C的路由,其中包括AS2,以便客户知道它们可以通过AS1发送流量给C。在这里插入图片描述
  • 在图中,所有其他AS向AS1购买中转服务。这种中转服务提供了良好的连接性,使它们可以和Internet上的任何主机联系。假设AS2和AS3之间有大量的流量需要交流。由于它们的网络早就连接,因此如果它们愿意,它们可以使用不同的政策——直接给彼此发送免费流量。这将减少必须通过AS1替它们传递的流量,并有望降低它们的账单。这一政策称为对等传输。
  • 为了实现对等传输,两个AS相互通告目的地在自己网络的路由。这样做就有可能使得AS2把从A到B的数据包发给AS3,反之亦然。凡是对等不等于中转。图中AS3和AS4对等,如果C要发送一个数据包给A,但AS3仅仅通告了一条到B的路径给AS4,并没有通告到A的路径。因此流量无法从AS4到AS2,即使存在一条物理路径。因为AS3不希望运载来自AS4去往Internet的流量,它没有中转费用。我们看到A、B、C都有中转安排。例如A必须购买AS2的Internet接入服务。A可能是一台简单的家庭计算机,或者一个具有多个局域网的公司网络。然而它并不需要运行BGP协议,因为它只是一个存根网络,只有一条链路与Internet的其余部分连接。所以,它给网络外部目的地发送数据包的唯一途径就是通过AS2链路,这条路径的设置非常简单,只需设立一个默认路由器即可。另一方面,有些公司的网络连接到多个ISP。这种技术主要用来提供可靠性,因为如果通往一个ISP的路径失败,公司可以使用通往其他ISP的路径。这种技术称为多穴 寻址,在这种情况下,公司的网络可能运行域间路由协议(比如BGP),个,告诉其他AS通过哪些ISP链路可以到达哪些地址。
  • 这些中转和对等流量的政策可能有许多变种,现在详细描述BGP的路由器如何通告路由信息和选择转发数据包的路由。BGP是距离矢量协议的一种形式,但它与域内距离矢量协议(比如RIP)有很大的不同。我们已经看到用政策而不是最小距离来选择使用哪些路由。另一个很大的区别是BGP不仅维护到每个目的地的成本,而且每个BGP路由器还跟踪所使用的路径。这种方法称为路径矢量协议。路径由下一跳路由器(有可能在ISP的另一侧,不一定相邻)和一系列AS或者AS路径组成,这些自治系统或者相应的路径序列是该路由必须遵守的(以相反顺序给出)。最后,一对BGP路由器通过建立TCP连接而相互通信。这种方式既提供了可靠的通信,也隐藏了正在穿越的网络细节。
  • 图中显示了BGP通告路由的过程。这里有3个自治系统,中间的ISP为左右两个ISP提供中转服务。AS3启动一个前缀C的简单路径,并且下一跳路由器时R1a。在底部,它有一条相同的AS路径,但下一跳路由器不同,因为它们来自不同的链路。这则路由广播继续传播,并穿越AS边界进入AS1。在路由器R1a,AS路径为AS2、AS3,并且下一跳是R2a。在这里插入图片描述
  • 路由通告消息中携带完整的路径易于易于让接收路由器发现和打破路由循环。相应的规则是每个路由器在往AS外部发送路由时附加上自己的AS编号(这就是为什么列出的路径是相反的顺序)。当路由器收到一个路由通告时,它会检查消息,检查自己的AS号是否已经出现在AS路径中。如果是,则说明检测到了一个路由循环,因而必须丢弃路由通告。然而,有点讽刺意义的是,10世纪90年代后期人们才认识到尽管有这种防御措施,BGP仍然遭受无穷计数问题的困扰。BGP没有长寿的的路由环路,但有时路由会收敛得很慢,而且有中转循环。
  • 给出一个AS列表来指定一条路径是非常粗糙的表达方式。一个AS可能是一个小公司也可能是一个国际骨干网络。没有任何途径告知这些路由的详情,BGP甚至不去了解。因为不同的AS可能使用不同的域内路由协议,因此这些路由协议的成本无法比较;即使它们能相互比较,一个AS或许还不愿意透露其内部的路由度量值。这正是域间路由协议与域内路由协议的不同之处。至此我们已经看到两个ISP如何通过链路发送路由通告消息。我们仍然需要一些方法将BGP路由从ISP的一侧传播到另一侧,只有这样它们才能被发送到下一个ISP。这个任务可以由域内协议承担,但由于BGP非常善于扩展到大型网络,因此通常使用BGP的一个变种。这就是所谓的内部BGP(iBGP),以示区别与BGP的常规应用。
  • 在 ISP内部传播路由通告有一定规则:位于ISP边界的每个路由器为了一致性,要学习所有其他边界路由器看到的路由,如果ISP的一个边界路由器学习到一个去往IP 128.208.0.0/16的前缀,那么该ISP的所有路由器都要学习这个前缀。然后从ISP的任何地方都可以到达该前缀。例如,路由器R2b知道通过顶部的路由器R2c或者底部的路由器R2d可以到达C。随着路由在ISP内穿越,下一跳得到更新,因此位于ISP远端的路由器知道使用另一侧的哪些路由器离开ISP。这就是为什么最左边的路由看到的下一跳路由器在同一个ISP内,而不是在下一个ISP内的路由器。
  • 现在描述BGP协议的最关键部分,就是路由器如何为每个目的地选择使用哪条路由。每个BGP路由器从它连接的下一个ISP路由器学习如何到达给定目的地的路由,也可以从其他边界路由器哪里(它们已经从与其他ISP连接的路由器上听到不同 的路由)学习到给定目标的路由。每个路由器必须解决这些路由集合中哪条路由最好。最终的答案是由ISP指定某些政策,根据政策来挑选其中一条首选路由。然而,这种解释太笼统,所以我们说明一些共同策略。
  • 第一个策略,优先选择通过对等网络的路由,而不是通过中转提供商的路由。因为前者免费,而后者要付成本费用。另一种策略是将短路径更好作为默认规则。最后一个策略是优先选择具有ISP内最小成本的路由,这一策略称为提前退出或热土豆路由,它有副作用。例如C发送一个数据包到A应该选择R3a,而不是R3b,但沿着R3a将到达R1a,这将比R1b距离目标更长(不过这是针对AS1而言,两条路径谁更好还无从判断,寒注)。
  • 上述讨论应该明确每个BGP路由从已知的可能路由中选择自己的最佳路由。情况非如人们天真地预期那样,BGP按照AS粒度来选择路径,OSPF选择每个每个AS的内部路径。BGP和内部网关协议的集成相当根深蒂固。这意味着,例如BGP可以找到从一个ISP到下一个ISP的最好出口点,并且这个点在ISP内是各不相同的,如同热土豆策略。这也意味着位于一个AS内不同部分的BGP路由器到达相同的目的地可能选择不同的AS路径。详细信息参阅RFC 4271和相关RFC给出的BGPv4规范。

3、Internet组播

  • 普通的IP通信发生在一个发送方和一个接收方之间。然而,对于有些应用,它们需要一个能够同时向大量接收方发送数据的经进程。这样的应用例子有许多,比如直播体育比赛等。IP用D类IP地址来支持一对多的通信,或组播。每个D类地址标识了一组主机。总共有28位可用于标识组播组,因此网络中可同时并存250万个组。当一个进程给一个D类地址发送数据包时,网络会尽力而为地将这些数据包投递给组中的所有成员,但是并不一定保证投递成功。
  • IP地址224.0.0.0/24范围内的地址保留用作本地网络组播。在这种情况下,不需要路由协议的支持。带有一个组播地址的数据包被简单广播到局域网上,从而达到组播的目的。局域网上的所有主机接收广播数据包,只有属于组成员的主机对该数据包进行处理。路由器不会讲数据包转发到局域网外。本地组播的例子有:
224.0.0.1LAN上的全部系统
224.0.0.2LAN上的全部路由器
224.0.0.5LAN上的全部OSPF路由器
224.0.0.251LAN上的全部DNS路由器
  • 其他组播地址或许有成员分布在不同的网络上。在这种情况下,就需要一个路由协议。但首先组播路由器必须了解哪些主机属于某个组的成员。一个进程要求它的主机加入到某个指定的组中;它也可以要求它的主机离开该组。每台主机跟踪记录当前它的哪些进程属于哪些组当一台主机上的最后一个进程领导一个组时,该主机就不属于这个组。大约每分钟一次,每个组播路由器向它所在LAN上的所有主机发送一个查询数据包(使用本地组播地址224.0.0.1),要求这些主机报告自己当前属于哪些组。组播路由器可能与标准的路由器在同一台机器上,也可能分属两台机器。每个主机收到查询消息后,返回一个响应包,其中包括了自己感兴趣的所有D类地址。这些查询包和应答包使用了一个称为Internet组管理协议(IGMP)的协议,该协议由RFC3376描述。
  • 几个组播路由协议中的任何一个都可用于建立组播生成树,该树给出了一条从发送方到组内所有成员的路径。在AS内,主要使用的是协议独立组播协议(PIM)。PIM适合于几种场合。在密集模式PIM中,算法创建了一棵修剪的逆向路径转发树。这棵树比较适合于组成员分布在网络各处的情况,比如数据中心网络把文件分发给多个服务器。在稀疏模式PIM中,算法创建的生成树类似于核心树。这种方式比较适合内容提供商向它IP网络上的用户组播TV。这种设计的一种变体称为特定组播PIM可用来优化只有一个发送方的情况。最后,当组成员分布不止一个AS时,需要BGP或隧道的组播扩展来创建组播路由。

4、移动IP

  • 许多Internet用户拥有移动计算机,当他们离开家乡甚至在旅游的途中也希望能够与Internet保持连接。不幸的是,IP的寻址系统使得这样的异地办公比较难以实现。IETF成立了一个工作组来寻求解决方案,该方案的目标主要有:(1)每台移动主机必须能够在任何地方使用它的家乡IP地址(2)不允许修改固定主机的软件(3)不允许改动路由器软件和各类表(4)发给移动主机的大多数数据包不应该绕道而行(5)移动主机在家时不应该有任何开销。
  • 简单来说,每个允许主机漫游的网点必须创建一个称为家乡代理的助手。当移动主机出现在一个外地网点时,它获得一个外地网点的新IP地址(称为转交地址);然后移动主机通过该转交地址告诉家乡代理自己现在在哪里。当发给该该移动主机的数据包到达家乡网点,恰好移动主机不在家,那么家乡代理截获该数据包,并隧道给接入到当前转交地址上的移动主机。不管通信对方是谁,移动主机都可以直接发送应答数据包,但仍把家乡地址作为应答数据包的源地址。这个解决方案符合上述所有目标,除了移动主机的数据包必须走弯路这一点。
  • 既然我们已经覆盖了Internet的网络层,现在可以了解该解决方案的更多细节。第一,我们可以创建一个的更特殊前缀的路由,也就是说如果一个遥远网点通告了一条到160.80.40.20/32,那么发往该目标地址的数据包首先会被发送到适当的地方。这个选项取决于路由器使用的最长匹配长度前缀算法。然而我们必须为单个IP地址增加一条到一个IP前缀的路由。如果每个人带着计算机移动时都要修改全局IP路由,显然会增加路由器的负担。第二个选择是改变移动主机的IP地址。诚然发送到家乡IP地址的数据包将不再被传递,直到所有相关人员、程序和数据库都知道移动主机的地址变化情况。但移动主机仍然可以在新的位置使用Internet浏览网页。这个选项在更高的层次处理移动性,通常发生在用户在咖啡店通过本地无线局域网使用Internet,这个选项的缺点是它要中断某些应用程序,因为移动主机来回移动时没有与网络连接。移动性也可以在一个较低层次处理,比如链路层这通常发生在一台笔记本电脑通过单个802.11无线网络上网。此时移动主机的IP地址不会发生改变,因而网络路径不变。然而移动的范围非常有限,如果笔记本电脑移动得太远,它就必须通过另一个具有不同IP地址的网络接入Internet。
  • 针对IPv4的移动IP解决方案由RFC 3344给出。它可在现有的Internet路由上工作,允许移动主机外出时用自己的IP地址保持与Internet的连接。为了能工作,移动主机必须能够发现自己在移动。这点可以通过ICMP路由器通告和恳求消息做到。移动主机定期监听路由器的通告报文或通过恳求报文来发现最近的路由器。如果该路由器的地址不同于移动主机平常在家用的路由器地址,则它可以断定自己必定在某个外地网络。如果这个路由器地址自上一次修改以来又发生了变化,则说明移动主机已经转移到了另一个网络。同样的机制可以使得移动主机发现它们的家乡地址,从而确定自己从外地返回到来家乡。
  • 为了在外地网络得到一个转交IP地址,移动主机只需要简单地使用DHCP服务。另外如果IPv4地址短缺,移动主机可以通过外地代理发送和接收数据包,该外地代理早已经有了一个当地网络上的IP地址。移动主机用来发现外地代理使用的ICMP机制与用来寻找家乡代理使用的机制相同。一旦移动主机获得了一个IP地址或找到一个外地代理,它就能够利用当地网络给家乡代理发送消息,告诉其当前位置。
  • 当移动主机不在家乡网络时,其家乡代理需要某种方式来拦截发给移动主机的数据包。ARP协议提供了一个方便的机制。要通过以太网给一个IP主机发送数据包,路由器需要知道主机的以太网地址。通常的机制是路由器发送一个ARP请求查询报文,例如问“160.80.40.20的以太网地址是什么?”。当移动主机在家乡网络时,它以自己的IP地址与自己的以太网回答ARP查询。当移动主机在家乡网络时,它以自己的以太网地址来响应此查询。然后路由器把发送给160.80.40.20的数据包发给家乡代理。这就是所谓的ARP代理。
  • 为了在移动主机离开或返回家乡网络时快速更新ARP映射,采用了另一个ARP技术,称为免费ARP。基本上移动主机或家乡代理自己发送针对该移动主机IP地址的ARP查询报文,在该查询报文中提供了正确的答案,因此该路由器注意后及时更新其映射。家乡代理给移动主机转发数据包其实很简单,在家乡代理和连接在转交地址上的移动主机之间建立一个隧道,然后通过该隧道转发数据包。具体做法是只要用目标地址是转交地址的另一个IP头封装该数据包,当封装后的数据包到达该转交地址后,外层的IP头就被拆除,提取出里面的数据包交给移动主机。
  • 与许多Internet协议一样,麻烦在细节上。首先NAT盒子依赖于经过的IP数据包,通过偷窥其IP头来查看TCP头或UDP头。隧道移动IP的原始形式没有使用这些头,因此不能与NAT盒子一起工作,对此的解决方法是改变封装,使得封装后的数据包包括UDP头。第二个复杂性在于一些ISP检查数据包的源IP地址,看它们是否匹配路由协议任何应该出现的地方。这种技术称为入口过滤,它是一种安全措施,路由器会丢弃哪些看似不正确地址的数据包,因为这有可能是恶意的流量。然而当移动主机在外地网络,它发送到其他Internet主机的数据包的源地址不属于所在的外地网络,所以这样的数据包将被外地网络的路由器丢弃。为了解决这个问题,移动主机可以利用转交地址作为隧道的源把数据包返回给家乡代理;从家乡网络它们再被发送到Internet,这时的数据包显然出现在正确地方。其代价是更加迂回的路由。
  • 还有一个问题是安全性。当家乡代理接收到一条消息,请求它将所有给Roberta的数据包统统转发给某一个IP地址时,那么除非它能确认这个请求真的是Roberta发送的,而不是有人在模仿他,否则最好不要贸然答应这个请求。基于密码学的认证协议可用来实现这样的身份验证任务。
  • IPv6的移动性建立在IPv4的基础。上述方案遭到来自三角路由问题的困惑,即发送到移动主机的数据包在遥远的家乡代理拐了个弯。在IPv6中,针对该问题进行了路由优化,在最初的数据包遵循冤枉路径后,移动主机和其他IP地址可以使用一条两者之间的直接路由。移动IPv6由RFC 3775定义。
  • Internet还定义了另一种移动性。一些飞机上有内置的无线网络,乘客可以使用他们的笔记本电脑连接到Internet。这架飞机有一个路由器通过无线链路连接到Internet的其余部分。这意味着整个网络在移动。网络移动性设计支持这种场景,而笔记本电脑却全然不知飞机在移动。至于它们所关注的这只是另一个网络。当然某些笔记本电脑可能会使用移动IP来保持它们的家乡地址,而它们实际上在飞机上,所以我们有两个层次的移动性。IPv6的网络移动由RFC 3963定义。

网络层总结

  • 网络层向传输层提供服务,它既可以基于虚电路,也可以基于数据报。在这两种情况下,它的主要任务是将数据包从源端路由到接收方。在数据包网络中,路由决策针对每个数据包而作;在虚电路网络中,路由决策走的建立虚电路时做出。
  • 计算机网络用到了许多路由算法。泛洪是最简单的算法,它把数据包发送到所有的路径上。大多数算法寻找一条最短路径,并能自适应网络拓扑结构的变化。主要的算法是距离矢量算法和链路状态算法大多数网络实际使用了其中的某一个算法。其他重要的路由话题包括大型网络的层次路由、移动主机的路由、广播路由、组播路由和选播路由。
  • 网络很容易拥塞,从而增加了数据包的延迟和丢失。网络设计者企图通过一系列手段来避免拥塞,其中包括设计具有足够容量的网络、选择未拥堵的路由、拒接更多的流量、给源端发信号降低速度以及负载脱落。
  • 处理拥塞控制的下一步是努力获得所承诺的服务质量。一些应用程序在乎吞吐量而另一些程序更关心延迟和抖动。提供不同服务质量的方法包括流量整形、路由器上的资源预留以及准入控制。专门被设计用于提供良好服务质量的几种途径包括IETF的综合服务(RSVP)和区分服务。
  • 网络在很多方面都有所不同,所以当多个网络相互连接时,问题就出现了。当不同的网络具有不同的最大数据包长度时,可能需要分段。不同网络内部可运行不同的路由协议,但外部必须运行公共的路由协议。有的时候,隧道一个数据包穿越一个敌对网络能解决问题,但是如果源网络和目标网络的类型不同,这种方法就会失败。
  • Internet的网络层有丰富多样的协议。这些协议包括数据包协议IP和控制相关协议,比如ICMP、ARP和DHCP。一个称为MPLS的面向协议携带IP数据包穿过某些网络。网络中使用的主要路由协议是OSPF,穿越网络用的路由协议是BGP。Internet正快速消耗着IP地址,所以IPv6作为IP的新版本已经开发出来,并正在被部署。
  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值