一种基于网络处理器接入快速转发网络路由器的制作方法

文档序号:18587857发布日期:2019-09-03 20:00阅读:419来源:国知局
一种基于网络处理器接入快速转发网络路由器的制作方法

本实用新型涉及一种用于中小企业和家庭网络领域的的基于网络处理器接入快速转发网络路由器。



背景技术:

随着社会不断向前进步和发展,伴随对通信网络电子产品的智能化和信息化的要求越来越高。然而,通信技术的不断创新推动了电信网络的迅猛发展。由于光通信技术的迅速进步,核心网的带宽和性能获得了前所未有的提升。接入网作为连接核心网与用户的桥梁,得到了高度的重视和快速的发展,从而也为网络接入设备提供了广阔的应用前景和市场空间。接入网分为有线接入、无线接入和综合接入。有线接入包括铜线接入网、光纤接入网、混合光纤同轴电缆接入网等无线接入包括固定无线接入和移动无线接入综合接入是有线和无线相结合的接入方式。从实际应用角度来看,应用较为普遍的有不对称数字用户线,小区局域网以及线缆等几种方式。现有技术中的网络路由器,一般分为基于通用处理器的软件实现和基于专用集成电路的硬件实现两种方式。基于软件实现的方案具有高度灵活的特点,但是性能较差。随着网络应用带宽需求的急剧上升,以及分组处理运算的日益复杂,单单靠软件程序在一般微处理器上完成分组处理己显得力不从心,将数据输入处理单元,完成后再将结果送往输出单元,慢速处理造成的时间延迟会严重影响到数据吞吐量,无法满足线速处理的需求。同时,虽然可提供较高的处理性能,但由于网络协议的不断更新和新应用的不断涌现,基于技术的网络设备已难以满足各种服务和应用的不同需求。



技术实现要素:

本实用新型的技术目的是为了解决上述现有技术存在的问题而提供一种不仅具有网络设备高速处理性能,而且还具有网络设备实现的灵活性能的基于网络处理器接入快速转发网络路由器。

为了实现上述技术问题,本实用新型所提供一种基于网络处理器接入快速转发网络路由器,其包括路由器外壳,安装在路由器外壳内部的路由器模块;所述路由器模块包括路由器主板,设于路由器主板上面的与外设FTIH/GPON/EPON/ADSL宽带网络连接的网络接口,设于路由器主板上面的与外设终端用户端的用户端接口,设于路由器主板上面的与外设手机或外设手提电脑的无线网络的接收器相互匹配的发射器模块;所述的路由器主板是由型号为INTEL IXP425的网络处理器构成;所述的网络处理器包括核心控制处理器(INTEL XSCALE CORE),用于负责普通数据分组提供快速通道的网络处理引擎模块(NETWORK PROCCSSOR ENGINES);所述的网络处理器运行LINUX操作系统平台内,该LINUX操作系统平台内部设置有用于提供分组转发的效率和灵活性的快速软件分组交换器。

进一步限定,核心控制处理器是采用与ARMV5TE指令集兼容的技术,采用0.18um半导体工艺,能在一个较大的速度和供电变化范围内正常工作的核心板;该核心板包含具有能大幅提升了高速有效的核心性能七级八级的超流水线,具有128-entry的目标缓存区,具有能提供逻辑物理地址转换、存取权限、i-cache功能的128-entry指令存储管理单元,具有能够容纳整个程序,避免因存储器存取造成的处理器内核停顿的32KB的指令缓存器,能减少因存储器存取造成的处理器内核停顿的32KB的指令缓存器,用以保存频繁使用的数据流2KB的mini的数据缓存器;网络处理引擎模块简称为NPES,是用于网络分组处理的专用引擎处理器模块,负责为普通的数据分组提供快速通道;能对MII,CRC校验,AAL2,AES,DES,SHA-1,MD5处理器密集操作提供硬件加速功能单元,所有指令代码均为存储器内部的专用指令存储器及数据存储器内;所述专用引擎处理器模块包括三个具有集成的专用外围接口支持的NPE单元,所述专用外围接口包括UTOPIA接口(universal test and operation PHY Interface FOR ATM),两个高速串行接口(HSS),两个MII以太网PHY接口;所述UTOPIA接口与ATM物理层设备相连接标准总线接口,专用外围接口是最多可支持4个外部的UTOPIA接口以及个逻辑通道,NEP单元完成ATM信元的分割,重组,CRC校验,内存数据传输的任务;两个高速串行接口能够直接与SLIC/CODEC设备接口提供语音应用,同时也可与串行DSL帧设备,串行通讯协议TI,以及MVIP;两个MII以太网接口是集成有两个符合行业标准的MII接口,包含一个MDIO及MDC,用来对以太网PHY接口进行通信,控制,以及配置。

