当前位置:文档之家› 基于SoC的嵌入式网关的设计与实现

基于SoC的嵌入式网关的设计与实现

计算机工程与设计ComputerEngineering andDesign 2011,Vo1.32,No.9 2989 基于SoC的嵌入式网关的设计与实现 杜超, 陈济民 (华北计算技术研究所专装技术研发部,北京100083) 摘要:为了实现广域测控网的互联互通,设计和实现一种基于SoC的嵌入式网关,实现以太网协议和HDLC协议之间的报 文转发。网关以IP核为底层转发部件,以嵌入式Linux操作系统作为各种应用的部署平台,通过改造Linux TCPfiP协议栈将 底层IP核和Linux内核融合起来,充分发挥软件的灵活性和硬件的快速转发能力。测试结果表明,通过这种方式设计的网关 基本能满足应用需要。 关键词:片上系统(SoC);嵌入式网关;IP核;软硬件协同设计;LinuxTCPHP协议栈 中图法分类号:TP393.05 文献标识码:A 文章编号:1000.7024(2011)09.2989.04 

Design and implementation of embedded gateway based on SoC DU Chao. CHEN Ji—min (Specialized Equipment and Technology Research and Development Department,North China Institute of Computing Technology,Beijing 1 00083,China) 

Abstract:For the interconnectivity ofWAN monitoring network,a embedded gateway system based on SoC is designed and implemented to archive the packets forwarding between HDLC protocol and Ethemet protoco1.The gateway uses IP core as the underlying forwarding components and the embedded Linux operating system as a deployment platform for various applications.Through the transformation of Linux TCP|IP protocol stack to connect the Linux kernel and underlying IP core,giving full play to the flexibility of software and fast forwarding capabiUty ofhardware.By testing,designing ofthe gateway in this way almost satisfy the needs ofapplying. Key words:system on chip(SoC);embedded gateway system;intellectual property(iP)core;hardware/software CO-design;Linux TCPfiP stack 

0引 言 随着微电子技术的发展,芯片的集成度越来越高,片上系 统(SoC)的发展已经是必然趋势。SoC具有可扩展性好,成本 低,设计周期短,可靠性高,功耗低等优点。SoC也为各种网 络产品的研发提供了新的思路“卅。由于SoC具有良好的可重 配置性,可很方便地更改配置和属性,利用该技术设计出的产 品具有很好的灵活性和安全性。在没有引入统一的路由控制 机制以及没有统一的TCP/IP协议支持的测控网中连通性差、 灵活性弱,这就使网络应用模式受到限制,更无法支持各种上 层应用。本文介绍一种基于SoC及IP核技术的专用嵌入式 网关的设计与实现,以实现在HDLC链路上进行IP分组的传 输并和以太网实现路由交换,可有效地解决广域测控网的互 连互通性,并且系统的设计也可以方便部署各种上层应用。 

1网关体系结构设计 1.1系统概述 网关以一个Xilinx Virtex.4 Fxl00芯片 为核心,自主开 

发了所需的系列IP核,并设计相应的外围电路。XilinxVirtex一4 Fxl00芯片内部有两个PowerPC 405 CPU核(分别称为PPC/O1 和PPC/02)和4个以太网MAC核。2个PowerPC处理器核分 别承担着不同的工作。其中,PPC/01主要负责路由信息的维 护,以及与用户的交互;PPC/02主要负责调度交换结构在各端 口之间转发IP包,实现ARP协议,维护映射表,并且负责查找 转发表和映射表。一个正确的数据包的处理过程如图1所示。 进入系统的链路层帧被MAC/HDLC输入输出处理部件 剥去链路层头,进行正确性校验,正确的包放入输入端口的相 应缓冲区,并向PPC/02发出接收完成中断,请求PPC/02处理。 校验错误或者输入缓冲区满导致阻塞时,接收端口将校验错 误的IP头和一部分负载放入输入端ICMP缓冲区,并产生中 断来通知PPC/02处理。 对于输入的IP包,PPC/02收到中断信号之后,会查找转 发表,找到下一跳的IP地址和输出端口号;然后查找映射表, 查找下一跳的MAC地址,查找到的目的MAC地址被放入输 出端口的寄存器内。然后PPC/02调度交换部件执行交换,把 IP包交换到相应的输出端口。输出端口将此IP包和目的MAC 

收稿日期:2010.10.08;修订日期:2010—12—09。 作者简介:杜超(1986一),男,河南信阳人,硕士研究生,研究方向为嵌入式软件; 陈济民(1964一),男,北京人,研究员,研究方向为计算 机体系结构、网络与通信。E—mail:duchao2008@gmail.tom 2990 20 1 1,Vo1.32,No.9 计算机工程与设计Computer Engineering and Design ① ③ 输入/输出中断 链路层帧I ⑨ 处理部件 ② IP/ARP/IC MP输入/输 出缓冲区 ⑥ 调度 交换结构 I———— 一 (第三层交换)l ⑦I中断 ⑧l L坚苎塾塑 图1 系统工作原理 地址一起组装成链路层数据帧发送出去。 如果这个IP包是送往本网关的RIP协议数据包,就通过 交换结构把数据包交换PPC/01的输入缓冲区,然后通过中断 告诉PPC/01有数据到达,PPC/01收到中断后从自己的输入缓 冲区中读取数据报,并根据RIP包来维护路由信息。 对于输入的ARP包,PPC/02要么根据ARP包的内容来更 新映射表,要么生成ARP响应包,放入输出端口的相应缓冲 区,由输出端口发送出去。 用户则通过PPC/01提供的人机交互接口,对网关的相关 参数进行配置,也可以获取网关运行的状态信息。 1.2硬件结构 系统划分为8个模块:PPC/01处理器,PPC/02处理器, MAC端口部件,HDLC端口部件,快速交换部件,转发引擎部 件,地址映射部件和双机通信部件,如图2所示。图中的Port PPC01和Port PPC02分别代表PPC/01和PPC/02的输入/输出 缓冲区。这两个缓冲区是交换结构和两个CPU核之间交换数 据的通路。各模块功能简述如下: (1)PPC/01。PPC/01上运行Linux操作系统和Zebra路由 软件,负责建立和维护路由表,转发表以及配置管理工作。 查询/配置 ④一 查询/维护 竺苎查 l 查询/维护 —— ⑤L———— 

r_———————] 查询/维护 兰 查 J 

PPC/01也分析PPC/02通过双机通信送来的状态信息,并根据 状态信息的含义进行必要的处理,比如被通知从端口Port— PPC01的接收缓冲区中读取数据。另外,它提供一个人机交 

互接口,使用户可以在静态、动态运行的条件下对网关进行配 置。各种上层应用也可以部署在PPC/01上。 (2)PPC,02。PPC/02运行Xilkemel微内核操作系统,负责 对输入的包进行分析,根据包的类型和目的地址来调度交换 结构,将包交换到合适的目的端口。PPC/02也负责实现ARP 协议,维护映射表。 (3)MAC端口部件。有4个MAC端口部件。MAC端口 对外直接连接到以太网,对内与交换结构连接。它是以太网 数据帧输入输出的硬件实现部分。它把接收到的以太网帧进 行处理,放入合适的输入缓冲区,也负责把输出缓冲区中的IP 包装配成帧发送出去。 (4)HDLC端口部件。有4个HDLC端口部件。HDLC端 口是一个简化HDLC收发端口,实现的功能和MAC端口类 似,负责HDLC帧的收发。 (5)快速交换部件。快速交换部件是整个系统数据流动的 中心部件。主要职责是将各个端口输入缓冲区内的IP分组快 

图2系统硬件结构 杜超,陈济民:基于SoC的嵌入式网关的设计与实现 2011,Vo1.32,No.9 2991 速地交换到正确的目的端口的输出缓冲区。快速交换部件采 用总线式交换,它所交换的数据都是IP包,即第三层交换。 (6)转发引擎部件。转发引擎部件的功能是根据输入的目 的IP地址得到其最长匹配目的网络地址或目的主机IP地址 在路由表中的索引。 (7)地址映射部件。地址映射部件根据输入的下一跳IP 地址得到匹配的MAC地址。 (8)双机通信部件。双机通信部件负责实现两个CPU核 之间的通信,在两个CPU核之间交换控制和状态信息。双机 通信由两部分组成,共享存储器和中断控制器。两个处理器 都通过它们的OCM总线连接到一个双口RAM,共享存储器 被划分成两个单向缓冲区,两个CPU核分别只对其中一个可 写,对另一个可读。每个处理器都有一个中断接口,通过中断 告知对方有数据到达,或者向对方请求数据。 1.3软件结构 按照系统的功能划分,软件的结构也分为PPC/01和 PPC/02两部分,如图3所示。PPC/01上运行着系统支撑子系 统,配置管理子系统和路由子系统。PPC/02上运行转发子系 统。各子系统的功能如下: (1)转发子系统。转发子系统在Xilkemel微内核操作系统 上实现,主要职责是负责包的快速转发,调度交换结构在各端 口之间交换IP包。主要包括管理控制模块、IP协议处理模块、 ARP协议处理模块、ICMP协议处理模块,双机通信模块以及 各驱动模块。 (2)系统支撑子系统。系统支撑子系统运行在嵌入式Linux 操作系统上,它为路由子系统和配置管理子系统提供了一个 平台,并且也是其它各种应用部署的平台。支撑子系统是 PPC/01与系统其它部分协调和交互的桥梁,支撑子系统向上 连接路由子系统,向下与转发子系统连接,实现PPC/01与 PPC/02的通信。为了把网关的硬件结构和Linux操作系统融 合起来,需要对Linux的TCP/IP协议栈进行改造,后面会介绍。 (3)路由子系统。路由子系统负责维护路由表,并根据路 由表来更新转发表。 (4)配置管理子系统。配置管理子系统是网关运行过程中 用户对其进行配置和管理的接口。用户可以通过配置管理子 系统来添加、删除静态路由,调整路径的Metric值,选择路由 协议等,还可以通过配置管理子系统获得系统运行的状态信 息,以及各种统计信息。 

相关主题