通常,网络工程师专注在技术方面检查问题,而不是问题的需求。良好的网络设计原则通常是先提出一些基本问题,然后仔细思考真正需要的东西。
例如在一个网络图中,需要将服务从主机1移动到主机2,每个主机都连接到不同的数据中心结构。这两个结构通过服务提供商提供的链路连接在连接到结构边缘的两个路由器之间。
人们要问的问题是:真的需要以太网或延伸的Layer 2吗?
数据中心互联(DCI)的大部分复杂性是试图使扩展的物理环境看起来像一个以太网域的结果。但以太网并非设计用于跨越长地理区域并互连数千台主机。
虽然有些技术允许这些类型的互联,但重要的是要考虑这些工具应该如何实现以及在哪里实现,而不是简单地将复杂性推到网络中。
在这个数据中心互联图中,真的需要以太网扩展吗?
保留IP地址
Layer 2移动性的最常见原因是保留服务或应用程序的IP地址,同时将其从一个数据中心结构移动到另一个数据中心结构。但是,服务移动性有三个组成部分:
- 首先是客户如何找到服务。是通过名称还是IP地址本身?如果通过其名称发现服务,则可以使用某些命名规范(例如动态域名系统)来允许服务移动而不要求IP地址保持不变。
- 采用域名系统(DNS)通常被认为是非常慢的措施。但在公司或数据中心内,没有理由不采用DNS。用户可以调整DNS计时器,并且可以设计负载平衡和其他功能,以允许在具有两个不同IP地址的两个服务副本之间快速进行故障转移。
- 第二个组件是将IP地址本身从网络中的一个位置移动到另一个位置。最简单的方法是将新旧物理设备连接到同一物理段。虽然需要重新学习低层到IP层的映射,但其他一切都保持不变。
采用延伸Layer 2的风险
在过去,应用程序的设计假设应用程序的不同部分通过以太网段直接连接。应用程序不应再以这种方式编写,尽管它们通常仍然存在。为了解决这个问题,很容易让网络更加复杂,但这忽略了真正的权衡。
添加延伸的Layer 2会使网络更加复杂,从而导致网络变得脆弱。延伸的Layer 2可能会触发更高的网络故障率,最终导致企业损失可用性,而不是考虑如何使应用程序更好地工作。
另一个考虑因素是Layer 3。应用程序无法在Layer 3工作会如何影响其在整个网络中的性能?如果应用程序的开发人员将其设计为仅在短期本地链接上工作,则可能会对计时器、流量控制和其他因素进行假设。
因此,应用程序可能在地理上延伸的段中工作得更好,但也可能是应用程序运行接近某个性能指标的边缘,最终会导致失败。没有真正的方法来了解这种差异。
服务移动性的第三个组件是发现。服务的不同实例如何相互查找?即使指示了某种形式的Layer 2移动性,也可能将单个逻辑Layer 2段分解为多个广播域。这不仅简化了网络的设计,而且还减小了各种故障域的大小,增加了平均故障间隔时间。
同样,应用程序不应再使用此类型的Layer 2发现机制;如果这样做,则需要非常小心地设计应用程序。
安全和遥测问题
除了这些组件之外,还有其他数据中心互连挑战,特别是在安全和遥测方面。
例如有一个常见的假设,即如果通过供应商提供的虚拟电路传输流量,则它是安全的。这是一个糟糕的假设。隧道增加了一个新的标题,可以防止黑客拦截或检查流量。必须明确处理安全性,特别是在处理最初设计为在单个物理设施中包含的单个短段传输流的时候。
同时,遥测是必不可少的。用户如何知道在延伸链接中可能遇到的延迟和抖动?怎么知道丢包的时间、地点和数量?如何确定数据包是否无序传送?遥测和管理是数据中心之间连接的关键组成部分,在出现问题之前需要加以解决。
数据中心互连通常被认为是一个已解决的问题。然而,重新审视数据中心互连技术可能面临的问题,以仔细地确定增加复杂性是否是很好的方法,这是很有价值的。