计算机网络4——网络层7 VPN 和NAT,MPLS

一、虚拟专用网VPN

1、介绍

由于IP地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。实际上,在许多情况下,很多主机主要还是和本机构内的其他主机进行通信(例如,在大型商场或宾馆中,有很多用于营业和管理的计算机。显然这些计算机并不都需要和互联网相连)。

假定在一个机构内部的计算机通信也是采用TCP/IP协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其P地址。这就是说,让这些计算机使用仅在本机构有效的IP地址(这种地址称为本地地址),而不需要向互联网的管理机构申请全球唯一的IP地址(这种地址称为全球地址)。这样就可以大大节约宝贵的全球IP 地址资源。

但是,如果任意选择一些IP地址作为本机构内部使用的本地地址,那么在某种情况下可能会引起一些麻烦。例如,有时机构内部的某台主机需要和互联网连接,那么这种仅在内部使用的本地地址就有可能和互联网中某个IP地址重合,这样就会出现地址的二义性问题。

为了解决这一问题,RFC 1918 指明了一些专用地址(private address)。这些地址只能用于一个机构的内部通信,而不能用于和互联网上的主机通信。换言之,专用地址只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。2013年4月,RFC6890全面地给出了所有特殊用途的IPv4和IPv6地址,但三个IPv4专用地址块的指派并无变化,即

  • 10.0.0.0/8,即从10.0.0.0 到 10.255.255.255。
  • 172.16.0.0/12,即从172.16.0.0到 172.31.255.255.
  • 192.168.0.0/16,即从192.168.0.0 到192.168.255.255。

上面的三个地址块分别相当于原来的一个A类网络、16个连续的B类网络和 256个连续的C类网络。A类地址本来早已用完了,而上面的地址10.0.0.0本来是分配给 ARPANEI的。由于 ARPANET已经关闭停止运行了,因此这个地址就用作专用地址。

采用这样的专用IP地址的互连网络称为专用互联网或本地互联网,或更简单些,就叫作专用网。显然,全世界可能有很多的专用互连网络具有相同的IP地址,但这并不会引起麻烦,因为这些专用地址仅在本机构内部使用。专用IP地址也叫作可重用地址(reusableaddress)。

有时一个很大的机构的许多部门分布的范围很广(例如,在世界各地),这些部门经常要互相交换信息。这可以有两种方法。

  1. 租用电信公司的通信线路为本机构专用。这种方法虽然简单方便,但线路的租金太高,一般难于承受。
  2. 利用公用的互联网作为本机构名专用网之间的通信载体,这样的专用网又称为虚拟专用网 VPN(Virtual Private Network)

这里之所以称为“专用网”是因为这种网络是为本机构的主机用于机构内部的通信而不是用于和网络外非本机构的主机通信。如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。加密需要采用的协议将在之后讨论。

“虚拟”表示“好像是”,但实际上并不是,因为现在并没有真正使用通信专线,而 VPN 只是在效果上和真正的专用网一样。一个机构要构建自己的 VPN 就必须为它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的VPN 系统都知道其他场所的地址。

2、工作原理

下图以两个场所为例说明如何使用IP隧道技术实现虚拟专用网。

假定某个机构在两个相隔较远的场所建立了专用网A和B,其网络地址分别为专用地址 10.1.0.0和 10.2.0.0。现在这两个场所需要通过公用的互联网构成一个 VPN。

显然,每一个场所至少要有一个路由器具有合法的全球IP地址,如图(a)中的路由器R1和R2。这两个路由器和互联网的接口地址必须是合法的全球IP地址。路由器R1和R2在专用网内部网络的接口地址则是专用网的本地地址。

在每一个场所A或B内部的通信量都不经过互联网。但如果场所A的主机X要和另一个场所B的主机Y通信,那么就必须经过路由器R1和 R2。主机 X向主机 Y发送的IP 数据报的源地址是 10.1.0.1,而目的地址是10.2.0.3。这个数据报先作为本机构的内部数据报从X发送到与互联网连接的路由器R1。路由器R1收到内部数据报后,发现其目的网络必须通过互联网才能到达,就把整个的内部数据报进行加密(这样就保证了内部数据报的安全),然后重新加上数据报的首部,封装成为在互联网上发送的外部数据报,其源地址是路由器R1的全球地址 125.1.2.3,而目的地址是路由器R2的全球地址 194.4.5.6。路由器 R2收到数据报后将其数据部分取出进行解密,恢复出原来的内部数据报(目的地址是10.2.0.3),交付主机Y。可见,虽然X向Y发送的数据报通过了公用的互联网,但在效果上就好像是在本部门的专用网上传送一样。如果主机Y要向X发送数据报,那么所进行的步骤也是类似的。
在这里插入图片描述

