三层交换机处理器收发包相关问题分析

发布者:AngelicGrace最新更新时间:2007-04-27 来源: 小熊在线关键字:定时  驱动  控制  存储 手机看文章 扫描二维码
随时随地手机看文章
在当前的三层以太网交换设备中,报文的二层交换和三层路由主要由交换芯片和网络处理器完成,CPU基本上不参与交换和路由过程,主要完成管理和控制交换芯片的功能[1]。

在这种情况下,CPU的负载主要来自以下几个方面:协议的定时驱动、用户的配置驱动、外部事件的驱动。其中,外部事件的驱动最为随机,无法预料。典型的外部事件包括端口的连接/断开(Up/Down),媒体访问控制(MAC)地址消息的上报(包括学习、老化、迁移等),CPU通过直接存储器存取(DMA)收到包,CPU通过DMA发包等。

在以上所列的外部事件中,又以CPU通过DMA收到包之后的处理最为复杂。因为数据包由低层上送到上层软件时,各协议的处理动作千差万别,可能会涉及到发包、端口操作、批量的表操作等。所以,只有处理好CPU的收发包的相关问题,才能使相关的上层协议正常交互,从而使交换机稳定、高效地运行。

  1 可能涉及到的问题

以下就CPU收发包可能涉及的各个方面分别说明。

下面的分析都基于典型的CPU收发包机制:CPU端口分队列,通过DMA接收,采用环形队列等。

  1.1CPU的负载与收包节奏控制

根据交换机处理数据包的能力,决定单位时间上送到CPU的包的个数;决定了单位时间上送多少个包给CPU后,再考虑上送数据包的节奏。

假设通过评估,确定了单位时间上送CPU数据包的上限,例如每秒x个数据包。

图1给出了两种典型的处理手段:匀速上报CPU、突发(Burst)方式上报CPU,下面分别分析一下这两种方式的优劣:

  (1)匀速上报CPU

数据包匀速上报CPU时,对CPU队列的冲击较小,而且对CPU队列的缓冲能力要求不高,CPU队列不必做得很大。

  (2)突发(Burst)方式上报CPU

交换芯片(采用ASIC)一侧的硬件接收队列和DMA内存空间中的环形队列,一起赋予了交换机一定的缓冲能力(针对上送CPU的数据包)。利用这个缓冲能力,我们可以把控制周期适当放长,并设定控制的粒度(单位控制周期内CPU收报个数的上限),采用类似于电路中负反馈的机制动态地使能和关闭CPU收包功能。这样就在宏观上实现了对数据包上送CPU速率的控制。另外,如果交换芯片(采用ASIC)支持基于令牌桶算法的CPU端口出方向流量监管或整形功能[2-3],且监管或整形的最小阈值可以满足CPU限速的需要,则可以利用这个功能控制数据包上送CPU的节奏,减小CPU的负载。这样软件的处理就简化了很多。

  1.2CPU端口队列的长度规划

如果仅考虑交换机CPU端口的缓冲能力,CPU端口队列当然是越长越好,但是必须兼顾对其他功能以及性能的影响。针对不同的ASIC芯片,需要具体问题具体分析。

  1.3零拷贝

零拷贝是指在整个数据包的处理过程中,使用指针做参数,不进行整个数据包的拷贝。这样可以大大提高CPU的处理效率。

使用零拷贝后,会一定程度上降低软件处理的灵活性,我们会面临到这样的问题:如果协议栈需要更改一个数据包的内容,会直接在接收缓存(buffer)上修改,但是如果需要在数据包中删除或添加字段(例如添加或删除一层标签(tag)),即数据包的长度需要变化时,应该如何处理。

添加或删除字段,必然会导致数据包头一侧或包尾一侧的位置发生移动,如果包尾一侧移动,问题比较简单,只要数据包总长度不超过buffer边界即可。由于通常此类操作都靠近包头的位置,如果包头一侧移动,效率会比较高,所以协议栈在处理时可能更倾向于在包头一侧移动,这时就需要驱动在分配buffer时做一些处理:

