TRILL简介
时间:2022-02-26 11:20:02 | 来源:信息时代
时间:2022-02-26 11:20:02 来源:信息时代
TRILL(TRansparent Interconnect of Lots of Links)和FabricPath。2010年3月时TRILL已经提交了IETF RFC 5556规范(Transparent Interconnection of Lots of Links (TRILL): Problem and Applicability Statement),此RFC只是描述了TRILL要解决的问题以及应用范围,定义协议细节的文档目前都还处于Draft阶段,形成完整的协议标准体系应该还得1-2年。
TRILL并不是专门为数据中心开发的技术,其定义的是在大型Ethernet网络中解决多路径问题的方案。FabricPath是Cisco在TRILL标准之上加入了很多私货的专门为数据中心而设计的一个超集,基本的控制平面与数据平面二者没有明显区别。
控制平面上TRILL引入了L2 ISIS做为寻址协议,运行在所有的TRILL RB(Routing Bridge)之间,部署于一个可自定义的独立协议VLAN内,做的还是建立邻接、绘制拓扑和传递Tag那几件事。数据平面在内外层Ethernet报头之间引入了TRILL报头,使用NickName作为转发标识,用于报文在TRILL网络中的寻址转发(可理解为类似IP地址在IP网络里面转发时的作用)。每个RB都具有唯一的Nickname,同时维护其他RB的TRILL公共区域MAC地址、Nickname和私有区域内部MAC地址的对应关系表。因为TRILL封装是MACinMAC方式,因此在TRILL公共区域数据报文可以经过传统Bridge和Hub依靠外部Ethernet报头转发。TRILL报头格式如下图所示:
V (Version): 2 bit,当前Draft定义为0。
R (Reserved): 2 bits,预留。
M (Multi-destination): 1 bit,0为已知单播,1为未知单播/组播/广播,此时Egress RBridge Nickname意味着当前转发使用多播树的根。
Op-Length (Options Length): 5 bit,Option字段长度。
Hop Count: 6 bit,最大跳数,逐跳减一,为0丢弃,防止环路风暴。
Egress RBridge Nickname: 16 bit,已知单播标示目的私网MAC对应的RB,多播则标示多播树根RB。中间传输RB节点不能改变此字段值。
Ingress RBridge Nickname: 16 bit,标示报文进入TRILL区域的初始边缘RB,中间传输RB节点不能改变此字段值。
Options:目前只定义了CHbH (Critical Hop by Hop)和CItE (Critical Ingress to Egress)两个1bit的标志位,用于说明后面的Option预留内容是需要逐跳设备识别处理的或是首末端设备必须识别处理的。至于真正的Option目前都还没有定义。下图为Option字段内容:
普通Ethernet报文在首次从TRILL边缘RB设备进入TRILL区域时,作为未知单播还是依照传统以太网传播方式,广播给所有其他的RB节点。但是除了边缘RB外,TRILL区域中间的RB和传统Bridge都不会学习此数据报文中私有区域内部MAC地址信息,有效的降低了中间设备的MAC地址表压力。为了防止环路同时做到多路径负载均衡,TRILL的每个RB在初始建立邻接绘制拓扑时,都会构造出多个多播树,分别以不同的Nickname为根,将不同的未知单播/组播/广播流量Hash到不同的树,分发给其他所有RB。由于全网拓扑唯一且构造树时采用的算法一致,可保证全网RB的组播/广播树一致。在RB发送报文时,通过将报文TRILL头中的M标志位置1来标识此报文为多播,并填充树根Nickname到目的Nickname字段来确保沿途所有RB采用同一颗树进行广播。组播与广播报文的转发方式与未知单播相同。已知单播报文再发送的时候,会根据目的RB的Nickname进行寻路,如果RB间存在多条路径时,会逐流进行Hash发送,以确保多路径负载分担。
另外TRILL除了支持外层Ethernet封装在传统以太网中传输外,还规定了一种外层PPP封装方式可以跨广域网技术传输。以下是两种典型的TRILL报文封装方式:
TRILL的主要技术结构就是上面这些了,对更细节内容感兴趣的同学可以自行去IETF翻翻相关Draft。目前各个芯片厂商都已经进入TRILL Ready的阶段,只要技术标准完善发布并被广泛客户所接受,相关产品商用是很快的。