本文主要介绍了DNS重定向,健康路由注入和LISP技术,文章参考参见《腾云》。
DNS重定向和健康路由注入都是应对用户访问,根据其位置将流量送到最适合的数据中心,并且在数据中心发生故障时,尽可能快地利用备份中心来吸收请求流量的技术。
1. DNS重定向
DNS重定向的思路是子DNS服务器中动态地维持几个后台数据中心的出口IP地址,针对一般的用户请求返回优先级最高的出口IP。如果其中一个数据中心出现问题,DNS服务器便将其对应的IP地址暂停使用,当收到后续的DNS请求时,便将流量导向仍在正常工作的数据中心,从而在广域网上实现后台资源的负载均衡。
但,DNS重定向远不是一个完美的解决方案,原因如下。
- DNS重定向局限于基于域名解析的WEB服务。对于互联网上那些非WEB业务,该方案显得不那么方便。
- DNS的大部分流程都在应用层执行(即在电脑的OS和DNS服务器之间进行),与路由层面没有交互,网络设备只能被动地接受被改变的网络流量,无法主动参与到这个过程中进行优化。
2. 健康路由注入
网络设备本身没有感知上层业务的能力,因此传统的网络机制同业务层面是割裂的,这也导致了如果链路出现变化,动态路由协议可以探测到并进行流量切换;但,如果数据中心正常,内部服务器出现问题,客户端的请求仍然会不断发送到发生问题的服务器上来,这显然不合理。
现代网络设计的一个重点就是『对上层业务的感知能力』,数据转发的依据除了路由协议计算的结果,还开始考虑上层业务运行的状态。这种技术的典型代表就是RHI(Route Health Injection--健康路由注入)。
健康路由注入是网络设备厂家提出的一种调度机制,一般在链路负载均衡设备或者出口路由设备上实现。具备相应功能的网络设备会周期性地检测数据中心内部的业务地址,检测的方法通常是发送定时查询,倘若业务故障则进行流量切换。
3. LISP
以上两个方案的弊端是它们只是单个产品级别的解决方案,无法再全网范围内构件一个灵活的架构,更重要的是,它们更多地是被动应对网络环境的限制,当数据中心内部的资源主动发生漂移时就很难应对了。LISP(Locator/Identifier Separation Protocol--位置/身份分离协议)就是为了应对这种状况而诞生的。
当一台虚机发生漂移时,其身份在移动前后保持一致,而寄存的服务器位置发生了变化,然而由于IP地址的天然属性,既代表了设备的身份,又表明了其在网络中的位置,如果在漂移后改变IP地址,必然导致上层业务对虚机的身份重新识别;如果不改变IP,则虚机在新的地址空间可能无法通信。传统IP地址规则身份与位置的统一,使其在云计算环境中显得格格不入。
3.1 LISP的核心思想--Map-and-Encap
LISP由IAB's委员会提出,将传统IP地址分拆为表明位置的RLOCs(Routing Locators--路由标识符)和表明身份的EIDs(Endpoint Identifiers--节点标识符),也就是Loc/ID split机制。
RLOCs定义了设备如何接入网络,如何被找到;EIDs定义了设备是谁,属于什么组织。这两个地址并存在一个地址内,但互相之间保持独立,打破了原有的位置与身份之间的纽带。在这种地址空间中,站点发出的包被打上两层包头,内部包头为EIDs,外层为RLOCs,网络设备依靠RLOCs将数据包送往目的地址,再除去外部包头,将原始数据包送到目的地,这种模式称为Map-and-Encap(映射与封装)机制。由于两层封装,大部分网络设备无需做很大改动,只需升级网络边缘的路由器使其支持数据包的封装与解封装即可。
Map-and-Encap模型不断发展的结构就是LISP。
3.2 LISP的基本架构
LISP是由IETF主导的新一代IP地址空间架构。在LISP网络中每个站点都有独立的EID,这些站点将数据包发送到离它最近的LISP边缘路由器上完成通信。为了完成这个工作,LISP在传统的IP网络中添加了两个重要的新网元:
- ITR:Ingress Tunnel Router--入向隧道路由器。
- ETR:Engress Tunnel Router--出向隧道路由器。
ITR部署在LISP网络的边界,接受非LISP站点发来的数据包,并添加上RLOCs,然后依据RLOCs做出转发决定;ETR的工作恰恰相反,它坐落于LISP数据路径的最后一站,ETR将接收到的数据包去掉RLOCs信息,还原成普通IP包,并转发给非LISP站点。在很多网络设计中,间距以上功能的路由器也称为XTR。
XTR的一个重要工作就是维护EID和RLOCs之间的对应关系。每个XTR都会保存一张EID-RLOCs表格。XTR收发数据包的唯一依据也就是EID-RLOCs,EID表示最终目的地,RLOCs则类似于MPLS中出方向的LER地址。
同常规路由表中等级路由概念一样,一个EID可能对应多个RLOCs。每一条EID与不同RLOCs的对应关系都带有优先级(P)和权重(W)两个属性。P告诉ITR应该优先使用哪个RLOCs,W说明了怎样在多个目的EID相同的RLOCs之间分配流量。
LISP外层包头即RLOCs,表征离目的地最近的LISP站点,通常是一个ETR;内层携带EID,是一个非LISP得常规站点。LISP原生支持IPv4和IPV6。
3.3 通过LISP-ALT实现可扩展网络
LISP在计算数据包的目的路由时需要找到EID与RLOCs的对应关系。传统的动态路由协议如OSPF,IS-IS等利用了IP地址空间的层级关系,将一个网段的地址合并为一条路由,配合链路状态值,大大缩减了路由器需要了解的路由表长度。但在LISP中,EID和RLOCs之间没有层级关系,传统方法不再适用。
LISP给出的答案是LISP-ALT(LISP-Alternative-Topology LIST替代拓扑),它是一个架构在基础网络上的虚拟拓扑,专门用来找出EID与RLOCs的对应关系。凡是LISP的ITR,ETR和XTR都加入到LISP-ALT中,它们之间形成EBGP邻居关系,所有BGP信令都通过GRE协议封装,这些ITR和ETR就利用BGP交换EID的可达信息。换句话说,LISP节点之间运行封装的BGP协议,在现有网络上形成了一个叠加的网络,ITR和ETR通过这个叠加的网络学习EID和RLOCs的对应关系。有了LISP-ALT后,LISP的节点就有了一个专用渠道交换EID的可达信息。
在LISP网络内可以配置一组专门用于路由查询的路由器。当一个ITR收到一个数据包,首先查询EID-RLOCs对应关系,如果查询到则加上外层包头并发送;倘若本地没有该缓存,则查询指定的路由器,查询方式是在外层包头里写入目的站点的EID,然后通过LISP-ALT发送。这个指定路由器被授权完成EID-RLOCs的对应工作,保存有比较完整的EID-RLOCs信息。该路由收到消息,通过发行外层包头和内层包头一样的EID得出是查询报文,于是,它首先去除外层包头并送往目的地,然后向ITR发回应答,ITR进行EID-RLOCs对应缓存更新。
通过这样一个过程,在LISP网络中只需要设置几个查询路由器保存比较完整的EID-RLOCs关系,其他ITR和ETR只需要保存常用的对应关系即可。
3.4 LISP的优点
上层应用看到的IP地址是内层包头的EID,真正决定IP包路由去向的是外层包头里的RLOCs。只要有了LISP,虚机就可以带着初始IP在不同的网段和物理地点之间移动,无需任何辅助性的路由策略来帮助优化移动前后的转发路径。
- 灾备数据中心的快速启用。当生产数据中心发生问题,可以通过LISP迅速切换备份中心,无需IP地址改动。
- 突发的云计算时间。突发大流量业务请求,LISP可以实现业务快速响应和动态增长。
- 多地数据中心。不同地点数据中心可以负载均衡。
- 支持IPv4和IPv6混合部署。
3.5 LISP与VPN区别
Map-and-Encap的本质是掩盖原始地址(内层包头地址),用外层地址进行路由,这与VPN非常相似。因此,LISP完全可以被用作一种多租户的VPN方案。
VPN是一个点对点的协议,其存在意义是解决两点之间的互联需求,尽管之后被某些厂家扩展到多点,但扩展性不强。
网络平面分为控制平面和转发平面,控制平面是做出转发决定的元素,转发平面是执行控制平面的转发决定。
LISP较IPsec先进的地方就在于其具备强大的控制平面,每个ITR和ETR都会维护EID-RLOCs关系表,并且LISP还定义了LISP-ALT这样的机构专门用于控制屏幕的通信。可以说,LISP就是一个添加了控制平面的IPsec VPN,正是由于有了完整的控制平面机制,LISP才能够从容应对网络数倍规模的扩张。
参考
《腾云》
说明
转发请注明出处:http://vinllen.com/yun-ji-suan-zhong-de-wang-luo-tong-dao/