请注意,数据报从R1传送到R2可能要经过互联网中的很多个网络和路由器。但从逻辑上看,在 R1到 R2之间好像是一条直通的点对点链路,图 (a)中的“隧道”就是这个意思

如图(b)所示的、由场所A和B的内部网络所构成的虚拟专用网 VPN 又称为内联网(intranet或 intrrnet VPN,即内联网 VPN),表示场所 A 和B都属于同一个机构。

有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来。这样的VPN就称为外联网(extranet或extranetVPN,即外联网VPN)。

请注意,内联网和外联网都采用了互联网技术,即都是基于TCPIP 协议的。

还有一种类型的 VPN,就是远程接入VPN(remoteaccess VPN)。我们知道,有的公司可能并没有分布在不同场所的部门,但却有很多流动员工在外地工作。公司需要和他们保持联系,有时还可能一起开电话会议或视频会议。远程接入VPN可以满足这种需求。在外地工作的员工通过拨号接入互联网,而驻留在员工个人电脑中的VPN 软件可以在员工的个人电脑和公司的主机之间建立 VPN 隧道,因而外地员工与公司通信的内容也是保密的,员工们感到好像就是使用公司内部的本地网络。

二、网络地址转换

1、介绍

下面讨论另一种情况,就是在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和互联网上的主机通信(并不需要加密),那么应当采取什么措施呢?

最简单的办法就是设法再申请一些全球IP地址。但这在很多情况下是不容易做到的。目前使用得最多的方法是采用网络地址转换。

网络地址转换NAT (Network Address Translation)方法是在1994年提出的。这种方法需要在专用网连接到互联网的路由器上安装NAT软件。装有NAT软件的路由器叫作NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球P地址,才能和互联网连接。

下图给出了NAT路由器的工作原理。在图中,专用网192.168.0.0内所有主机的IP地址都是本地IP地址 192.168.x.X。NAT路由器至少要有一个全球IP地址,才能和互联网相连。在本例中,NAT路由器的全球IP地址是172.38.1.5(当然,NAT路由器可以有多个全球IP地址)。

2、工作原理

下图给出了NAT路由器的工作原理。在图中,专用网192.168.0.0内所有主机的正地址都是本地IP地址 192.168.x.X。NAT路由器至少要有一个全球IP地址,才能和互联网相连。在本例中,NAT路由器的全球IP地址是172.38.1.5(当然,NAT路由器可以有多个全球IP地址)。
在这里插入图片描述
NAT路由器收到从专用网内部的主机A发往互联网上主机B的IP数据报1,源地址 S= 192.168.0.3,而目的地址D=213.18.2.4。NAT 路由器通过内部的 NAT转换表,把专用网的IP 地址 192.168.0.3,转换为全球IP 地址 172.38.1.5后,改写到数据报的首部中作为新的源地址,然后把新的数据报2转发出去。主机B收到IP 数据报2后,发回应答3,B 发送的IP 数据报的源地址就是自己的地址S=213.18.2.4,目的地址就是刚才收到的数据报的源地址,因此现在 D= 172.38.1.5。请注意,B并不知道 A的专用地址 192.168.0.3。实际上即使知道了,也不能使用,因为互联网上的路由器不能转发目的地址是任何专用地址的IP数据报。当 NAT路由器收到B发来的IP数据报3时,还要进行一次IP地址的转换。通过NAT 转换表,把收到的IP 数据报使用的目的地址 D= 172.38.1.5 转换为专用网内部的目的地址 D=192.168.0.3(即主机A真正的本地IP地址),变成了数据报4,然后发送到 A。

由此可见,当NAT路由器具有"个全球IP地址时,专用网内最多可以同时有"台主机接入到互联网。这样就可以使专用网内较多数量的主机,轮流使用NAT路由器有限数量的全球IP地址。

2、注意事项

显然,通过NAT路由器的通信必须由专用网内的主机发起。设想如果有专用网上外面的主机要发起通信,当IP 数据报到达 NAT 路由器时,NAT 路由器就不知道应当把目的IP地址转换成专用网内的哪一个本地IP地址。这就表明,专用网内部的主机不能直接充当服务器用。

为了更加有效地利用NAT路由器上的全球IP地址,现在常用的NAT转换表把运输层的端口号也利用上。这样,就可以使多个拥有本地地址的主机,共用NAT路由器上的一个全球IP地址,因而可以同时和互联网上的不同主机进行通信。

使用端口号的 NAT 也叫作网络地址与端口号转换NAPT(NetworkAddress and PorTranslation),而不使用端口号的 NAT 就叫作传统的 NAT (traditional NAT)。但在许多文献中并没有这样区分,而是不加区分地都使用NAT这个更加简洁的缩写词。下表说明了NAPT 的地址转换机制。
在这里插入图片描述
从下表可以看出,在专用网内主机 192.168.03 向互联网发送IP 数据报,其 TCP 端口号选择为 30000。NAPT把源IP地址和TCP端口号都进行转换(如果使用UDP,则对UDP的端口号进行转换。原理是一样的)。另一台主机192.168.0.4也选择了同样的TCP端口号30000。这纯属巧合(端口号仅在本主机中才有意义)。现在NAPT把专用网内不同的源IP地址都转换为同样的全球IP地址。但对源主机所采用的TCP端口号(不管相同或不同),则转换为不同的新的端口号。因此,当NAPT路由器收到从互联网发来的应答时,就可以从IP数据报的数据部分找出运输层的端口号,然后根据不同的目的端口号,从 NAPT 转换表中找到正确的目的主机。

应当指出,从层次的角度看,NAPT的机制有些特殊。普通路由器在转发IP数据报时对于源IP地址或目的IP地址都是不改变的。但NAT路由器在转发IP数据报时,一定要更换其P地址(转换源IP地址或目的IP地址)。其次,普通路由器在转发分组时是工作在网络层的。但NAPT路由器还要查看和转换运输层的端口号,而这本来应当属于运输层的范畴。也正因为这样,NAPT曾遭受了一些人的批评,认为NAPT的操作没有严格按照层次的关系。但不管怎样,NAT(包括NAPT)已成为互联网的一个重要构件。

三、多协议标签交换MPLS

1、介绍

多协议标签交换 MPLS (MultiProtocol Label Switching)。“多协议”表示在 MPLS 的上层可以采用多种协议。IETF还综合了许多公司的类似技术,如思科公司的标签交换(TagSwitching),以及 Ipsilon 公司的IP 交换(IP Switching)等。

MPLS 利用面向连接技术,使每个分组携带一个叫作标签(label)"的小整数(这叫作打上标签)。当分组到达交换机(即标签交换路由器)时,交换机读取分组的标签,并用标签值来检索分组转发表。这样就比查找路由表来转发分组要快得多。

人们经常把 MPLS 与异步传递方式ATM(Asynchronous Transfer Mode)联系起来,这仅仅是因为它们都采用了面向连接的工作方式。以前很多人都曾认为网络的发展方向是以ATM 为核心的宽带综合业务数字B-ISDN。然而价格低廉得多的高速IP路由器仍然占领了市场,最终导致 ATM 技术和B-ISDN未能够成为网络的发展方向。MPLS并没有取代IP,而是作为一种IP增强技术,被广泛地应用在互联网中。

MPLS 具有以下三个方面的特点

  • 支持面向连接的服务质量。
  • 支持流量工程,均衡网络负载。
  • 有效地支持虚拟专用网VPN。

2、MPLS 的工作原理

1)基本工作过程

在传统的卫网络中,分组每到达一个路由器,都必须查找转发表,并按照“最长前缀匹配”的原则找到下一跳的IP地址(请注意,前缀的长度是不确定的)。当网络很大时,查找含有大量项目的转发表要花费很多的时间。在出现突发性的通信量时,往往还会使缓存溢出,这就会引起分组丢失、传输时延增大和服务质量下降。

MPLS的一个重要特点就是在MPLS域的入口处,给每一个IP数据报打上固定长度“标签”,然后对打上标签的 IP 数据报用硬件进行转发,这就使得 IP 数据报转发的过程大大地加快了。采用硬件技术对打上标签的IP 数据报进行转发就称为标签交换。“交换”也表示在转发时不再上升到第三层查找转发表,而是根据标签在第二层(链路层)用硬件进行转发。MPLS 可使用多种链路层协议,如PPP、以太网、ATM以及中继等。下图是MPLS 协议的基本原理的示意图。