进一步限定,所述核心板包括核心板主体,核心板单元电路,核心扩展板;所述核心板主体包括型号IXP425芯片,连接于IXP425芯片上的太网物理接口(ethemet phy),连接于太网物理层接口上的RJ45接口,分别连接于IXP425芯片上的复位电路,电源电路,晶振电路,FLASH MENORY模块,SDRAM模块,扩展接口;所述型号IXP425芯片共有492个引脚,采用PBGA,1.27mmPitch的封装;其中包括200个电源/地引脚:45个1.3V电源,55个3.3V电源引脚,100个接地引脚;292个信号或控制线包括MII,UTOPIA,HSS,SDRAM,EXPB,BUS一系列功能引脚。

进一步限定,所述快速软件分组交换器包括Linux的IP转发机制,无线或有线透明网桥,源MAC地址防火墙,NAPT的实现模块,TCP/UDP分组处理器,校验和检测的修正器,数据结构;Linux的IP转发机制包含快速交换构架,以FASTPATH芯片为原型,实现了独立于原有IP转发机制的快速交换构架;就是在IP分组处理的底层将分组取出,交给自行实现的网络功能模块;无线或有线透明网桥是指用于连接两个子网的网络设备,使用于Ethernet/IEEE802.3网络中实现对网络拓扑的扩展,标准的无线或有线透明网桥包含有对分组的混杂模式的接收,暂存与转发模块,MAC地址学习或过滤功能模块,生成树算法的支持模块;所述源MAC地址防火墙包含无效MAC地址过滤模块,MAC地址充许列表模块,MAC地址阻止列表模块;NAPT的实现模块是网络地址转换(NAT,Network Address Translation)的一种实现形式,与基本的NAT一样,NAPT实现私网IP地址与公网IP地址之间的映射,从而达到共享有限公网IP的目的,与基本的NAT所不同的是,NAPT除了利用IP地址之外,结合了TCP/UDP端口,ICMPID的端口号信息;TCP/UDP分组处理器为,TCP和UDP,两者均为INTERNET上所采用的传输层协议;TCP为Transmission Control Protocol的缩写,所述的UDP为User Datagram Protocol的缩写;校验和检测的修正器的又名为校验和(Checkksum)的修正,Checkksum是网络协议中的一个重要概念,用于确保数据的无差错传输IP头部,ICMP/TCP/UDP头部均包含有自己的校验和。

进一步限定,所述网络接口包括FTTH接口,GPON接口,EPON接口。

本实用新型的有益效果:因所述的路由器主板是由型号为INTEL IXP425的网络处理器构成;所述的网络处理器包括核心控制处理器(INTEL XSCALE CORE),用于负责普通数据分组提供快速通道的网络处理引擎模块(NETWORK PROCCSSORENGINES);所述的网络处理器运行LINUX操作系统平台内,该LINUX操作系统平台内部设置有用于提供分组转发的效率和灵活性的快速软件分组交换器。使用时,利用网络处理器具有支持高速分组处理,支持不断变换高层网络服务性能,具有高度灵活性,基于Linux系统作为操作系统平台具有完整的IP协议栈,实现了Linux内核态的快速软件分组交换器,使得提高分组转发的效率和灵活性,实现大部分的网络功能。因此,达到不仅具有网络设备高速处理性能,而且还具有网络设备实现的灵活性能。

下面结合附图和实施例,对本实用新型的技术方案做进一步的详细描述。

【附图说明】

图1是本实用新型基于网络处理器接入快速转发网络路由器的安装示意图。

【具体实施方式】

为了使本实用新型所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本实用新型进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本实用新型,并不用于限定本实用新型。

