TRILL(Transparent Interconnection of lots of links,多链路透明互联)是IETF为实现数据中心大二层扩展制定的一个标准,目前已经有一些协议文稿标准化,如RFC6325,6326,6327等等。该协议的核心思想是将成熟的三层路由的控制算法引入到二层交换中,将原先的L2报文加一个新的封装(隧道封装),转换到新的地址空间上进行转发。而新的地址有与IP类似的路由属性,具备大规模组网、最短路径转发、等价多路径、快速收敛、易扩展等诸多优势,从而规避STP/MSTP等技术的缺陷,实现健壮的大规模二层组网。
TRILL标准涉及几个重要的概念:
“多路径”概念以往只用于IP转发。当两台路由器间存在多条等价转发路径(等价或非等价),路由器可根据路由协议的计算结果,将IP报文沿最短路径、并按照路径度量值,基于流的方式进行分担转发,由此可充分利用带宽资源。如果我们仔细回想一下我们交换机中最常使用的L2转发表,即MAC表,我们可以看到对于一个单播表项,其出端口只能是唯一的一个物理端口或者聚合端口,并不能同时有多个独立的物理端口,如果是那样的话,表项就变成了一个多播表项。也就是说MAC转发表天生不具备二层多路径能力。TRILL技术的出现并没有改变这种状况,而是通过隧道封装,将原本的二层MAC转发转换成一个类IP的三层路由转发,即TRILL技术将IP报文转发思路应用于以太帧转发,支持TRILL技术的以太网交换机被称为“RBridge(Routing Bridge)”。
由于RB要对用户侧的报文进行封装和解封装操作,我们可以通俗的将负责报文加封装/拆封装的端点设备称为Vlan X Forwarder,类似VPN中的PE。
路由器可通过链路状态路由协议计算相互之间的最短路径、等价多路径/ECMP,并在拓扑变化时更新转发路径。RBridge间通过类似IS-IS路由协议的链路状态控制协议TRILL IS-IS实现相互间最短路径和等价多路径的计算。TRILL IS-IS只计算RBridge间的拓扑,而不关心网络中两台主机间的拓扑(事实上,两台RB之间最常使用的拓扑是直连方式)。
为了实现上述的路由控制功能,需要在网络中为每个RB定义一个全局唯一的标识,由于Router ID已经被IP使用了,且其形式类似IP地址,考虑到TRILL IS-IS还是为L2服务,因此TRILL重新选择了一种新的ID,名字叫Nickname,用来标识每个RB设备。TRILL IS-IS计算的最后结果就是为了形成到不同Nickname的单播和组播转发表。
图1. RBridge对已知单播的转发
如图1所示,当单播以太帧通过位于TRILL网络边缘的Ingress RBridge进入TRILL网络时,原始帧头前被增加一个额外的“TRILL头”(类似IP报文头),其中包含Ingress RBridge Nickname和Egress RBridge Nickname,就像IP头中的源IP地址和目的IP地址。“TRILL头”前还要添加“Next-Hop头”(就像IP报文前的MAC头或PPP头),由此完成TRILL帧封装。此后,TRILL帧在RBridge间的转发过程就像IP报文在路由器间的转发过程。RBridge根据TRILL头中的Egress Nickname进行逐跳转发,Next-hop头在每一跳都要修改,而TRILL头中只有TTL值发生变化。RBridge间对TRILL帧实现最短路径转发和等价路径分担,避免了传统二层网络由于运行STP造成的链路阻塞问题。TRILL帧最终在TRILL网络边缘的Egress RBridge被还原成标准以太帧,并被送出TRILL网。
RBridge只需要知道到达下一跳RBridge的最优路径即可,无需知道如何到达目的主机。因此,只有Ingress/Egress RBridge需要使能传统的MAC地址学习(MAC表中区分从本地端口学到的MAC地址,以及从远端Egress RBridge上学到的MAC地址),而TRILL网络上的核心RBridge无需维护与主机相关的MAC表。另外,RBridge之间可以采用传统以太交换机互联,并且在BRridge与互联交换机可运行STP协议,但RBridge会终结STP实例,不会将BPDU通过RBridge扩散。
图2. RBridge对多目的帧的转发
如图2所示,对于多目的以太帧(广播、组播、未知单播)的处理,要求RBridge通过TRILL IS-IS的计算结果生成出多棵具有不同树根的分发树。多目的帧进入TRILL网络,由Ingress RBridge选择一颗分发树用于该帧在TRILL网的转发,并将树根RBridge Nickname作为“TRILL头”中的Egress RBridge Nickname。此后的处理过程与IP组播报文在组播路由器间的转发类似,每个RBridge只根据树根RBridge标识的分发树选择TRILL的复制和转发策略。
需要说明一点,由于TRILL技术定义了新的帧格式,所以传统的以太网交换机不能通过升级软件支持该特性,只有采用新款ASIC/NP芯片的以太网交换机才能支持TRILL转发。
虽然TRILL具备明显的特点,但它也存在一些问题待解决。到目前为止,TRILL还在不断的标准化过程中,依旧有大量的草案在讨论中。其协议本身问题主要包括:
TRILL在国内的应用目前还处于起步阶段。部分运营商、金融、大企业以及互联网公司用户已经开始在关注或者开始考虑TRILL技术。
TRILL的组网需要考虑下列因素:
具体到组网应用,按照部署场景列举如下几种组网类型:
1. 组网模型1:现有组网扩建TRILL域
leaf aggregation spine三层组网环境,L3网关在aggregation层,集中式L3网关
图3. 现有组网扩建TRILL域
组网说明(如图3所示):
采用板卡代理的方式:将设备上TRILL和L3分开到两种不同的板卡上,然后在他们之间启用proxy代理,本质上是将原先一个芯片一个pipeline流程分解到两块芯片上分开执行,降低对芯片的要求。典型的如思科N7K上的M1/F1板卡组合;
采用1:N设备虚拟化方式,将一个设备虚拟成两个设备,其中一个虚拟设备运行TRILL,一个虚拟设备运行L3。两个虚拟设备通过外部连线连接,就像完全独立的两台设备之间互联一样(如图4所示)。例如采用H3C的MDC技术,或者思科的VDC技术。
图4. 通过设备1:N技术实现TRILL L3
这种组网模型能在现有传统技术组建的数据中心网络基础上平滑扩建TRILL域,实现TRILL域内的VLAN跨机架二层连通。免STP,链路全活利用率高,高可靠。但其TRILL域规模有限,VLAN只能在POD内二层连通,无法跨POD;才外,集中的L3网关使得L3转发性能有限。
2. 组网模型2:新建TRILL核心实现VLAN跨POD联通
新建TRILL core,和L3 core并列
图5. 新建TRILL核心实现VLAN跨POD联通
组网说明(如图5所示):
在组网模型1的基础上,满足VLAN跨POD更大范围的二层联通需求;
3. 组网模型3:新建两层架构的TRILL网络
完全新建TRILL,采用leaf spine两层结构,网关集中在Spine节点上
图6. 新建两层架构的TRILL网络
组网说明(如图6所示):
取消aggregation层,整个网络精简为两层;
网关在spine节点上,多网关负载分担,由于网关数量大于2个,此处可采用VRRPE,实现多网关负载分担和备份功能。图6中用蓝色箭头示出了不同的host发出的流量采用不同的网关MAC,转发到不同的网关节点上进行分担。
这种组网模型的两层架构更精简,低时延;VLAN可以在数据中心内任意位置部署;L3网关负载分担和备份;L2转发可以做到横向无收敛,扩展性好。但是集中式网关对于大型组网来如几千甚至上万台虚拟化服务器组网来说,一是ARP表项要求高;其次VRRPE的分担方式对域同一个host的流量不能分担。
4. 组网模型4:L3网关在leaf节点使能
图7. L3网关在leaf节点
组网说明(如图7所示):
这种组网模型spine节点处流量实现了均匀的分担和备份,将leaf节点翻上去,相当于三层设备组部署TRILL(如图8所示),核心集中到一台逻辑设备上。对于spine节点,完全按照TRILL的多路径进行L3转发流量的分担,即使对于同一个host发出的不同的流量,也可以在spine节点之间进行分担,分担更均匀。但局限性体现在该组网只适合L3转发性能要求不高的场合。
图8. 三层设备部署TRILL网络
5. 组网模型5:在模型3的基础上采用分布式L3网关方式
图9. 分布式L3网关组网
组网说明(如图9所示):
这种组网模型将原先通过spine节点转发的leaf本地VLAN的三层接口下移到leaf节点,减轻了spine节点的负担,降低了ARP表项需求;但配置相对复杂,需要引入互联VLAN实现各leaf节点的路由可达。
通过以上这些组网模型的优缺点分析,可以看出在满足大二层扩展、链路利用率以及稳定性可靠性方面,TRILL已经表现出比传统STP技术的明显优势。
技术在不断发展,TRILL也在不断发展进步之中,这其中既包括协议本身的完善,也包括ASIC功能的不断完善。当前的TRILL解决方案并不是十全十美的,还有改进优化的余地。我们期望未来能获得更完美的TRILL组网方案,更好的满足用户的需求。