路由协议属于哪一层?
分层的目的是为了把复杂的功能模块化,易于描述,易于实现和维护。一般认为L3就是负责实现网际互连(internetworking)。比如IP,可以实现全球的IP网络的互连,你只需要一个IP地址。

这时就有一个问题。条条大路通罗马,你怎么知道走哪条路能到你想去的IP呢?于是发明了动态路由协议,让它去找路。但是动态路由协议自己的packet也得通过IP packet的封装发出去。有的选择是直接用IP包(如OSPF;DSR),有的则先用UDP或TCP包一层,再用IP包一层(如RIP,BGP;AODV, OLSR)。当然它们这么做有自己的需要和理由。

但不管怎么说,转发表(forwarding table)是IP层的。一个结点如果有转发功能,它在转发数据包时会且仅会依照这个表。但是这个转发表不是随机生成的,而是动态路由协议学习来的,或者由人工配置的静态路由生成。所以呢,转发表的数据结构在IP层,但内容却是由路由协议们提供的。

如果按照报文包粽子的顺序,RIP, BGP因为在有运输层的报头,可以算是“应用层”。不过当初分层的目的是为了区分网络上的各种功能(functionality),不是针对粽子叶的层数。所以不少的文献把路由协议都算在网络层里。

有人提出了控制面(control plane)和数据面(data plane)的概念。在原来协议分层的基础上增加分面的概念。报文表示和打包的过程属于数据面, 而生成转发表和如何转发的过程属于控制面。还有些人把路由协议称作routing protocol,就是做路由决定的协议;把其它协议称作routed protocol,被决定的协议,它们只管扛数据,怎么走路由前者决定。