control plane, data plane是实现网络设备所需要理解的两个基本的概念。data plane一般是做快速转发的,而control plane是为快速转发准备必要的信息。control plane一般包括,路由协议,设备管理,命令行,ARP,IGMP等;而data plane一般就是转发包。这样的划分,目的是把系统的主要工作和次要工作分离开,避免不同类型的处理相互干扰。在一个网络设备里面,转发无疑是最主要的工作,它具有最高的优先级,而路由协议,由于并不需要在短时间内处理大量的包,所以可以把它放到次一级的优先级里面。data plane可以借助asic或者NP等优化,可以达到很高的速度,而control plane,则可以借助于通用的库,或者系统,以达到更好的保护。
control plane的os和data plane的os,作用完全不同。data plane的os需要实时响应,并且需要更快速,高效的内存管理,队列管理,定时器管理等;而control plane的os则倾向于更好的保护,更简便的编程方式,以及快速移植等。当然,哪些任务放到control plane,哪些任务放到data plane,是需要在实践中去选择。一个简单的例子,arp学习和应答,一般放在control plane;而mac learning则放在data plane。显而易见的是,arp学习和应答的时间是不确定的,而mac learning则是立即生效的。
就data plane来说,又可分control path和data path。control path同样是为data path准备必要的信息。有时为了更快的速度,避免control plane和data plane过多的交互,把control plane的某些工作拿到data plane上来做。比如ICMP的应答等。哪些任务需要拿下来,需要在实践中去探索。
有关control plane和data plane的划分,可以参考下面这个RFC
RFC 3746 Forwarding and Control Element Separation (ForCES) Framework: http://www.rfc-archive.org/getrfc.php?rfc=3746