位置标识/身份标识分离协议(Locator/ID Separation Protocol)提供了一种数据包路由方法,它可以在不改变终端软件的前提下实现虚拟机(VM)在服务器之间的无缝迁移,让移动设备在Wi-Fi和无线网络之间的无缝迁移。LISP IETF RFC草案计划将在今年秋季发布。在此之前发布的协议还有2012年初的RFC草案,以及2010年建立的几个公共域LISP实现和一个Beta网络。
为什么需要位置标识/身份标识分离协议?
传统IP转发机制不适用于在网络之间迁移的节点。因为IP地址(IPv4和IPv6)包含一个网络号和一个网卡地址,所以转发难度加大。网络号可用于将数据包转发到相应的网络;网卡地址则可用于选择网络节点。一旦节点移动到另一个网络,地址上的网络段就会失效。如果要在节点移动时更新终端IP地址,则需要修改节点软件,但是这种方法不适用于VM或移动设备。
位置标识/身份标识分离协议如何工作?
在传统网络中,终端节点不会移动,需要发送数据包的节点会通过DNS查找或检查之前从该目标接收到的数据包,查找目标节点的终端标识符(End Point Identifier, EID)。EID就是目标节点的IP地址,而路由位置标识(Routing Locator, RLOC)部分则可以精确确定本地网络的目标地址。数据包将从本地网络发送到提供互联网通路的路由器。这台路由器负责使用标准路由协议确定如何到达目标网络。
位置标识/身份标识分离协议的定义
LISP标准包含以下几个定义:
EID——终端标识符是终端初始化时分配到的IP地址,它通常由动态主机配置协议(Dynamic Host Configuration Protocol)确定。在网络迁移过程中,设备或虚拟机的EID不会发生变化。
ETR——出口通道路由器(Egress Tunnel Router)是负责将数据包从互联网传输到本地网络的路由器,而目标终端节点就位于本地网络中。
ITR——入口通道路由器是负责将数据包从本地网络传输到互联网的路由器,而源节点就位于本地网络中。由于数据包在两个方向移动,所以路由器将作为离开网络的数据包的ITR,和来自互联网,去往网络节点的数据包的ETR。
RLOC——路由位置标识是指IP地址的网络标识符部分。它可用于将数据包从ITR传输到ETR。
当节点移动时,传统的数据包转发方法就会失效。发送数据包的节点会通过DNS或之前通过传统方式接收到的数据包,学习目标的EID。然而,在移动网络中,EID所包含的RLOC是无效的。移动节点的EID是在节点初始化时分配的。当节点移动时,RLOC部分就不能再用于将数据包转发到移动目标。
LISP会在通向移动节点的数据包上添加一个额外IP头,从而解决这个问题。入口通道路由器(ITR)会通过位置标识/身份标识分离协议(LISP)定义的映射功能学习到移动节点的当前位置。当ITR接收到来自本地网络节点的数据包时,它就会查询LISP映射功能。映射功能会返回(响应)RLOC,用于确定当前位置到目标节点的路径。
然后,ITR会在离开的数据包前面添加一个传统包头,然后在其中添加从映射服务中学习到的RLOC。接着,数据包会通过标准路由协议转发到互联网。LISP不需要对任何路由协议或互联网核心路由器进行修改。
在到达目标网络时,接收端出口通道路由器(ETR)会删掉所添加的包头。然后,它会将数据包从它的本地网络转发到目标节点。对于目标节点而言,接收的数据包就好像从未发生移动一样。所以LISP不要求对节点软件进行任何修改。
ITR会缓存映射服务查询结果,所以不需要查询每一个后续数据包。如果在保持连接时目标节点发生移动,那么映射服务将会提供一个更新的RLOC。
位置标识/身份标识分离协议在移动性方面的好处
协议:
允许站点不对终端节点重新编号就可以切换互联网服务提供商
启用多宿主节点将负载分散到多个链路中
同时支持IPv4和IPv6,简化IPv4到IPv6的过渡
位置标识/身份标识分离协议的映射功能
接收到ITR请求之后,LISP映射功能会响应通向远程节点所需要的RLOC。提议的设计已经有好几个,但是当前的工作包括一些作为“映射服务器”和“映射解析器”的网络组件。ETR会定期向映射服务器发送“映射注册”消息。映射注册消息会列举目前可以通过该ETR访问的EID。
映射服务器通过通用路由封装(Generic Router Encapsulation, GRE)通道连接。每一个映射服务器都使用边缘网关巡视 (Border Gateway Patrol, BGP)将来自所连ETR的EID信息分发到其他映射服务器。真正的EID到RLOC信息则存储在ETR上。但是没有一个集中存储EID到RLOC映射的数据库。
当一个ETR需要转发数据包但又不知道该使用哪一个RLOC时,它会发送一个“映射请求”到“映射解析器”。映射解析器会使用通过BPG学习到的信息确定相应的ETR。然后,映射解析器会将映射请求转发给ETR,ETR则会通过发送映射响应原始的ITR。ITR会在数据包上附加额外的包头信息,并且将接收到的RLOC添加在目标地址域中。