| RSS
深圳电器感厂家
您当前的位置:电感器制造商 > 新闻中心

基于LWIP的ICMP路由重定向改进

时间:2015-05-29 17:33:36  来源:  作者:
LWIP(Light Weight Internet Protoco1)是瑞士计算机科学院(Swedish Institute of Computer Science)AdamDunkels等人开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。LWIP的含义是Light Weight(轻型)IP协议。LWIP可以移植到操作系统上,也可以在无操作系统的情况下独立运行。LWIP TCP/IP实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用。一般它只需要几十KB的RAM和40 KB左右的ROM就可以运行,这使LWIP协议栈适合在小型嵌入式系统中使用。比如,武汉大学的陈杰等把LWIP移植到了一个车辆监控终端系统当中,它可以实时采集车辆信息,在GIS地图上显示出车辆的位置,并根据需要对车辆进行调度;南京大学的方怀东等将LWIP移植到了DSP系统中,这个嵌入式系统用于视频的采集、处理与通信;Astechnix研究院的Jani Monoses将LWIP移植到了RedHats eCos;F1orian Schtdze则宣称他将LWIP移植到了DJGPP/MS—DOS系统以及Visual C++6.O/Win32平台。

1 LWIP设计思路
与许多其他的TCP/IP实现一样,LWIP也是以分层的协议为参照来设计实现TCP/IP。大部分的TCP/IP实现共模电感在应用层和底层协议层之间进行了严格的划分,底层协议之间可以进行或多或少的交叉存取;而LWIP在应用层与低层协议则使用了内存共享这种比较松散的通信机制。每一个协议作为一个模块被实现。LWIP采取将所有协议驻留在同一个进程的方式,以便独立于操作系统内核之外。应用程序既可以驻留在LWIP的进程中,也可以使用一个单独的进程。应用程序与TCP/IP协议栈通信可以采用两种方法:一种是函数调用,适用于应用程序与LWIP使用同一个进程的情况;另一种是使用更抽象的API。整个协议栈框图如图1所示。

由于在传输层UDP比TCP协议要简单得多,故仅以TCP为例。
在接收数据方面,链路层的ethernetifinpuIt()函数在收到数据包后,将IP包交付ip_input()函数,ARP包交付etharp_arp_input()函数处理。ip_input()则负责拆解IP包,将ICMP包交付icmp_input()函数处理,将TCP包交付tcp_input处理。tcp_input()负责收到的TCP包,完成TCP头部验证,放入相应的状态链,并交付tcp_process()处理。tcp_process完成TCP无限状态机的处理。tcp_receive()将收到的包放在接收队列中,这些接收队列中的数据最终被应用程序使用。
在发送数据方面,tcp_write()检查是否允许发送数据,当允许发送时,就调用tcp_enqueue()进行发送。tcp_enqueue()将数据放入发送队列。tcp_output()发送数据并在可能时捎带确认。ip_output_if()在接到数据后,填充IP头,交付netif一>output,即etharp_output()处理。etharp_output()判断是单播地址后,交付etharp_query()。etharp_query()填入源、目标mac地址,并最终交付low_level_output()发送。

2 ICMP层的不足
LWIP在ICMP层的处理流程如图2所示。

ICMP模块仅实现了echo_reply包的回应处理,显得过于简单。对小型的协议栈而言,其所在的网络环境相对简单,因而在大多数情况下都是适用的。
LWIP一般使用在终端设备上。终端设备所在的情形可作如下的划分:一是单网卡、单网关的情形;二是单网卡、多网关的情形;三是多网卡、多网关的情形。单网卡、单网关的情形是LWIP最适合的情形。因为LWIP本身没有实现路由缓存,单网关的情形恰好不需要路由缓存,因为此情形下网关总是唯一的,下一跳总是不变的。多网卡、多网关的情形可以看成是单网插件电感卡、多网关的特殊情形。
电感厂家 在单网卡、多网关的情形下,如果默认网关的下一跳不是最优下一跳,那么终端会收到一个路由重定向ICMP消息,告诉终端去往这个方向上,这个下一跳不是最优的,并给出最优下一跳。这就是所谓的路由重定向。如果终端一直不采用这个最优下一跳,那么每一个发出的非最优下一跳IP包都会收到路由器发来的一个重定向包。LWIP由于没有实现路由缓存,不能记录下网一体电感器关发来的最优下一跳,故对此消息的处理是忽略。忽略的结果是LWIP源源不断地收到重定向包,这个包会经过数据链路层、IP层,最终在ICMP层被丢弃,引起不必要的开销。


3 改进思路

改进的思路是在多网关情况下,处理ICMP包;但LW电感磁芯IP并没有路由缓存功能,所以需要引入路由缓存功能,将此重定向的路由记录下来,以使得下次可使用。为降低内存开销,可以在收到ICMP重定向包的情况下(此时表明是多网关情形,下一跳非最优),再开启缓存,缓存这个下一跳地址。如果一段时间不用这个缓存,则清理出去。当最后一条缓存也被清理后,就关闭缓存功能。这相当于一个自适应功能的路由缓存。在没有重定向消息时,使用原有的LWIP工作方式,不会引起额外的开销;在收到重定向消息时,开启这个缓存功能,以避免重定向消息引起的额外处理开销。当IP包的流向在一定时间内集中于少数几个目的地时,这种方法会特别有效。 1

正激变换器磁性元件除了变压器外,还有一个电感器,即扼流圈。一般的资料上都是从变压器开始算起的,但本人认为应该从功率电感器开始算起比较好,这样比较明了,思维贴片电感器打样可以比较清楚。因为正激变换器起

功率电感在某些情况下,电源电压VIN 并不稳定,比如在利用电池为系统供电时。无论采用什么电源,要让输出电流保持一个恒定水平,就必须使用独立于电源电压的一个参考电压VREF。在所有备有模拟数字转换

产品描述:非晶合金油浸式配电变压器室我公司根据市场需要及时推出的新一代节能、环保、免维护产品,可取代硅钢片铁芯配电变压器,用于户外或户内的配电网络系统。由于其突出的节能特点,受到了广大用户的欢迎。其性


上一篇: FPGA嵌入式系统 开发过程中的XBD文件设计
下一篇:功率电感器
来顶一下
返回首页
返回首页
相关文章
推荐资讯
电感数字转换器
电感数字转换器
相关文章
栏目更新
栏目热门