MPLS域(MPLSdomain)是指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持 MPLS技术的标签交换路由器LSR(Label Switching Router)。LSR 同时具有标签交换和路由选择这两种功能,标签交换功能是为了快速转发,但在这之前LSR需要使用路由选择功能构造转发表。
在这里插入图片描述
上图中给出了MPLS的基本工作过程,解释如下:

  • MPLS 域中的各 LSR 使用专门的标签分配协议 LDP(Label Distribution Protocol)交换报文,并找出和特定标签相对应的路径,即标签交换路径LSP(LabelSwitched Path)。例如在图中的路径 A→B→C→D。各LSR根据这些路径构造出转发表。这个过程和路由器构造自己的路由表相似[RFC 3031],限于篇幅,这里不讨论转发表构造的详细步骤。但应注意的是,MPLS是面向连接的,因为在标签交换路径LSP上的第一个LSR 就根据IP 数据报的初始标签确定了整个的标签交换路径,就像一条虚连接一样。
  • 当一个 IP 数据报进入到 MPLS 域时,MPLS 入口节点(ingress node)就给它打上标签(后面我们就会知道,这实际上是插入一个MPLS首部),并按照转发表把它转发给下一个LSR。以后的所有LSR都按照标签进行转发。
    给 IP 数据报打标签的过程叫作分类(classifcation)。严格的第三层(网络层)分类只使用了 IP 首部中的字段,如源 IP 地址和目的 I 地址等。大多数运营商实现了第四层(运输层)分类(除了要检査IP 首部外,运输层还要检査 TCP或 UDP 首部中的协议端口号),而有些运营商则实现了第五层(应用层)分类(更进一步地检查数据报的内部并考虑其有效载荷)。
  • 由于在全网内统一分配全局标签数值是非常困难的,因此一个标签仅仅在两个标签交换路由器 LSR 之间才有意义。分组每经过一个 LSR,LSR 就要做两件事:一是转发,是更换新的标签,即把入标签更换成为出标签。这就叫作标签对换(label swapping)。做这两件事所需的数据都已清楚地写在转发表中。例如,上图中的标签交换路由器B从入接口0收到一个入标签为3的IP数据报,查找了如下的转发表
    在这里插入图片描述
    标签交换路由器 B 就知道应当把该IP 数据报从出接口1转发出去,同时把标签对换为 1。当IP 数据报进入下一个 LSR 时,这时的入标签就是刚才得到的出标签。因此,标签交换路由器 C接着在转发该I 数据报时,又把入标签1对换为出标签2。
  • 当IP 数据报离开 MPLS 域时,MPLS 出口节点(egress node)就把 MPLS 的标签去除把IP数据报交付非MPLS的主机或路由器,以后就按照普通的转发方法进行转发。

上述的这种“由入口LSR确定进入MPLS域以后的转发路径”称为显式路由选择(explicit routing),它和互联网中通常使用的“每一个路由器逐跳进行路由选择”有着很大的区别。

下面再讨论 MPLS中的几个重要概念。

2)转发等价类 FEC

MPLS 有个很重要的概念就是转发等价类FEC(Forwarding Equivalence Class)。所谓“转发等价类”就是路由器按照同样方式对待的IP数据报的集合。这里“按照同样方式对待”表示从同样接口转发到同样的下一跳地址,并且具有同样服务类别和同样丢弃优先级等FEC的例子是:

  • 目的IP地址与某一个特定IP地址的前缀匹配的IP 数据报(这就相当于普通的IP路由器):
  • 有源地址与目的地址都相同的IP数据报:
  • 具有某种服务质量需求的IP数据报。

总之,划分FEC的方法不受什么限制,这都由网络管理员来控制,因此非常灵活。入口节点并不是给每一个IP数据报指派一个不同的标签,而是将属于同样FEC的IP数据报都指派同样的标签。FEC和标签是一一对应的关系。

