最近在网上看到一篇专门介绍route-over和Mesh-under的论文,介绍的比较详细:
Route-over vs Mesh-under Routing in 6LoWPAN
基于IP的物联网架构、技术与应用
Interconnecting Smart Objects with IP:TheNext Internet
Adam Dunkels(亚当·丹克尔)Jean-Philippe Vasseur
本书中提到了route-over和mesh-under的问题,虽然只用了三页纸,也没有涉及过多的技术细节,但从最根本的源头解释了两种路由。之前看到的内容虽然涉及细节,但却容易让人一头雾水,搞不清楚两者个关系。
二层路由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)