请参考图1所示,下面结合实施例说明一种基于网络处理器接入快速转发网络路由器,其包括路由器外壳,安装在路由器外壳内部的路由器模块;所述路由器模块包括路由器主板,设于路由器主板上面的与外设外设FTIH/GPON/EPON/ADSL宽带网络连接的网络接口,设于路由器主板上面的与外设终端用户端的用户端接口,设于路由器主板上面的与外设手机或外设手提电脑的无线网络的相互匹配的发射器模块。所述网络接口包括FTTH接口,GPON接口,EPON接口。

所述的路由器主板是由型号为INTEL IXP425的网络处理器构成;所述的网络处理器包括核心控制处理器(INTEL XSCALE CORE),用于负责普通数据分组提供快速通道的网络处理引擎模块(NETWORK PROCCSSOR ENGINES);所述的网络处理器运行LINUX操作系统平台内,该LINUX操作系统平台内部设置有用于提供分组转发的效率和灵活性的快速软件分组交换器。

所述核心控制处理器是采用与ARMV5TE指令集兼容的技术,采用0.18um半导体工艺,能在一个较大的速度和供电变化范围内正常工作的核心板;该核心板包含具有能大幅提升了高速有效的核心性能七级八级的超流水线,具有128-entry的目标缓存区,具有能提供逻辑物理地址转换、存取权限、i-cache功能的128-entry指令存储管理单元,具有能够容纳整个程序,避免因存储器存取造成的处理器内核停顿的32KB的指令缓存器,能减少因存储器存取造成的处理器内核停顿的32KB的指令缓存器,用以保存频繁使用的数据流2KB的mini的数据缓存器。

网络处理引擎模块简称为NPES,是用于网络分组处理的专用引擎处理器模块,负责为普通的数据分组提供快速通道;能对MII,CRC校验,AAL2,AES,DES,SHA-1,MD5处理器密集操作提供硬件加速功能单元,所有指令代码均为存储器内部的专用指令存储器及数据存储器内。

所述专用引擎处理器模块包括三个具有集成的专用外围接口支持的NPE单元,所述专用外围接口包括UTOPIA接口(universal test and operation PHY Interface FOR ATM),两个高速串行接口(HSS),两个MII以太网PHY接口;所述UTOPIA接口与ATM物理层设备相连接标准总线接口,专用外围接口是最多可支持4个外部的UTOPIA接口以及个逻辑通道,NEP单元完成ATM信元的分割,重组,CRC校验,内存数据传输的任务;两个高速串行接口能够直接与SLIC/CODEC设备接口提供语音应用,同时也可与串行DSL帧设备,串行通讯协议TI,以及MVIP;两个MII以太网接口是集成有两个符合行业标准的MII接口,包含一个MDIO及MDC,用来对以太网PHY接口进行通信,控制,以及配置。

所述核心板包括核心板主体,核心板单元电路,核心扩展板;所述核心板主体包括型号IXP425芯片,连接于IXP425芯片上的太网物理接口(ethemet phy),连接于太网物理层接口上的RJ45接口,分别连接于IXP425芯片上的复位电路,电源电路,晶振电路,FLASH MENORY模块,SDRAM模块,扩展接口。

所述型号IXP425芯片共有492个引脚,采用PBGA,1.27mmPitch的封装;其中包括200个电源/地引脚:45个1.3V电源,55个3.3V电源引脚,100个接地引脚;292个信号或控制线包括MII,UTOPIA,HSS,SDRAM,EXPB,BUS一系列功能引脚。

晶振电路是用来向NP或电路提供工作时钟,关系到整个系统能否正常工作,型号IXP425芯片需要外界提供的参考时钟,内部锁相倍频后获取相应的工作频率。可使用3.3MHZ的无源晶振或有源振荡器;所述晶振电路包括晶振器,分别连接于晶振器(XTAL)上的电容C1,电容C2,以及串联连接在晶振器两端的OSC端。

所述复位电路是用于确保的可靠复位逻辑,为了确保系统的可靠性,使系统每次都能正确复位,利用了MAX6719和MAX6355的两个电源监控复位电路串联;MAX6719对3.3V电压信号和1.3V电压信号进行检测,当电源电平稳定后640ms释放复位信号,经SN74LVC1G07缓冲器电平转换后输出PWRON RST-N,1.3V输入端,MAX6355的复位输入端与MAX6719的复位输出相连,当MAX6719释放复位信号后500ms,触发RESET-IN-N复位信号,从而确保可靠的复位时序,同时MAX6355也提供了一个手动的复位信号输入端,可作为手动的SYSTEM RESET。

FLASH MENORY模块是由型号INTEL E28F128J3A-150的芯片构成,该FLASH MENORY模块是8MX16位0.25um工艺的FLASH,ROM,采用56TSOP封装,可以以8位或16位模式工作,工作电压为2.7V一3.6V,仅需3V电压就可完成编程和擦除,满足我们的工作条件,由于采用16位数据总线,则10K电阻将引脚上拉。

SDRAM模块是以型号IXP425芯片构成,该型号IXP425芯片提供PC133总线的SDRAM控制器,支持两个Bank,8M-256M的SDRAM容量;与FASH存储器相比较,SDRAM控制器不具有掉电保持数据的特性,但SDRAM控制器操作都是由时钟作为同步,存取速度大大高于FASH存储器,数据吞吐量更大,且具有读写的属性,因此,SDRAM控制器在系统中主要用作程序的运行空间,数据及堆栈区。

当系统启动时,首先MCU从FASH存储器的起始地址读取启动代码,在完成系初始化后,程序代码一般应调入SDRAM控制器中运行,以提高系统的运行速度,同时,系统及用户堆栈、运行数据也都放在SDRAM控制器中;核心板采用单Bank,两块32MB的SDRAM构成SDRAM存储器系统;芯片选取HYnix公司的HY57V5161620BT,54TSOP封装,兼容LVUUL接口,支持自动刷新(Auto-Refresh)和自刷新(Self-Refresh),16位数据宽度,每块的存储容量为4位BankX4MX16位(32MB),每个Bank为8MB字节,Bank之间可以通过地Bank址来选择;用两块HY57V5161620BT构建32位的SDRAM存储器系统,应该己经可以满足系统运行和普通应用程序的需要;如需扩展,则可直接将两块芯片替换为16位64MB容量的SDRAM内存颗粒。

扩展接口提供了两个UART接口,支持上至921kbps的传输速率;在核心板上,将另一个从扩展插座上引出,提供串行字符终端的调试功能,选用了普通的MAX3232芯片,实现低速的consoleUART功能。

所述快速软件分组交换器包括Linux的IP转发机制,无线或有线透明网桥,源MAC地址防火墙,NAPT的实现模块,TCP/UDP分组处理器,校验和检测的修正器,数据结构。

Linux的IP转发机制包含快速交换构架,以FASTPATH芯片为原型,实现了独立于原有IP转发机制的快速交换构架;就是在IP分组处理的底层将分组取出,交给自行实现的网络功能模块,根据需要对分组进行交换或者路由操作;实现方案为,保持分组接收的底层操作不变,在netif receive skb函数中设置钩子函数,在分组被递交给ip-rcv函数之前,取出分组,交给自行实现的快速交换构架;快速交换构架对分组进行分类处理,如果目的地址为本机,则不做任何操作,直接将分组数据交还给本机协议栈,如目的地址为同一网段内的另外主机,则判断:如位于网络的同一侧或同属于无线网段或同属于有线网段,则将该分组数据丢弃,如不是,则执行无线或有线之间的桥接功能,将分组在无线网和有线网之间进行转发;如目的地址不是局域网内的主机,则需进行到广域网,并执行实现广域网合法的共享,最后将分组通过广域网接口进行转发。

当网卡接收到一个分组时,对CPU产生一个硬件中断。CPU调用网卡驱动中的中断服务程序(ISR),由ISR通过I/O操作将分组读入内存,并将分组封装为Llnux通用的网络缓存格式sk-buff,调用netif-rx将该入Bacjlog队列并置NET-RX-SOFTIRQ软中断位。至此硬中断处理程序结束,等待CPU对分组进行进一步处理。当CPU发生进程调度时,会检查是否有软中断发生,由于此前NET-RX-SOFTIRQ被置位,则进入相应的接收处理程序net-rx-action。net-rx-action通过dev-poll方法间接调用netif-receive-skb函数,在此函数中,根据分组的协议类型选取ip-rcv作为分组的处理函数。继而由ip-rcv首先对分组进行检查,如分组长度、Checksum是否正确,如果正确,则判断该分组属于发往本主机或另外主机,如目的地址为本主机,则递交给ip-local-deliver交由上层协议处理,如目的地址为其他主机,则调用ip-forward将该分组进行转发。ip-forward在作TTL自减等必要操作后,将数据分组交给ip-forward-finish函数;ip-forward-finish随即调用ip-send继而调用ip-finish-output,ip-finish-output2,最终由ip-finish-output2调用设备的dev-queue-xmit,将数据交给相应的发送设备,由该设备完成数据链路层的相关操作后,将分组在网络上发送出去。

无线或有线透明网桥是指用于连接两个子网的网络设备,使用于Ethernet/IEEE802.3网络中实现对网络拓扑的扩展,标准的无线或有线透明网桥包含有对分组的混杂模式的接收,暂存与转发模块,MAC地址学习或过滤功能模块,生成树算法的支持模块。对分组的混杂模式的接收,暂存与转发模块:网桥两个端口连接了两个LAN,当网络上的主机P需要向网桥另一端的主机Q发送分组时,由于网桥的透明性,主机P如同在单个LAN的情况一样,将分组在网络上发送;当网桥接收到该分组时,则将该分组暂存于网桥的缓存中,同时侦测Q端网络的占用情况,当链路空闲时,将分组发送给Q;除了对分组的延时特性进行修改之外,网桥不会对分组的内容进行改写,如源地址,网桥实现了对分组的转发,达到了扩展局域网络的容量的目的;但是与另一类网络设备所不同的是,Repeater仅对网络两侧的数据进行简单的复制,不对分组进行缓存,也不涉及对另一端网络链路占用状况的侦测,因此容易引起链路占用的冲突,所以采用了独立于内核转发机制的快速分组交换路由架构,对于分组的接收、暂存和转发就是基于该架构实现;为了实现网桥功能,网络接口设备设有被置于混杂模式,所谓混杂模式,就是指网络接口设备对网络上接收到的所有分组,无论是目的地址为本机或另外的主机,均将接收并递交给上层进行处理;所述非混杂模式,仅接收目的地址为本机的分组或广播分组,待接收到分组后的底层操作,与Linux的固有操作一致,直到将分组相应skb的结构递交给netif receive skb函数;fastpath hook函数指针将截取,进行快速的交换路由处理。

对于网桥操作,接下来所需进行的就是分组的交换。首先将sbk结构入内核中switch backlog队列,等待作进一步的交换处理;所谓交换就是根据分组的目的MAC地址将分组从合适的端口发送出去,具体的发送端口选择机制,将MAC地址学习或过滤功能模块完成;假设转发端口已确定,则交换路由模块调用dev-queue-xmit将该skb递交到相应端口的发送队列中;接下来的处理由相应的网卡驱动程序完成,当链路空闲时,将该分组发送出去;网桥操作所需的接收、暂存、转发操作均已完成,而且由于在Linux的网络协议栈底层将分组取出作交换操作,提高了分组处理的灵活性和效率;

所述源MAC地址防火墙包含无效MAC地址过滤模块,MAC地址充许列表模块,MAC地址阻止列表模块。为了减少分组的转发量,减少网络的不必要负荷,当网桥接收到一个分组时,需要根据分组源目的MAC地址信息对分组的转发进行判断;如分组源目的MAC地址在同一个子网段内,则分组不需要进行转发;如不在同一个子网内,则需要根据目的地址MAC判断转发端口。为了实现此目的,有静态指定子网号,人为分配主机IP地址段等一系列方法,然而较为常用的是采用网桥自动地址过滤学习的方式。

网桥以混杂模式监听网络数据,将网络上的所有分组接收以备下一步处理;对于每一个接收到的分组,网桥将分组的源地址和接收该分组的端口号一起存入网桥的相应缓存结构中(此处称station cache)。

同时对于每个接收分组,网桥以分组的目的MAC地址为键值,在上述的bridging-cache中查找源MAC地址与之对应的记录;如该地址在station cache中不存在,网桥将该分组在除接收端口之外的其他端口均进行转发操作;如在bridging-cache中查找到对应项,则判断接收端口与欲发送端口是否一致,如为同一端口,则将该分组丢弃,称过滤操作(filter),否则将分组在该端口上进行转发。

网桥定期对bridging-cache中的不活跃项进行清理,删除在一定时间内未发送接收分组的主机,称之为过滤表项的老化操作(aging)。一般基于通用CPU的网桥设备,均通过软件的形式加以实现,通过在内存中存贮相应的hash表作为station cache的实现形式,并通过编写相应的软件代码执行相关的MAC地址学习或过滤老化操作。IXP425的网络处理器针对底层网络处理提供了硬件上的支持,其中就包括MAC地址学习过滤特性。因此,我们可以利用的此项特性,实现高效率的网桥操作。

对IXP425的硬件相关网络处理功能的利用,通过调用Inter Access,Library来得以实现。Inter Access,Library又根据功能的不同分为IxCrypoAcc IxHssAcc IxEthAcc,IxEthDB等API组件。与MAC地址过滤学习相关的功能,主要由IxEthAcc,IxEthDB实现。IxEthDB的MAC过滤学习子系统由基于XScale核的MAC软件过滤学习数据库和基于以太网NPE硬件的MAC过滤学习树两个主要部分组成;基于XScale核的MAC软件过滤学习数据库以下简称为XScale Learning Database,基于以太网NPE硬件的MAC过滤学习树简称为NPELearning Tree。学习过滤功能的实现,既可以通过IxEthDB APT向软件基于XScale核的MAC软件过滤学习数据库添加条目,也可以由NPE动态学习在NPE Learning Tree中创建条目。XScale Learning Database

是NPE Learning Tree的上层数据结构,所有的NPE Learning Tree条目均定时汇聚到XScale Learning Database中,以保持整个MAC Learning/Filtering结构的整体一致性。IXP425 Etherner NPE提供了对接收到的以太网帧进行源MAC地址学习的功能。当NEP的MAC学习过滤功能被激活时,每当NPE接收到一个分组,都将自动对其源MAC地址进行学习,将源MAC地址与接收端口号一起通过IXOSAL MBUF传送给XScale核,由EthDB组件将其填入XScale Learning Database。同时,NEP可以对目的主机位于同一个LAN上的分组进行过滤。当NPE的MAC学习过滤功能被激活时,每当NPE接收到一个分组,都将自动提取目的MAC地址,与NPE Learning Tree中的项进行比对,如发现接收端口号与对应项的接收端口号一致,则说明目的主机和发送主机位于同一个LAN,NPE会自动将该分组丢弃,避免进行额外的处理。对于MAC条目的老化操作,IxEthDB也提供了相应的支持。XScale Leaning Database会定期对MAC过滤表项进行检查,如某些MAC过滤表项己经处于不活跃状态,则自动将其从Database和Learning Tree中删除,不需要用户程序的介入。由于IPX425对于MAC学习过滤功能的硬件支持,不仅可以省去对MAC学习过滤功能的软件实现,而且由于NPE的参与,避免了不必要的软件操作,降低了对CPU和其他资源的占用,提高了操作的效率。透明网桥主要就是基于IXP425的硬件支持,利用EthDB的相关API实现,包括对NPE的利用,非NPE端口的处理,转发端口的确定。

NAPT的实现模块是网络地址转换(NAT,Network Address Translation)的一种实现形式,与基本的NAT一样,NAPT实现私网IP地址与公网IP地址之间的映射,从而达到共享有限公网IP的目的,与基本的NAT所不同的是,NAPT除了利用IP地址之外,结合了TCP/UDP端口,ICMPID的端口号信息,从而实现了更高的复用效率。为了更好的解释NAPT的内容,以一个拥有私有局域网和单条广域网接入线路的用户为例。接入路由器占用由接入服务商提供的唯一合法IP地址,而内部局域网主机采用私有的IP地址。采用NAPT技术,可以实现私有IP地址和端口号与合法IP地址端口号之间的一一映射关系,从而实现内外网之间的透明访问。

例如:私网内采用10.0.0.0/8地址段,接入服务器的广域网地址ISP为所提供的公网IP:138.76.28.4。当私网中的10.0.0.10主机需要向远端主机138.76.29.7发送TELNET分组时,以目的主机IP地址138.76.29.7作为分组的目的IP地址,将自身的10.0.0.10作为源地址。如路由器不对分组作任何修改而直接发送,远端主机将无法对此请求作出有效应答。因此,路由器将对此分组进行改写操作,先将分组的IP和TCP头部中的源IP地址10.0.0.10和源TCP端口号3017替代为合法公网IP地址138.76.28.4以及按一定规则指派的源TCP端口号不失一般性,然后在公网上转发。随后相应TELNET的应答分组到达NAPT路由器后,路由器根据内部的状态表查询到发起TELNET连接的主机地址IP和TCP端口号,完成目的地址和TCP端口号的改写后,将数据分组递交给内部主机10.0.0.10的3017端口,从而完成连接的建立。改写操作独立于内部主机以及远端主机,因而是完全透明的。由此,仅TCP/UDP连接是被允许的,而且连接必须从内部网络发起。然而实际应用中,一些服务如DNS等需要支持由外部发起的连接,这可以通过静态地指定端口映射而得以实现。

除了TCP/UDP连接以外,实用的NAPT路由器还需要支持ICMP报文。ICMP查询分组中的ICMP ID,通常为发起ICMP查询的进程编号,在各个主机之间可以认为是各不相同的,而ICMP应答分组中的ICMP ID则根据查询分组IP的原样复制。因此,可以根据局域网IP地址,ICMP ID与公网IP地址,ICMP ID的映射唯一确定ICMP请求应答的对应关系,同时也可以将ICMP ID与TCP/UDP端口号作类似的处理。

对于NAPT路由器而言,所要完成的工作就是实现合法公网IP地址,端口号与内网IP地址,TCP/UDP端口号或ICMP ID之间的映射关系,根据映射关系进行分组的改写和转发。所述的映射关系包括地址绑定,地址对应关系的查找和转换,地址绑定的解除。

由于NAPT需要实现对单个IP地址的共享,因此需要将内网IP地址,加上端口号绑定到唯一确定的外网IP地址端口号上,同时为了避免不同主机之间的冲突,不能将目的IP地址,目的端口号和源TCP端口号均相同的连接绑定到一个外网IP和端口号上。对每一个到达的分组,NAPT路由器都需要对进行分析,查看其是否属于某个己有连接。对于同一个连接的一系列分组,需要将映射到同一个外网IP和端口号上。对于不属于己有连接的分组,则需要建立新的映射关系,同时避免与己有映射之间的冲突。当一个连接己经停止活动一段时间后,一般认为该连接已经终止。如不对无效连接进行清理,在一定时间以后所有端口将被消耗殆尽。为了有效的利用端口资源,需要定时地对无效连接进行清理,解除己有的地址绑定,实现的NAPT功能,支持TCP,UDP协议,可以满足实际的接入服务器应用需求。NAPT所要完成的工作就是实现合法公网IP地址,和端口号,与内网IP地址,TCP/UDP端口号或ICMIP ID之间的映射关系,并根据映射关系进行分组的改写和转发。可见NAPT状态表是整个实现方案的核心。由于需要处理的分组数量巨大,要求NATP状态表结构要有尽可能高的查找效率,同时避免可能出现的端口冲突现象。采用HASH表,动态链表的方式实现NAPT状态表结构,针对内外两个分组流向,在内存中维护INBOUND和OUTBOUND两张单独的查找表结构。INBOUND指数据分组由外网进入内网,OUTBOUND指数据分组由内网进入外网。

ICMP是TCP/IP协议族中的一个子协议,用于IP主机、路由器之间传递控制消息。控制消息是指网络是否连通,主机是否可达,路由是否可用等网络本身的消息,这些控制消息虽然并不传输客户数据,但却对于客户数据的传递起着重要的作用。在TCP/IP网络中所有的设备必须实现ICMP。ICMP消息通过IP数据分组来传送,ICMP定义了很多信息类型,例如:目的不可达,TIL超时,参数问题,源压抑,回显/回显应答,时间戳/时间戳应答,信息请求/信息应答,地址请求/地址应答。NAPT路由器必须要对ICMP分组进行有效的处理。ICMP协议有查询报文(ICMP Query)和差错报文(ICMP Error)两种报文类型。

