JUNOS软件内核(kernel)及路由协议进程(rpd)架构

junos-software-architecture
Jeff Doyle之前已经介绍过JUNOS内核来自一份被Juniper工程师经过高度个性化修改 — 包括卸载不必要的组件与驱动程序,以及根据JUNOS的开发需求重写某些系统代码等等的FreeBSD系统内核(kernel)。尽管如此,我们依然能够在JUNOS内部随处发现FreeBSD的痕迹。譬如,在配置Juniper路由器接口IP地址的时候,我们所使用的“family inet”实际上引用的便是BSD套接字(Socket)编程中的“AF_INET”通信协议族。注意,除了FreeBSD以外,包括我正在用的Mac OS X在内,还有许多基于BSD架构的UNIX系统,如OpenBSDNetBSD等等。

junos-software-modular-architecture回到JUNOS上面,而JUNOS系统软件内部的模块化独立设计,则是Juinper路由器相对其他厂商的网络设备能够更为稳定可靠运作的关键因素。JUNOS系统软件内的各个软件模块又可以被称作系统进程,包括路由器网络管理进程,路由协议进程,接口进程,命令行,采样进程,CoS以及机箱硬件管理进程均运行在JUNOS内核之上(如图中所示)。而JUNOS内核则负责对上层进程执行统一资源分配与管理协调,从而保障各个进程被独立分配在“hardware-assisted”隔离的内存空间内运行。因此,单一软件进程的失效并不会造成系统的全面瘫痪。另外,我们也可以轻易的在其他软件进程正常工作的同时重启某个JUNOS软件进程,而无需让系统全面重启或是担心对该进程的管理而造成对其它系统软件进程的影响。例如,我们可以在CLI下面独立的重启JUNOS路由协议守护进程(rpd)。

nigel@junos> restart routing
Routing protocol daemon started, pid 751

同时,Juniper路由器路由引擎(RE)与包转发引擎(PFE)相互分离的设计架构体系,保证流经路由器的数据包仅经过PFE转发。因此,在重启RE上的JUNOS路由协议软件进程的过程中,并不会造成网络传输中断或数据包丢失。JUNOS系统软件被安装在基于Intel PCI平台的路由引擎(RE)上面,通过路由协议守护进程(routing protocol daemon)管理路由器上运行的各种路由协议并维护路由表(Routing Information Base)。路由引擎(RE)通过RIB内的目的IP网段信息建立一份本地的转发信息表(Master FIB),再通过100Mbps的背板链路fxp1,对包转发引擎(PFE)上在真正执行数据转发时所使用的转发信息表FIB(Forwarding Table)进行增量更新。所以,即便在存有大量路由更新及抖动的情况下,依然能够保证Juniper路由器达到线速转发性能。同时,JUNOS内核除了负责连接RE与PFE以及它们之间的通讯以外,同时负责RE上的主FIB表与PFE上FIB表之间的同步。

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s