(1)接收数据包时,头指针不能指向buffer边界,需要向后偏移一定裕量,同时单个buffer的大小也必须兼顾到最大传送单元(MTU)和该裕量。

(2)释放数据包时buffer首指针需要作归一化处理(如图2所示)。

  1.4中断/轮询

目前交换机涉及到的外部中断主要由交换芯片产生,交换芯片主要的外部中断包括DMA操作(如收到包、发包结束、新地址消息等等)和一些出错消息。如果中断请求过于频繁,中断服务程序(ISR)和其他进程之间频繁地上下文切换会消耗大量CPU时间。如果有持续大量的中断请求,CPU会始终处于繁忙状态,各种协议得不到足够的调度时间,从而导致协议状态机超时等严重故障。

为了避免事件触发频率不可控的问题,可以使用轮询机制,通常的做法是用CPU定时器触发原先由外部中断触发的ISR,由于定时器触发的间隔是固定的,所以ISR执行的频率得到了控制,避免了上述的问题。

轮询和外部中断相比,只是节奏可控(外部中断的节奏取决于外部事件发生的频率,CPU不可控)。但是,轮询也有其不可避免的缺点——响应慢。不能满足某些实时性要求 较高的功能。另外,人们会发现用ping命令检测交换机3层接口大包时,使用轮询方式的交换机比使用中断方式的交换机的时延明显要大。

如果能通过某种机制,避免持续、大量的中断请求,则既可以保证CPU不会过于繁忙,又保留了中断实时处理的优点。

典型的会产生大量中断事件的行为是CPU接收数据包和MAC地址消息上报。以收包为例,在前面“CPU负载与收包节奏控制”部分提到的Burst方式就是根据实时的流量,控制接收DMA的开关,这样就达到了使中断源受控的目的,这种类似负反馈的机制可以很好的避免持续的中断事件上报CPU。

总之,轮询控制简单,但实时性较差;中断实时性好,但是使所有的中断源受控有一定难度。在系统初始设计阶段,我们需要综合考虑需求以及芯片对外部事件的处理方式,来决定采用中断或者轮询方式,或者两者兼用。

  1.5多进程环境中外部事件的处理机制

常见的外部事件(中断事件)包括收到包、包发送完(这里指的都是CPU收发包),包括收到MAC地址消息、MAC表操作完成等。

如果把各类中断事件的处理放在一个进程里,就人为地造成了各个事件耦合性增强,增加了各种事件相互制约的机会。

在多任务操作系统中,为了能更灵活地处理各个事件,减少事件之间的子相互制约关系,各种事件应当尽可能地单独起进程,或者根据处理方式的不同划分为几个进程,至少用单个进程来处理是不合适的。

  1.6协议包保护和CPU保护

对于基于ASIC的交换机,协议包保护是指利用ASIC芯片的某些机制,把特定的协议包指定到特定的端口队列上去,保证其经DMA队列上送CPU的优先级;CPU保护是指尽量减少不必要的数据包对CPU的冲击。

实现协议包保护的必要条件:

  (1)CPU端口必需支持严格优先级(SP)或者带权重的罗宾环(WRR)的调度算法。

  (2)交换芯片必需具有较强的流分类能力,且可以给不同的流指定不同的端口队列。

  在系统方案设计时我们需要兼顾对协议报文的保护和对CPU的保护,应该尽量做到:

  (1)保证CPU收包通道和发包通道的畅通。

  (2)精确匹配,按需选取。充分利用ASIC芯片的访问控制列表(ACL)功能,尽量精确地匹配各类协议报文。必要时需要匹配到4层字段[4]。

  实现以上几点时,应兼顾其他功能及整机性能的限制。

  1.7效率降低的避免

在多任务操作系统中,各种事件需要用尽量短的时间片处理完成,以保证其他任务有足够的机会得到调度。所以我们在调用任何函数时都要考虑其执行效率。除了算法本身会影响执行效率之外,频繁地访问某些硬件也相当耗时,而这一点往往容易被忽略。

  2 结束语

