我们可以把路由器比作网络世界的骨架,我们之所以能够在网络世界里畅游,很大程度上是得益于这个铁盒子。
路由器硬件架构
随着专用多核网络处理器、专用转发芯片的出现,使得现代路由器摆脱了以往纯软件转发的局限,向着高吞吐率、硬件快速转发等方向发展。高端的路由器设计成多板分布式+冗余备份的架构,使转发能力成倍的增强,同时还大大提高了业务的稳定性。
下图是一幅典型的路由器硬件架构图:
目前高端路由器大多采用专门的多核网络处理器作为CPU,如Cavium公司研发的Octeon系列处理器,主流的6000系列16~32个核,即将上市的7000系列多达64个核,并行处理能力大大加强。并且这类专用网络处理器在硬件上都对网络报文的解析、保序、转发等方面提供了专门的协处理器进行支持,优化并提高了系统的转发能力,也为软件研发者省去了不少麻烦。
Broadcom、Marvell等公司提供专门的转发芯片,通过VLAN、硬件路由等功能,在硬件上直接支持了对报文的二三层的线速转发,并且多片交换芯片之间可连接,最终形成一个大的交换矩阵网络。
CPU和交换芯片之间的数据通道可由10G高速接口相连,实现海量数据的传输;管理通道通过PCIe总线相连,传输控制信号。
64位的CPU有着广阔的寻址空间,可以支持很大的DRAM内存。
CF卡或SD卡用来存储系统程序,可以很方便的对系统程序进行升级。
BOOT ROM存储着系统加载程序,系统上电时首先从BOOT ROM开始运行,由BOOT ROM来负责加载整个操作系统。
CPLD中存储着系统的版本信息,由BOOT ROM来负责读取版本参数,并通知给系统。
作为分布式系统的话,各个单板之间通过背板接口传输数据和管理信息。
路由器软件架构
路由器是一个典型的嵌入式系统,我们只讨论与网络相关的部分:
由于使用多核处理器,软件的设计架构可以非常灵活,我们一般在CPU层面就把业务划分开,拿出几个核跑特定的核心业务(无操作系统),这样可以大大加快核心业务的处理能力。其它的核一般跑Linux、VxWorks等嵌入式操作系统,作为控制面。相比较而言,控制面的报文转发能力就很差了,但由于有操作系统和协议栈的支持,控制面可以跑更复杂、更定制化的业务,根据客户需求灵活的设计业务模式。