TRILL原理
一.TRILL原理
假设一个数据包要从A口传像B口:
(1) (1) A的网卡端口首先给数据打公网MAC,然后向C发送。这时数据包的格式是:
(2) (2)C收到这个数据包之后,学习源的MAC地址,填MAC表,然后给数据包打上公网VLAN tag,RILL与传统二层无差异。在C的MAC表中查找des MAC,发现MAC表中对应的下一跳是一个nickname(mac地址表如下图)。这个nickname实际上是D的nickname。这时C会为这个数据包再封装一个trill报头,记录源nickname(即C的)和目的nickname(即D的),这时报文格式是:
(3) (3)C开始查它的trill转发表(下图),发现他去往目的nickname一共有4条路,对应的interface就是他们的下一跳出口,这时,C会根据这个出口为数据包封装私网的MAC头和vlan头,这时报文格式是:
这也是报文在TRILL域内传输时的格式。
(4) (4)报文在trill域内的传递过程类似,不过是反复的使用des nickname寻路,然后每一条重新封装私网mac和vlan。
(5) (5)这时,数据包到达设备D,D发现报文的des nickname就是它自己,就会剥掉报文的前3个头,直接拿公网mac查自己的mac地址表,然后把报文扔到相应的出口,这时,报文走出trill域,恢复成传统二层报文,它的下一条就是目的地B。
二.TRILL的优势
TRILL与L2相比的优势:不需要使用STP防止环路,提高了链路利用率
TRILL与L3相比的优势:支持虚拟机迁移,另经试验验证,与L3相比,TRILL的转发效率没有提高,甚至略低。具体验证试验如下:
对比组1:TRILL组
如上图,在port A线速打入源/目的MAC地址线速变化的测试流量,变化范围为500。流量中包长分别为64、128、256、512、1024、1518字节,记录流量转发情况和时延。
测试结果如下:
对比组2:传统L3组
如上图,如上图,在port A线速打入源/目的IP地址线速变化的测试流量,变化范围为500。流量中二层包长分别为64、128、256、512、1024、1518字节,记录流量转发情况和时延。
测试结果如下:
(测试结果贴图不全,有一些在实验机房里没拷出来,相关结果贴图周一补上)
通过观察,在同样的实验条件下,TRILL方式与L3方式的延时(Latency)十分接近。
通过讨论,我们觉得L3和TRILL在转发过程中的工作量差不多,具体对比如下:
| TRILL | L3 |
STEP1 | 查MAC address表,找对端MAC | 查ip route table,找对端IP |
STEP2 | 查trill fib表,找对应转发组,选择合适的转发组进行转发 | 比较各路径cost并结合ECMP选择合适下一跳进行转发 |