下图给出一个把 FEC 用于负载均衡的例子。图 (a)的主机 H1和 H2分别向 H3和H4发送大量数据。路由器A和C是数据传输必须经过的。但传统的路由选择协议只能选择最短路径A→B→C,这就可能导致这段最短路径过载。
在这里插入图片描述
图 (b)表示在 MPLS 的情况下,入口节点 A可设置两种 FEC:“源地址为 H1,而目的地址为 H3”和“源地址为 H2而目的地址为 H4”,把前一种 FEC 的路径设置为 H1→A→B→C→H3,而后一种的路径设置为H2→A→D→E→C一H4。这样可使网络的负载较为均衡。网络管理员采用自定义的FEC就可以更好地管理网络的资源。这种均衡网络负载的做法也称为流量工程 TE(Traffc Engineering)通信量工程

3、MPLS首部的位置与格式

MPLS 并不要求下层的网络都使用面向连接的技术。因此一对 MPLS 路由器之间的物理连接,既可以由一个专用电路组成,如OC-48线路,也可以使用像以太网这样的网络。但是这些网络并不提供打标签的手段,而IPv4数据报首部也没有多余的位置存放 MPLS 标签这就需要使用一种封装技术:在把IP数据报封装成以太网帧之前,先要插入一个 MPLS首部。从层次的角度看,MPLS首部就处在第二层和第三层之间(如图4-68所示)。在把加上MPLS首部的IP数据报封装成以太网帧时,以太网的类型字段在单播的情况下设置为 884 7 16 8847_{16} 884716(下标 16 表示这是十六进制的数字),而在多播的情况下为 884 8 16 8848_{16} 884816。这样,接收方可以用帧的类型来判决这个帧是携带了MPLS标签还是一个常规的IP数据报。
在这里插入图片描述
下图给出了MPLS首部的格式。可见“给IP数据报打上标签”其实就是在以太网的帧首部和 I P数据报的首部之间插入一个4字节的 MPLS 首部。具体的标签就在“标签值’这个字段中。
在这里插入图片描述
MPLS 首部共包括以下四个字段:

  • 标签值:占20位。由于一个MPLS标签占 20位,因此从理论上讲,在设置MPLS 时可以使用标签的所有20位,因而可以同时容纳高达 2 20 2^{20} 220个流(即1048576个流)。但是,实际上几乎没有哪个MPLS实例会使用很大数目的流,因为通常需要管理员人工管理和设置每条交换路径。
  • 试验:占3位,目前保留用于试验。
  • S:占1位,S(Stack)表示栈,在有“标签栈”时使用。
  • 生存时间TTL:占8位,用来防止 MPLS 分组在 MPLS 域中兜圈子

4、新一代的 MPLS

MPLS 问世后就在互联网中得到了大量的部署。虽然MPLS能够更快地转发分组,但其有关的控制协议(如LDP)却比较复杂,其扩展性差,运行维护也较困难。协议LDP也无法做到基于时延或带宽等要求的流量调度。为了根据需要灵活地选择流量的转发路径,就还需要再使用资源预留协议RSVP(见8.4.3节)。但RSVP的信令非常复杂,每个节点都要维护一个庞大的链路信息数据库。此外,RSVP不支持等价多路径路由选择ECMP(Equa1-CostMultipath Routing),而只会选择一条最优路径进行转发。

为了解决上述问题,一种保留了MPLS的主要特点,但更加简单的新的源路由选择协议出现了。这就是段路由选择协议(Segment Routing),简称为 SR。但不少人都使用“段路由协议”这样更加简单的名称。在SR中,“段(segment)”就是标签,也就是转发指令的一种标识符。SR的工作原理仍然是基于标签交换的,不过现在不需要使用协议LDP,因此简化了设备运行的协议数量。SR由源节点为发送的报文指定路径,并将路径转换成有序的段列表(Segment List),即 MPLS标签栈,它被封装在分组首部。网络中的其他节点就执行首部中的指令(即标签)进行转发。

整个网络设有控制器,也就是SDN控制器(见4.10节)。控制器收集并掌握全网的拓扑信息和链路状态信息,计算出分组应传送的整个路径。控制器负责给分组分配SR标签,这些标签指明了分组从源点到终点的路径。当分组到达某个网络节点时,节点就根据分组带的标签转发到下一个节点。

现在 SR 还向 IPv6 演进,这就是 SRv6。它直接利用IPv6 字段作为标签寻址。而前面介绍的在 MPLS 基础上的SR 则称为 SR-MPLS。

  • 13
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值