• 文章搜索:
  • IP技术专栏

        • 分享到...

        • 新浪微博
        • 腾讯微博
        • 推荐到豆瓣 豆瓣空间
        • 分享到搜狐微博 搜狐微博
        • 分享到QQ空间 QQ空间
        • 分享到腾讯朋友 腾讯朋友
        • 网易微博分享 网易微博
        • 添加到百度搜藏 百度搜藏
        • 转贴到开心网 开心网
        • 转发好友 告诉聊友
    • 推荐
    • 打印
    • 收藏

    EVI技术基本原理(二)

    一、 EVI的控制层面

    EVI的控制层面主要包括两个阶段:第一阶段是EVI邻居关系和EVI Link的建立,第二阶段是EVI邻居之间(EVI Link的两个端点之间)相互建立EVI IS-IS的邻居关系,并通过EVI IS-IS互相学习对方站点内的MAC地址,维护MAC地址表的同步。

    1. 建立EVI邻居关系

    EVI使用ENDP(EVI Neighbor Discovery Protocol,EVI邻居发现协议)自动发现EVI邻居,以及建立和维护邻居之间的EVI Link。ENDP定义了两个角色:ENDS(EVI邻居发现服务器)和ENDC(EVI邻居发现客户端)。ENDS用于维护同一个EVI网络实例中所有的邻居信息,ENDS自身同时也是ENDC;ENDC与ENDS交互,协助其完成邻居信息收集,最终与所有邻居建立EVI Link。

    作为ENDC的ED设备,需要通过配置指定ENDS的地址,而ENDS只需通过配置使能自身为ENDS,无需配置ENDC的信息。当新增一个站点的ED设备时,仅需将其作为ENDC,指定网络中现有ENDS的地址。网络中其他原有设备无需改动配置就能发现这台新增的ED设备,即所谓邻居自动发现。

    ENDP使用UDP以及固定的源/目的端口,ENDS监听端口53333,ENDC监听端口53334。ENDP的工作流程如图1所示。

    (1)首先,所有ENDC都向ENDS发起注册请求,消息中携带自身的IP地址等信息。这样,ENDS便能获取到所有ENDC的信息。

    (2)ENDS向每个ENDC回应注册应答消息,消息中携带所有ENDC的信息。

    (3)ENDC收到应答后,与其他ED设备之间建立EVI Link。此后,ED设备互相发送Keepalive消息,保持EVI Link接口状态为UP。

    图1:ENDP工作示意图

    为了防止ENDS单点故障,可以为每个ENDC指定两个ENDS,这两个ENDS同时有效。出于安全考虑,还可以配置ENDP认证功能来防止恶意的节点注册。同一个EVI实例中,ENDS与ENDC必须同时使能认证并配置相同的认证密码。

    2. EVI IS-IS

    EVI使用独立的控制层面协议EVI IS-IS来完成站点间MAC地址的相互学习和同步。EVI IS-IS和IS-IS(未注明EVI IS-IS时均指普通IS-IS协议)一样,直接封装在数据链路层之上。其PDU也是由报文头和变长字段两部分组成。其中报文头又分为通用报文头和专用报文头。可变长字段包含多个CLV结构,每个CLV携带不同类型的信息。EVI IS-IS的许多基本功能实现正是依赖于相关的扩展CLV,这也是EVI IS-IS与普通IS-IS协议最大的区别之处。

    图2:EVI IS-IS PDU

    EVI IS-IS也包含四类协议报文,它们使用相同的通用报文头。由于没有了Level的概念,EVI IS-IS的通用报头中的PDU类型字段只有四个取值,每种协议报文类型对应一种PDU类型。四类协议报文的作用如下:

    (1)IIH(IS-to-IS Hello PDUs,或称为Hello):用于边缘设备之间建立和维护邻居关系,对应PDU类型为L1 LAN IIH。

    (2)LSP(Link State PDUs,链路状态PDUs):使用MAC可达CLV携带本地站点内的MAC地址,点对点地将MAC地址信息发送给对端邻居,对应PDU类型为L1 LSP。

    (3)CSNP(Complete Sequence Number PDUs,全序列号报文):记录所有LSP的摘要,接收方通过对比本地的链路状态数据库以达到MAC地址的同步,对应PDU类型为L1 CSNP。

    (4)PSNP(Partial Sequence Number PDUs,部分序列号报文):包含部分LSP的摘要,用于请求本地缺失的LSP,对应PDU类型为L1 PSNP。

    EVI IS-IS在IP核心网传播时采用GRE封装,如图3所示。其中GRE头扩展为两个部分,第一部分的结构与标准GRE头一致,协议类型字段填充为0x6557,标识这是一个EVI IS-IS协议报文;第二部分是EVI头,包含本端ED设备上的EVI协议相关信息。EVI头中的Network-ID字段填充为EVI实例的编号,只有配置相同实例编号的ED设备之间才能够成功建立EVI IS-IS邻居关系,继而互相学习对方站点内的MAC地址。外层以太头中封装的源/目的MAC地址为EVL Link两端ED设备的三层接口MAC地址;承载EVI IS-IS的内层以太头中封装的源MAC地址为设备的桥MAC地址,目的MAC地址为协议专用的私有MAC地址。

    图3:EVI IS-IS协议报文在IP核心网的封装

    3. 建立EVI IS-IS邻居关系和DED选举

    EVI邻居建立之后,ED将EVI邻居的IP地址作为GRE隧道的目的地址,使用GRE封装EVI IS-IS协议报文发往对端ED。ED设备之间通过交互IIH报文建立和维持邻居关系。邻居建立过程如图4所示,包括三次握手:

    (1)当ED设备配置了EVI隧道接口之后,EVI IS-IS自动使能。在EVI Link建立后,通过隧道封装发送EVI IS-IS协议报文。ED1首先发送IIH报文,报文的“EVI ISIS Neighbor”CLV中不携带任何邻居信息。ED2收到IIH后,创建邻居ED1,状态为Init。

    (2)ED2向ED1回应IIH报文,其中携带ED1的MAC地址。ED1收到后,创建邻居ED2。由于在报文中看到了自己的MAC地址,表明ED2已收到自己发出的IIH报文,于是双向关系确认,并将邻居状态置为UP。

    (3)ED1向ED2回应IIH报文,其中携带ED2的MAC地址。ED2收到后双向关系确认,并将邻居状态置为UP。此后,双方周期性互相发送IIH,维持EVI IS-IS邻居关系。

    图4:EVI IS-IS邻居建立过程

    在广播网络中,IS-IS需要在所有IS设备中选举一个作为DIS(Designated IS,指定中间系统)。在拓扑收敛的情况下,其他非DIS设备仅跟DIS进行路由信息的交换,由DIS将所有LSP的摘要周期性泛洪给广播网络中的其他设备,其他设备则对比本地的LSDB,根据对比结果请求缺失的链路状态,与DIS之间保持LSDB同步。DIS同时负责创建一个伪节点(Pseudo Nodes),并为其生成伪节点专用的LSP,用于描述该网络上存在的路由器。伪节点是一个虚拟节点,对于该广播网之外的IS设备来说,伪节点能够代表这个广播网中所有的IS设备。外部设备计算到达该广播网络的拓扑时,只需要计算到达伪节点(即DIS)的路径,从而达到简化拓扑,优化SPF资源消耗的目的。

    IS-IS在点到点网络中并不选举DIS,继而也不产生伪节点。EVI Link虽然是点对点的连接,但EVI IS-IS出于对支持站点内ED双归属接入IP核心网的考虑,仍然保留了IS-IS在广播网络中的处理机制。当双归属组网时,需要在站点内选举DED(Designated ED,相当于IS-IS中的DIS)。由DED充当调度者的角色,使得不同的ED负责不同的扩展VLAN通信,在提供冗余的同时实现负载分担。除此之外,每一条EVI Link的两个端点ED之间,也均会两两选举出站点间DED并产生伪节点,按照IS-IS的工作机制,由DED将所有LSP的摘要周期性泛洪给对端站点的ED。站点间DED的职能与IS-IS的DIS的职能基本一致。

    DED的选举原则如下:

    (1)ED之间建立双向邻居关系之后,便开始选举DED。使用IIH报文作为选票,比较专用报文头中的优先级字段,优先级大的当选。优先级为0的ED也可以参加选举。

    (2)如果优先级相同,则MAC地址大的当选。

    (3)DED支持抢占,当网络中接入了更高优先级的ED时,它将成为新的DED。

    (4)ED之间持续交互IIH报文,用于维持邻居状态。DED发送IIH报文的时间间隔是普通ED发送间隔的三分之一,使得其他ED能够快速检测到DED失效,并选举新的DED。

    4. MAC地址学习和保持同步

    EVI IS-IS邻居建立之后,ED设备之间便开始LSDB的同步。同步LSDB的过程即是ED设备互相学习对端站点内的MAC地址并保持同步的过程,和IS-IS的LSDB同步过程基本一致,如图5所示。

    图5:EVI IS-IS LSDB同步

    (1)EVI IS-IS邻居建立之初,按照在广播网络中的工作机制,为了加快LSDB的同步,邻居双方互相发送LSP报文。一个LSP报文使用MAC可达CLV携带了本地站点内的所有MAC地址信息,当LSP报文大小超过MTU时,ED将对报文分片。LSP报文专用报头中的LSP ID字段唯一地标识了一个LSP。LSP ID由System ID(由ED的桥MAC转换而成)、伪节点ID(用于标识该LSP是否由伪节点产生)和分片号三部分组成。

    (2)在LSDB同步状态下,由DED周期性发送CSNP报文,其中包含所有LSP的LSP ID和序列号等摘要信息。

    (3)ED收到CSNP报文后将对比本地的LSDB,如果发现自身的LSDB中缺少LSP,则向DED发送PSNP报文请求缺失的LSP,然后由DED回应LSP报文并携带相应的LSP。假如发现CSNP报文中携带的LSP缺失(DED可能因为某种原因没有正确接收到所有的LSP),则立即向DED发送LSP报文并携带相应的缺失的LSP,直至收到的CSNP报文中携带的LSP与本地LSDB达到同步。

    (4)如果站点本地的MAC地址表发生变化(新增或删除),将立即发送LSP报文通知对端ED更新LSDB。

    5. MAC地址迁移和删除

    当服务器发生跨站点迁移时,例如虚拟机的VMotion操作,需要ED设备能够快速感知变化,及时更新自己的MAC地址表。

    图6:服务器迁移

    以图6所示的服务器迁移场景为例,MAC地址表的更新过程如下:

    (1)站点A内有一台虚拟机服务器的MAC地址为A,执行VMotion操作后从站点A迁移到了站点B。

    (2)VMotion结束后,站点B的ED将在本地学习到MAC地址A,而此前MAC地址A的出接口指示为EVI-Link 0,说明服务器发生了迁移。

    (3)ED B更新自己的MAC地址表,同时向EVI IS-IS邻居ED A和ED C发送LSP报文,其中MAC可达CLV中特定标志位置0,标识该MAC发生了迁移。

    (4)ED A和ED C收到LSP报文后分别更新本地的LSDB,同时刷新MAC地址表。

    ED在本地站点内的MAC地址删除分为立即删除和老化删除两种。立即删除包括命令行删除、运行生成树协议时收到拓扑变化消息、接口状态Down等情况;老化删除的原因可能是服务器被移除(非迁移)或长时间没有通信等。当ED删除站点内MAC地址的同时,会立即向对端邻居发送LSP报文通知其删除该MAC地址表项。ED除了收到LSP报文,指示其删除MAC地址之外,当发生EVI邻居超时(即ENDP Keepalive超时)、EVI-Link对应的物理接口Down、EVI IS-IS邻居超时(即IIH报文超时)、LSP生存时间超期等情况,也会删除与对端邻居相关的MAC地址表项。

    二、 EVI的数据层面

    数据报文在IP核心网传播时采用GRE封装,如图7所示。其中GRE头的协议类型字段填充为0x6558,标识这是一个数据报文。经过封装,原始数据在核心网传播时最多会增加42字节。EVI不提供路径MTU发现功能,且禁止数据报文分片,部署前需提前确保核心网的MTU大于封装后的最大报文长度。

    图7:数据报文在IP核心网的封装

    2. 单播流量转发

    以图8为例,假定控制层面的工作已全部完成,单播流量转发流程如下:

    (1)ED A从站点1内部接收到单播数据后,在MAC地址表中查询报文的目的MAC B,得到出接口为EVI Link 0。

    (2)ED A执行EVI封装,外层IP头的源/目的IP为EVI Link的两个端点(即ED设备)的IP地址,然后从EVI Link对应的物理接口将报文发送至IP核心网。

    (3)IP核心网中的设备按照外层IP头中指示的目的IP,将报文一路转发至站点2的ED B。

    (4)ED B解封装后在MAC地址表中查询报文的目的MAC B,根据查询结果从GE1/0/1接口将报文发送给站点内部的目的主机。

    (5)站点2返回的单播报文采用同样的流程发送至站点1。

    图8:单播数据转发

    2. 组播流量转发

    EVI对组播转发的支持,是为组播接收者和接收者一侧的DR(指定路由器)之间提供跨站点的二层网络,即主要解决的是IGMP报文跨站点传播的问题。

    像普通二层交换机转发组播数据一样,ED也需要在扩展VLAN上运行IGMP Snooping协议。EVI能够支持组播转发的关键在于,当收到DR发送的IGMP查询报文或组播接收者发送的组成员报告报文时,ED能够像对待普通以太网接口一样,在EVI-Link接口下学习路由器端口(R-port)和成员端口(H-port),以形成二层组播转发表。ED设备将IGMP报文进行EVI封装后,通过EVI隧道单播发送到属于相同EVI实例的远端ED,远端ED接收后,在本地站点内的该扩展VLAN内进行泛洪。

    图9:组播数据转发

    以图9为例,组播转发表项的建立和组播数据转发的流程如下:

    (1)DR发送组播组查询报文。

    (2)ED A由于在扩展VLAN运行了IGMP Snooping,侦听到组播组查询报文后,学习组播组信息,设置路由器端口为GE1/0/1。

    (3)ED A将组播组查询报文执行EVI封装,然后发往处于同一个EVI实例的其他远端ED。

    (4)ED B接收后对报文解封装,学习组播组信息,设置路由器端口为EVI Link 0。

    (5)ED B将组播组查询报文在扩展VLAN 100内泛洪,最终送达接收者。

    (6)组播接收者收到组播组查询报文后,回应成员关系报告报文。

    (7)ED B由于在扩展VLAN运行了IGMP Snooping协议,侦听到成员关系报告报文后,设置成员端口为GE1/0/1。

    (8)ED B对成员关系报告报文执行封装,从路由器端口EVI Link 0发送出去。

    (9)ED A接收后对报文解封装,设置成员端口为EVI Link 0,再从路由器端口发送至DR。DR了解到组播成员的存在后生成自身的组播转发表项。至此,二层组播转发表项建立完毕。

    (10)组播源发送组播数据至DR(DR与组播源之间的三层组播转发表项的建立这里不做赘述),DR将组播数据发送给ED A。

    (11)ED A将组播数据从成员接口EVI Link 0发送出去(如果存在多个成员接口,则DR做组播数据复制后从多个EVI Link接口发送出去)。

    (12)ED B接收后对报文解封装,从成员接口GE1/0/1发送给组播接收者。

    3. 广播和未知单播处理

    ED对广播、未知单播及未知组播的处理原则如下:

    (1)ED设备在VLAN内所有接口以及EVI-Link接口泛洪广播帧。

    (2)ED设备仅向站点内部的VLAN内泛洪未知单播和未知组播,不会通过EVI-Link泛洪到其他站点。

    三、 EVI协议优化

    1. ARP泛洪抑制

    为了减少目的MAC地址为广播MAC的报文泛洪到核心网,ED侦听从EVI Link接口接收到的ARP请求或应答报文,并在本地建立ARP缓存。当后续站点内部服务器发送ARP请求时,如果请求的ARP在缓存中存在,则ED设备将直接进行代答。这样将大大减少ARP广播泛洪到核心网的次数。

    如图10所示,典型的工作流程如下:

    图10:ARP泛洪抑制

    (1)站点1的主机A首次与站点2的主机B通信,主机A发送ARP广播请求主机B的ARP。ED A将广播请求执行EVI封装并泛洪至核心网。

    (2)ED B接收到ARP广播请求后在站点内泛洪,最终抵达主机B,同时建立主机A的ARP缓存。

    (3)主机B回应ARP应答,ED A接收后将此应答发送给主机A,同时建立主机B的ARP缓存。

    (4)站点1的主机C首次与站点2的主机B通信,主机C发送ARP广播请求主机B的ARP。ED A根据ARP缓存直接进行代答,向主机C回复主机B的ARP,从而避免了ARP广播泛洪到核心网。

    2. 选择性泛洪

    缺省情况下,ED设备仅向站点内部的VLAN内泛洪未知单播和未知组播,不会通过EVI-Link泛洪到其他站点。对于某些特定的业务,以特定的目的MAC地址来标识其业务流量,该MAC地址永远不会作为数据帧的源MAC地址,不能通过EVI IS-IS在ED之间进行通告。为了保证这类通信,可以通过配置指定目的MAC为特定MAC的数据报文泛洪到IP核心网,即选择性泛洪。例如将IGMP普遍组查询报文的目的组播MAC地址配置为选择性泛洪MAC。

    3. EVI IS-IS虚拟系统

    一个LSP报文中携带了本地所有的MAC地址信息。如果LSP报文的长度超过1400字节,则需要分片发送。这些LSP分片构成一个LSP分片集,每个LSP分片集最多有256个分片,所能携带的最大MAC地址数为55×210。当本地MAC地址数超过55×210时,可以创建EVI IS-IS虚拟系统来扩展LSP的分片数量,以增加系统所能发布的MAC地址数量。

    四、 小结

    通过本期内容,读者们应该能够掌握EVI在控制层面和数据层面的具体工作原理。关于EVI的常见组网、可靠性部署以及典型配置,我们将在下一期内容中共同讨论和学习。

    顶端