随着以太网相关技术的发展,交换芯片和网络处理器的处理能力不断被提升;相比之下,数据交换设备中CPU处理性能的提升程度远远不及交换芯片和网络处理器;同时数据交换设备支持的业务种类也在不断增加,对CPU承载的业务量也有了更高的要求。在这种情况下,交换设备容量以及支持业务种类的大幅提升和有限的CPU资源之间的矛盾会日益凸显。因此,做好CPU和交换芯片以及网络处理器接口的缓冲管理、队列调度以及流量监管,合理利用CPU资源,是保证数据交换设备安全、稳定运行的前提,也是目前及将来数据交换设备开发的重要课题。

关键字:定时  驱动  控制  存储 引用地址:三层交换机处理器收发包相关问题分析

上一篇:基于GSM网络的远程自动抄表系统的设计与实现
下一篇:符合Rx阻塞模板和灵敏度要求的TD-SCDMA RD V2.1设计

推荐阅读最新更新时间:2024-05-07 15:58

2SD315A在驱动大功率IGBT中的应用
引言 IGBT常用的驱动模块有TLP250,以及EXB841/840系列的驱动模块。但在燃料电池城市客车DC/DC变换器的研制过程中发现,由于车载DC/DC变换器常常工作在大功率或超大功率的状态中,而处在这种状态下的IGBT瞬时驱动电流大,要求可靠性要高,使得传统的驱动电路已经不能满足其使用要求,经过研究分析,选用瑞士CONCEPT公司生产的用于驱动和保护IGBT或功率MOSFET的专用集成驱动模块2SD315A作为大功率IGBT(800A/1200V)的驱动器件,该驱动器集成了智能驱动、自检、状态反馈、DC/DC电源及控制部分与功率部分完全隔离等功能于一体。经过车载90kW DC/DC变换器实际道路工况运行实验表明,效果良好。
[电源管理]
车身控制前景好 智能机电一体化是趋势
传统的线缆控制方式已经难以满足车身控制的需求,目前车身控制方式从分散式走向集成式和分布式,同时智能化、网络化、人性化、安全化、机电一体化将成为车身控制的发展趋势。   在2008年年初的时候,汽车业界曾一直认为中国汽车产量将突破1000万辆,而突如其来的世界金融危机让业界大跌眼镜,今年中国汽车产业产量约960万辆,同比增速约10%,而全球汽车产量却出现下滑现象。但是汽车产量的下滑却不等同于汽车电子的下滑,尤其是人们对汽车行驶舒适性要求的提高,推动了汽车车身控制技术不断升级,前景看好,甚至有人称金融危机为汽车电子领域技术发展注入了一针兴奋剂。传统的线缆控制方式已经难以满足车身控制的需求,目前车身控制方式从分散式走向集成式和分布
[汽车电子]
AT90S8515单片机对LED数码显示管的控制设计
一、电路 附图是AT90S8515控制数码显示的电路略图(图中只画出了与数码管接口的电路,其余接线略)。单片机的PBO~PB7接LED共阴数码管的a~h脚,控制段码;单片机的PDO—PD5分别接六只LED数码管DO~D5的共阴极,控制位码。其中PDO~PD5是通过SL-AVR开发实验器上的LED数码管短路块DLED接至数码管DO—D5的。 二、字符8右循环移位显示程序 在SL-AVR开发实验器LED上实现字符8右循环移位显示的源程序清单如下: 第1行表示程序中包含定义AT90S8515特殊功能寄存器的头文件8515def.inc,指明所用器件为AT90S85150接着定义寄存器r16、r22分别为暂存器temp、sc
[单片机]
AT90S8515单片机对LED数码显示管的<font color='red'>控制</font>设计
士兰微电子推出6-36V输入升降压型大功率LED驱动芯片SD42560
继成功推出应用于MR16射灯的6-36V输入1A大功率迟滞型LED驱动芯片SD42525和应用于LED路灯/照明灯的6-60V输入1A大功率LED驱动芯片SD42528后,杭州士兰微电子公司近期又推出了一款6~36V输入,升降压型大功率LED驱动芯片SD42560。该芯片是升降压、恒流型LED驱动电路,采用了士兰微电子专为绿色节能产品所开发的高性能BCD工艺技术,单芯片集成LDMOS功率开关管,内置PWM调光模块和多重保护功能,具有较高的转换效率,适合于MR16等多种LED照明领域。 由于是电流模式的LED驱动电路,SD42560因而具有快速的瞬态响应,环路稳定性设计简单,恒流特性好,可应用于降压(Buck)/升压(
[电源管理]
士兰微电子推出6-36V输入升降压型大功率LED<font color='red'>驱动</font>芯片SD42560
PLC控制伺服电机准确定位的方法
  在自动化生产、加工和控制过程中,经常要对加工工件的尺寸或机械设备移动的距离进行准确定位控制。这种定位控制仅仅要求控制对象按指令进入指定的位置,对运动的速度无特殊要求,例如生产过程中的点位控制(比较典型的如卧式镗床、坐标镗床、 数控机床 等在切削加工前刀具的定位),仓储系统中对传送带的定位控制,机械手的轴定位控制等等。在定位 控制系统 中常使用交流异步电机或步进电机等 伺服电机 作为驱动或 控制元件 。实现定位控制的关键则是对 伺服 电机的控制。由于可编程控制器( PLC )是专为在工业环境下应用而设计的一种工业控制计算机,具有抗干扰能力强、可靠性极高、体积小等显著优点,是实现机电一体化的理想控制装置。本文旨在阐述利用PLC控制
[嵌入式]
PWM里的控制
前言 一、PWM简介 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 二、应用领域 1.调节电机转动,调节变频器。 2.可以用来控制LED灯的亮暗变化。 3.控制无源蜂鸣器发出简单的声音 4.以及实现功率继电器的线圈节能。 三、频率,周期,占空比 1.频率 pwm的频率是指每秒钟信号从高电平到低电平再回到高电平的次数。 例如: 50HZ 1秒中高电平到低电平再回到高电平的次数为50次。 100HZ 1秒中高电平到低电平再回到高电平的次数为100次。
[单片机]
PWM里的<font color='red'>控制</font>
实例讲解PLC控制系统设计步骤
系统设计的主要内容: ① 拟定控制系统设计的技术条件 ② 选择电气传动形式和电动机、电磁阀等执行机构 ③ 选定 PLC 的型号 ④ 编制 PLC 的输入 / 输出分配表或绘制输入 / 输出端子接线图 ⑤ 根据系统设计的要求编写软件规格说明书,然后再用相应的编程语言(常用梯形图)进行程序设计 ⑥ 了解并遵循用户认知心理学,重视人机界面的设计,增强人与机器之间的友善关系 ⑦ 设计操作台、电气柜及非标准电器元部件 ⑧ 编写设计说明书和使用说明书 PLC 硬件系统设计 (1) PLC 型号的选择 ① 对输入 / 输出点的选择 ② 对存储容量的选择 ③ 对 I/O 响应时间的选择 ④ 根据输出负载的特点选型 ⑤ 对在线和离线编程的选择
[嵌入式]
实例讲解PLC<font color='red'>控制</font>系统设计步骤
无需更换电池的数字倒计时定时
只需 MCU、LCD、32kHz 晶振以及一个电阻器即可构成一部基本的倒计时定时器,而且只需一颗普通的纽扣电池即可实现连续超过 10 年的工作时间,如图 1 所示。例如,此类倒计时定时器可用于餐馆提供服务时间保证,服务人员按下一个按钮即可启动倒计时定时器,微控制器开始自动倒计时,时间长短可预先设定,倒计时过程则会显示在显示屏上。如果服务人员在计时结束前尚未向客人提供服务,那么显示器就会闪动显示超时信息,提示未达到服务保证。有两大关键性设计可最小化功耗,并尽可能延长电池使用寿命,一是认真选择电池,二是充分利用 MCU 的低功耗模式。 我们之所以选择 CR2032 纽扣式锂电池,主要是因为它占地较小,可以支持便携式应用,放电曲线较平,
[手机便携]
小广播
最新网络通信文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved