本文编译自networkfuntimes,作者Juniper Network网络工程师Chris。
编者按:尽管 MPLS 技术已经相当成熟,有关它的文章数不胜枚举,涵盖了从基本原理到 SR-MPLS 等方方面面。然而,令人意外的是,实际上大多数网络工程师并没有真正理解 MPLS。Juniper Network网络工程师Chris通过他的个人经历对此进行了阐述。
失败的 MPLS 面试
大约13年前,我在一家ISP公司从事二线支持工作。每天,我都在处理被称作“MPLS电路”的客户问题。当时,我并不明白这究竟意味着什么,但我清楚自己每天都在解决这些问题。于是,我决定参加一次与MPLS相关的工作面试。
我至今仍记得我的第一次面试。第一个问题是:“如何使用MPLS构建BGP-free core”。
我一头雾水。
我对面试官的问题毫无头绪,接下来又被问及流量工程和RSVP等问题……整个面试过程让我感到十分困惑。原来我对“MPLS”的理解完全错了。
那次面试让我认识到,当人们谈论“购买MPLS电路”时,实际上是在使用MPLS这个术语来特指MPLS的一个具体用例,而非更广泛的技术概念。
根据我多年来的经验,你现在也很有可能正在犯这个错误。
认知错误
MPLS在实质上是支撑几乎所有互联网服务提供商的技术。它并非一种会很快被取代的技术,事实上,它每年都在不断改进。
然而,每当提到MPLS时,总会有人声称“SD-WAN将取代MPLS”。但事实上,他们所指并非真正的MPLS,而是MPLS VPN,尤其是第三层MPLS VPN。接下来,我们将详细探讨这一误解的含义,以及两者之间的区别。
正是因为这种误解,很多人不再深入学习MPLS。他们听说这是一种即将被“SD-WAN取代”的技术,于是错失了MPLS背后实际、更广泛含义的技术。
那么,MPLS 究竟是什么?
这个问题的答案很长。
MPLS 是一种服务提供商用来管理网络流量的技术。
通常,路由器会根据目标 IP 地址来转发数据包。然而,在大型网络中,特别是互联网服务提供商的网络中,这种简单的方式就不够用了。
首先,这些网络需要处理大量的路由信息,每个路由器都必须知道整个互联网的路由信息,以便能够正确地转发数据包。此外,服务提供商可能希望为不同的流量指定不同的路径,而不是总是选择最短路径。
为了实现这一点,我们可以在网络的两端设置两台路由器,并通过一个隧道来传输数据。这个隧道可以沿着我们指定的路径,或者根据路由器的约束条件计算出的路径传输数据包。
隧道传输数据包的一种方式是在数据包上添加一个标签,该标签告诉下一个路由器该数据包应该如何转发。这种标签的好处是接收路由器不需要查看目标 IP 地址,只需要根据标签来进行转发。
例如,下图中有十个路由器,R1 和 R5 之间有两条隧道。蓝色隧道采用最短路径,可以专用于最重要的流量。红色隧道采用较长的路径,可以用于不妨碍最重要流量的best-effort流量。
MPLS(多协议标签交换)就是通过标签交换来实现这一点的技术。
它允许在数据包上添加标签,并根据这些标签来转发数据包,而不是根据目标 IP 地址。这样一来,我们就可以在大型网络中更有效地管理流量,并为不同的流量分配不同的路径。
看到这里有人想问,为什么需要隧道?
原因有很多,以下是 MPLS 隧道的一些潜在用例:
1. BGP-free core:在核心路由器上运行时,不需要存储完整的互联网路由表,只需根据标签来转发数据包。
2. 优先级隧道:创建采用最佳路径的高优先级隧道,以及采用较长路径到达目的地的低优先级隧道,通过将流量映射到这些隧道,可以将高优先级和低优先级的流量分开。
3. 动态路径调整:可以在检测到网络拥塞问题时动态更改路径。
4. 资源优化:自动将低优先级隧道移动到不同的路径,以确保重要隧道能够访问最佳资源。
5. IPv4 到 IPv6 隧道:在 IPv4 核心上传输 IPv6 流量。
6. 多播隧道:在核心中运行多播隧道,如为客户提供 IPTV。
7. VPN 隧道:通过核心网对客户的三层或二层 VPN 流量进行隧道传输。
8. 连接服务提供商站点:大型服务提供商可以将较小服务提供商的两个站点连接在一起,使两个站点看起来像是合二为一,而较大的服务提供商则充当这些站点之间的隐形隧道。
这些只是 MPLS 在现代服务提供商网络中的一小部分基本用例。
标签交换路径
在前面的讨论中,我们提到了许多关于“隧道”的内容,实际上,“隧道”的另一个名称就是“标签交换路径”,而创建隧道的协议有很多种。
其中之一是LDP标签分发协议(Label Distribution Protocol)。LDP可以创建遵循最佳路径度量的隧道,同时也可以执行IPv6隧道、客户VPN隧道以及无BGP核心等操作。
此外,还有RSVP源预留协议(Resource Reservation Protocol),它以其流量工程功能而闻名。
另一种较新的方法是分段路由(Segment Routing),特别是SR-MPLS,它也提供了上述许多功能。
MPLS允许在数据包上添加标签,然后根据这些标签来转发数据包。MPLS与BGP的结合可以为整个互联网赋能,因此MPLS将在很长一段时间内继续存在。
“网络总是在变化,没有人知道未来会发生什么,但如果一个18岁的年轻人今天开始在服务提供商行业工作,并在退休后仍然使用MPLS,那一点也不令人惊讶。这正显示了MPLS对现代互联网的重要性!”
人们认为 MPLS 意味着什么?
MPLS的一个用例是通过核心网隧道传输客户VPN流量。
想象一下,一个客户在全国各地有数十个站点。每个站点都有至少一个私有IP地址范围的LAN,并且需要连接到其他站点的各个LAN。这种连接可以是全网状的,每个站点都可以访问其他所有站点,也可以只是在几个选定的站点之间,或者只是从总部中心向外扩展。
由于运行 MPLS 的服务提供商只查看数据包上的标签,而不是 IP 本身,这使得服务提供商能够使用 MPLS 为此类客户提供 VPN 服务。客户流量可以使用唯一的 MPLS VPN 标签进行标记,然后通过标签交换路径进行隧道传输。隧道另一端的接收服务提供商路由器将该 VPN 标签映射到特定客户,从而使该客户的流量在逻辑上与任何其他客户(甚至是使用完全相同的私有 IP 的客户)分开。
一般来说,MPLS VPN 有两种“类型”。
一种是“三层VPN”(有时称为L3VPN、IPVPN或VPNv4),服务提供商了解每个站点的LAN范围,并在自己的网络中发布它们,将它们标记为属于特定客户VPN。不论是用BGP、OSPF,或者可能只用静态路由,服务提供商的边缘路由器都有一个用于该客户VPN的三层路由表。
另一种是“二层VPN”,服务提供商不学习第三层IP范围,而是执行以下两项操作之一:
1)可以充当将两个站点连接在一起的虚拟线路,以便从一端进入的帧通过隧道传输到另一端。服务提供商不需要在这里学习MAC地址,因为从一端进入的所有流量都会在另一端发出。
2)充当虚拟交换机,服务提供商实际上可以在其中学习MAC地址。对于托管WAN电路的现场客户设备而言,它可以直接获知其他站点设备的MAC地址。但实际上,就像物理交换机一样,服务提供商正在无形地检查流量,了解所有MAC地址的位置,并相应地转发和洪泛流量。VPLS(虚拟专用LAN服务)和EVPN(以太网VPN)是实现这一目的的两种不同方式。
“MPLS 电路”
不知道从什么时候开始,MPLS电路(MPLS circuits)这个词被用来代指MPLS VPN。
有趣的是,通过这些所谓的MPLS电路传输的数据包实际上并不携带任何MPLS标签!标签只出现在网络的服务提供商部分。客户现场路由器根本不支持MPLS。相反,WAN电路的服务提供商端的接口将从公共互联网中取出,并放置到客户的私有路由实例中。然后,服务提供商使用MPLS在其网络中传输VPN流量。
因此,严格来说,MPLS电路并不涉及任何MPLS技术。
这种误用的结果是,许多网络工程师错误地认为“MPLS”这个术语只有MPLS VPN 和 L3VPN一个含义。他们也不了解标签、标签交换路径、LDP 或 RSVP等相关概念。
“SD-WAN 是 MPLS 杀手?”
自2010年代以来,关于“SD-WAN是MPLS的杀手”的言论层出不穷。
很多人只熟悉MPLS L3VPN,就宣称MPLS即将退出历史舞台,因为他们没有意识到MPLS一词还有另一个更广泛的含义。
我已经记不清我写过多少篇关于MPLS流量工程或BGP-free core的文章,但还是有很多人评论“我不认为MPLS有未来”或“我认为SD-WAN将取代MPLS”。
然而,MPLS不会很快消失。
就其价值而言,我不认为SD-WAN会“杀死”MPLS VPN。SD-WAN和MPLS VPN都有各自的用例,各有优缺点。只能说随着时间的推移,一种解决方案可能会比另一种更受欢迎。
审核编辑 :黄飞
评论
查看更多