本文编译自ipspace的博客.
如果仅需实现第3层功能,我很好奇EVPN究竟能提供什么。例如,如果你不需要VRF,或者仅需少量VRF,那么可以直接运行纯L3 BGP架构。但如果需要大量VRF,那么可以选择MPLS/VPN、SR-MPLS或SRv6。
在之前的咨询工作中,我也多次遇到类似的问题。这通常是由于厂家在PPT中堆砌大量缩写词,却没有解释基本原理。
下面让我们来解决这个问题。
IP 网络采用逐跳目标转发,仅使用单个转发表。如果这就是你的需求,那么请远离那些缩写词;你只需要决定使用哪种路由协议即可。我们过去已经无数次讨论过这个问题,唯一的合理建议是:“这通常并不重要;用你熟悉的东西就好。”
接下来,你可能希望将某些流量(仍处于单个路由域内)转移到可能被视为次优的路径上。你可能希望在所有相关人员意识到网络拓扑发生变化之前,进行一些流量工程操作,或者将流量绕过故障点(更多细节稍后介绍)。
在这种情况下,你需要将流量隐藏在中间节点的隧道或虚拟电路中——你需要一种数据平面数据包隐藏技术。MPLS(数据平面封装)是最常用的一种;试图推销新 ASIC 的供应商正在大力宣传 SRv6 的优势,但我还没见过 VXLAN 被用于这种场景(主要是因为它不允许进行松散源路由)。
显然,你还需要一个控制平面来支持这种流量隐藏操作。十年前,我们用 RSVP 构建 MPLS-TE 隧道。如今,我建议使用支持 SR 的 IGP,我相信有人可以让它与 BGP-LU 配合使用。
现在是有趣的部分:你希望在共享基础设施上运行多个独立的转发域。营销术语称之为虚拟专用网络(VPN),它们可以根据 MAC 地址(L2VPN)或 IP 地址(L3VPN)进行转发决策。
你可以让所有网络设备参与这些转发决策:
你是否注意到,这其实就是 VLAN 和基于 VLAN 的 VRF-lite?很多时候,它们就是你完成工作的全部所需。
好的,现在假设你已经经历过和我一样多的基于 VLAN 的架构崩溃,并且希望有更好的解决方案。同样,我们需要两个组件:
你不能随意将数据平面封装与控制平面协议组合在一起:
我相信还有其他 RFC 描述了其他组合。请在评论中留下指针。
经过长时间的讨论,我们终于回到了最初的问题:如果只需要 L3 VPN,你可以用什么?
L3VPN(RFC 4364)是显而易见的答案,但通常需要 MPLS 封装(除非你的供应商使用 SRv6 实现了第 3 层 VPN,并采用 RFC 4364 控制平面)。这并不是什么大问题;大多数现代 ASIC 都支持 MPLS,而 SR-MPLS 让 MPLS 交换矩阵尽可能简单。
基于 SRv6 的 L3VPN
真正的问题是,L3VPN 对供应商营销部门来说还不够“酷”(毕竟,每个人已经做了 25 年了)。他们可能会用它来支持他们的 SRv6 实现,但随后可能会保持沉默,假装 SRv6 的“魔法”可以完成一切。
EVPN 是另一个(更流行)的答案,但有一个小问题:它被设计为第 2 层 VPN 解决方案。将其变成第 3 层 VPN 是可能的,但需要大幅偏离供应商的默认设置(调整技术参数)。
EVPN 的美妙之处在于,你可以将其与供应商推动的任何东西一起使用:它既能与 MPLS 配合,也能与 VXLAN 完美契合,而且大多数宣扬 SRv6 优势的供应商都可以将其用作控制平面。
注释: