近期在网上看到一篇专门介绍route-over和Mesh-under的论文,介绍的比較具体:
基于IP的物联网架构、技术与应用
Interconnecting Smart Objects with IP:TheNext Internet
Adam Dunkels(亚当·丹克尔)Jean-Philippe Vasseur
本书中提到了route-over和mesh-under的问题,尽管仅仅用了三页纸,也没有涉及过多的技术细节。但从最根本的源头解释了两种路由。之前看到的内容尽管涉及细节,但却easy让人一头雾水,搞不清楚两者个关系。
二层路由VS三层路由
关于LLN网络中的路由是应该在第二层(适配层)或是第三层(网络层)上执行的讨论已经成为一个很敏感的问题。
严格的说,路由意味着协议和机制要在多跳网络的第三层(IP)上计算路径。在多跳网络第二层上使用MAC地址运行路径计算也是可能的,这通常被称为“mesh-under”。与此相反的是“route-over”(路由,因此在第三层)。
大多数人觉得IEEE 802.15.4将是唯一可用的低功耗链路(总是一个有风险的如果)。当使用单一的链路层时,路径计算既能够在链路层(第二层)进行,也能够在IP层进行。
但新的低功耗第二层技术的出现。强烈要求使用分层架构。
这保证了层的独立性。并且特别是第二层”不可知论“。
记住,使用多种链路层的能力是TCP/IP架构设计的基础组建之中的一个。
路由协议非常明显变得不可缺少,这就导致了Roll工作的成立和RPL的设计。(事实上。ip本来就是为了屏蔽下层的异构链路和机制)
新问题随后出现了。即是否须要採用一个多层路由架构。一些链路层计算的路径表现为第三层的IP链路。在IP链路间运行路由操作。
多层路由架构在图5.5中描写叙述。在IP层。节点运行IP路由功能,看不见链路层节点。
在链路层,节点使用MAC地址进行”非链接“”路由”,在链路层计算路径。本例中,仅仅有N1、N2、N4处于链路层。
首先,这种多层方法被觉得是能够设计并部署的。6LoWPAN工作组甚至为其6LoWPAN适配层定义了一个网状编址报头,因为工作在链路层之上,通过使用802.15.4地址对每一跳编码来支持“mesh-under”方法。眼下还没有设计出此类链路层路由协议。
分层的方法。这样的路由架构的后果是非常值得考虑的,书中举了两个方面的后果:
一:可见性的缺失。由于第三层把第二层计算的路径觉得是IP链路。那么IP路由协议对链路层路径是不可见的。不可避免的导致次优路由。其实,链路层路由是依据自身的权值和约束计算路径。并且所产生的路径属性并没有通知给IP层。
这种链路有着与IP层相独立或不一致的静态权值。具体參见课本
二、网络重路由问题。路由协议的主要属性就是在网络组件故障(链路或节点)期间。在网络中寻找一条替代路径。这就涉及二层和三层同一时候重路由的问题。详见课本
结论:随着多种低功耗链路层技术的出现,比如IEEE802.15.4、Wi-Fi和PLC,网络层路由非常明显是必须的。虽然链路层路由可能在一些链路层上是可行的,但考虑到急剧添加的网络复杂性和缺乏效率。在LLN网络中尝试採用多层路由架构显然不是一个可行的选择。
关于mesh拓扑,如今认识到的几点:
能够參考译文:RFC 6606 question statement and requirement for6lowpan routing
1、mesh为二层,IP为三层。因为链路层地址。即MAC地址。在每次转发后都会发生变化(上一跳的物理地址和下一跳的物理地址)。所以就把真正的目的地址和源地址放在mesh报头中进行传输。
2、mesh-under和route-over也就是有差别的了,前者就是二层,确切来说就是低于ip层;后者就是ip层。
3、mesh当然是为了进行多跳,那么在wpan网内是不是不用ip,仅仅用mesh就能够完毕传送?(这个问题应该已经被3.1攻克了。若採用mesh,则仅仅有边界路由器为IPv6路由器)
4、当时用了mesh报头后,会带来一些优点。因为mesh包头中存储了接口标识符,所以这样就能够压缩IPv6报头中的信息,另外,路由表中也不必存储128为的IPv6地址。而是64位的接口标识了,缩小了路由表的大小。
Here, "Routing" is not equivalentto IP routing, but includes the functionalities of path computation andforwarding under the IP layer.
The term "Routing" is used in thefigure in order to illustrate which layer handles path computation and packetforwarding in mesh-under as compared to route-over.
Figure 1: Mesh-Under Routing (Left) andRoute-Over Routing (Right)