TCP/UDP分组处理器为,TCP和UDP,两者均为INTERNET上所采用的传输层协议;TCP为Transmission Control Protocol的缩写,所述的UDP为User Datagram Protocol的缩写。

校验和检测的修正器的又名为校验和(Checkksum)的修正,Checkksum是网络协议中的一个重要概念,用于确保数据的无差错传输IP头部,ICMP/TCP/UDP头部均包含有自己的校验和。由于NAPT操作中需要对这些头部的IP地址和端口号信息进行改写,必然要对由此引发的Checkksum值改变进行修正,否则数据分组将被后续的网络设备所丢弃。由于NAPT路由器需要进行大量的分组改写和转发操作,如何提高Checkksum计算的效率是关系到系统性能的重要问题。

快速Checkksum计算提高计算的效率,最直接的方法就是对计算的代码进行优化,或者直接采用机器相关的汇编实现。根据Xscale指令的特点,快速计算Checkksum的代码,采用内联函数实现和内嵌ASM提高计算效率。即使采用快速算法逐一对Checkksum进行重新计算,由于所需处理的分组量较大,带来的计算开销仍然很大从而降低系统性能,因此需要利用快速的Checkksum算法,仅对分组改写引起的Checkksum增量进行计算。RFCI624标准定义用于提高Checkksum计算效率的Incremental Update,本软件中最后采用了该算法实现的修正Checkksum。

由于仅拥有一个合法对外IP地址,而内部主机数量众多,可供利用的IP/端口映射是相当有限的,必须定时地对其进行清理,释放不活动的映射关系。本设计中采用了lru队列和定时老化的实现方案,有效地实现了定时清理过期映射关系的目的。LRU算法思想是把最近最不经常使用的表项删除。具体的来说,NAPT维护一个NAT项的老化队列(Aging Queue),当每一次查找或插入一个NAPT项时,该NAPT项就被置入队列末尾,这样一来,最近所访问的NAT项总是处于老化队列的末尾,而最后未被访问的项则位于队列的头部,整个老化队列事实上是按照最后访问时间的顺序排列。NAPT专门创建一内核线程定时从队列头部开始遍历整个老化队列,将一定时间内未活动的NAT项剔出队列,并且从INBOUND和OUTBOUND表中删除,从而实现映射关系的释放。所述数据结构有nat-t,pkt-info-t等,nat-t是NAPT的核心功能结构,存储NAPT相关的IP/端口信息,链表节点,统计信息等等。

首先分析了网络处理器和Linux IP转发机制的技术特点,在本设计中应用了基于FASTPATH的快速软件分组交换器,基于Intel Library的透明网桥和源MAC地址防火墙的实现,针对合法共享问题,提出了基于的解决方案,并以内核模块形式实现,解决了不仅具有网络设备高速处理性能,而且还具有网络设备实现的灵活性能。

综上所述,因所述的路由器主板是由型号为INTEL IXP425的网络处理器构成;所述的网络处理器包括核心控制处理器(INTEL XSCALE CORE),用于负责普通数据分组提供快速通道的网络处理引擎模块(NETWORK PROCCSSOR ENGINES);所述的网络处理器运行LINUX操作系统平台内,该LINUX操作系统平台内部设置有用于提供分组转发的效率和灵活性的快速软件分组交换器。使用时,利用网络处理器具有支持高速分组处理,支持不断变换高层网络服务性能,具有高度灵活性,基于Linux系统作为操作系统平台具有完整的IP协议栈,实现了Linux内核态的快速软件分组交换器,使得提高分组转发的效率和灵活性,可以实现大部分的网络功能。因此,从而达到不仅具有网络设备高速处理性能,而且还具有网络设备实现的灵活性能。

以上参照附图说明了本实用新型的优选实施例,并非因此局限本实用新型的权利范围。本领域技术人员不脱离本实用新型的范围和实质内所作的任何修改、等同替换和改进,均应在本实用新型的权利范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1