CN101136852B - 微引擎的深度包处理方法 - Google Patents
微引擎的深度包处理方法 Download PDFInfo
- Publication number
- CN101136852B CN101136852B CN200710052354A CN200710052354A CN101136852B CN 101136852 B CN101136852 B CN 101136852B CN 200710052354 A CN200710052354 A CN 200710052354A CN 200710052354 A CN200710052354 A CN 200710052354A CN 101136852 B CN101136852 B CN 101136852B
- Authority
- CN
- China
- Prior art keywords
- sop
- bag
- packet
- seop
- mailbox
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
微引擎的深度包处理方法,在微引擎处理数据包的过程中,除了按常规流程处理SOP,EOP微包外,引入SEOP(第二微包),作为数据包头协处理微包,利用内部邮箱中的第25位与SOP进行通信。在SEOP的处理过程中,将SOP,SEOP合并成一个新的128字节的SOP进行处理,处理时采用包首地址偏移的办法。处理完成后,通过对内部邮箱微包偏移数值的调整和对外部邮箱深度处理标志位的设置,通知后续处理线程。处理尾部微包(EOP)时,如果该包要交给Strong Arm核处理,并且通过外部邮箱得知该数据包的包头部分进行过深度包处理,那么逆向拷贝到与Strong Arm核通信的缓冲区的过程中,要减少一次拷贝操作。该方法能使微引擎处理任意深度封装的数据包,增加微引擎对复杂数据包处理能力,同时保证处理的效率和系统吞吐量。
Description
技术领域
本发明涉及高速网络领域的一种网络处理器中微引擎的深度包处理方法.
背景技术
在过去10年中,网络设备的研制开发和互连网的发展相互促进。早期的网络设备(例如网桥和路由器)主要由通用CPU和专用标准设备组成,功能依赖于软件设计,因此容易扩展,便于适应网络中出现的新协议和新业务。这种设计的缺点是处理能力低,无法适应网络传输技术的发展和满足附加性能的需求。随着网络规模和接口速度的增加,通用CPU对某些网络处理任务尤其是数据接收、交换转发等方面的处理性能难以满足要求,这就促使网络设备厂家开发出了基于内嵌专用集成电路(ASIC)的简单且具有固定功能的设备,例如第二层以太网交换机。这种ASIC设计方案能有效提高网络设备处理性能和速度,却降低了灵活性。后来在ASIC基础上又出现了交换套片构建方案,如第二层以太网“单片交换”设备。这种方案优化了硬件间的连接,提高了指令执行效率,但仍没有克服ASIC缺乏灵活性的固有缺点。当今网络规模和性能迅速增长,新业务接连出现,要求网络设备具有线速和智能的处理能力。网络处理器便是一种新兴、有效的统一解决方案,它适用于各层网络处理,具有ASIC高速处理性能和可编程特性,既能保证系统灵活性,又能完成线速处理数据包所要求的高性能硬件功能。
INTEL公司是网络处理和以太网互连领域的领导者和革新者。IXP1200是INTEL公司网络处理器产品,它具有强大的并行处理能力和良好的应用灵活性可以完成的分组交换处理功能,峰值带宽可达6.26GBPS,被业界认为是第一个真正的网络处理器。IXP1200网络处理器具有高性能的并行处理能力以及灵活的通信协议处理能力。IXP1200网络处理器由一个ARM V4结构的StrongArm核和六个独立的32比特可编程的RISC微引擎组成。StrongArm核主要用来进行管理控制一些复杂的任务,像地址学习、建立和维护路由表以及网络管理等操作。每个微引擎在硬件上可以支持四个线程,可用来高速转发数据包。IXP1200提供了IX BUS总线接口,通过IX BUS接口可以和以太网MAC芯片相连。MAC芯片接收来的数据包要送到微引擎,通过微引擎对数据包的处理来决定数据包是转发到其他以太网端口还是送给Strong Arm核来处理。
由于IXP1200的设计局限,微引擎对数据包只能按照以64字节为单位的微包进行处理,目前微引擎对数据包的处理主要是集中在第一个64字节,第一个64字节微包被称为SOP包,最后一个64字节微包被称为EOP包。因为在SOP里包含了传统的MAC帧头(14字节),IP头(20字节),TCP头(20字节),UDP头(8字节),在早期的网络应用中,微引擎通过处理SOP包,就可以获得数据包绝大部分信息:包括MAC地址,IP地址,端口号。但是随着网络业务的发展,出现大量的隧道业务的应用以及IP OVER BEARS的应用,导致数据包的有用包头部信息不在SOP中,更坏的情况是有用包头部信息跨越微包,即部分信息在SOP中,部分信息在64到128字节之间。由于微引擎是以微包为单位进行包处理,对这种情况无能为力,导致原来对SOP的处理流程失效。对这个问题解决方法当前主要是分为两类:一类是采用更为先进的第二代网络处理器,包括IXP2400,IXP2800等,这些处理器可以设置SOP的大小,也可以先将微包组好后再进行深度包处理;第二类方法是将这种深度封装的包交给StrongArm核处理,由于StrongArm核是将微包重组完成后才进行处理的,因此StrongArm核可以进行深度解包,依据解出的信息进行包处理。这两类方法都有很大的不足。对第一类方法,虽然IXP2400,IXP2800在大型电信设备中已经得到广范应用,但是在小企业和高校,从成本,性价比和产品成熟度的角度来说,IXP1200都是不可替代的产品,同时考虑软件产品移植性的代价,这类方法很难广泛实施。对于第二类方法,技术上由于微引擎同StrongArm核的通信已经在专利200410061108.8中得到很好的解决,很方便的可以实施,软件产品中也只需要增加一个CASE的跳转语句,但是该方法完全放弃了微引擎的强大并行处理能力,将包处理的重任交给StrongArm核,处理效率极低,因此该方法也不足取。
参考文献
1Intel,Inc.Intel IXP1200 Network Processor Datasheet
2Intel,Inc.Intel IXP1200 Network Processor Hardware Reference Manual
3Intel,Inc.Intel IXP1200 Network Processor Software Reference Manual
4Intel,Inc.Intel IXP1200 Programmer′s Reference Manual
发明内容:
本发明的目的在于提供一种微引擎的深度包处理方法,即一种新的微引擎对多层封装的数据包的处理方法,使用该方法能使微引擎处理复杂的深度封装的数据包,扩展微引擎处理包的灵活性和适用性,同时保证对数据包的处理效率和系统吞吐量。
本发明的技术方案是:一种微引擎的深度包处理方法,其特征在于:引入至少一片包头协处理分片,每片64字节,微引擎收到的第二片微包称为SEOP;
微引擎收到包的第一片64字节SOP后,经过包特征判断,如果该包需要做深度包处理,采用内部邮箱的第25位通信,通过第25位表明需要进行深度包处理;
微引擎收到包头协处理分片SEOP后,检测邮箱中的25位,如果置位,表明要进行深度包处理;首先将SEOP拷贝到包的SOP的后64字节处,然后将包描述符指针回移到原始SOP头部,将SOP,SEOP当成一个新的128字节的SOP头进行包处理,处理过程中通过将包描述符指针偏移到指定的字段进行包头处理,同时要通过外部邮箱告诉尾部分片EOP进行过深度包处理,在计算微包个数时,进行减1操作。
如上所述的微引擎的深度包处理方法,包括以下步骤:
a.系统初始化,通过压栈处理,生成FreeList列表,同时定义数据包头协处理分片,每片64字节,即微引擎收到的第二片微包称为SEOP,第三片微包称为STOP,以此类推;当前网络应用业务环境中,引入SEOP就足够了,暂时没有业务将包头封装到128字节之后;
b.微引擎收到包的第一片64字节(SOP)后,从Freelist列表中弹出包表述符,经过包特征判断,如果该数据包需要做深度包处理,设定SOP和SEOP间通过内部邮箱的第25位通信;在内部邮箱中将第25位置位,表明需要进行深度包处理,然后将该SOP片拷贝到通过包描述符计算出的SDRAM单元中,不进行包内容处理,如果不需要做深度包处理,按照正常的流程,从SOP中获取有用信息进行处理,邮箱的第25位不置位;
c 微引擎收到包的第二片64字节SEOP后,检测邮箱中的25位,如果未置位表明不需进行深度包处理,那么按照原始的对非SOP非EOP包处理流程进行处理,如果置位,表明要进行深度包处理;首先将SEOP拷贝到SOP的后64字节处,然后将包描述符指针回移到原始SOP头部,将SOP,SEOP当成一个新的128字节的SOP头进行包处理,处理过程中通过将包描述符指针偏移到指定的字段进行包头处理;同时要通过外部邮箱告诉EOP进行过深度包处理;
d 尾部分片EOP处理时,如果数据包不是交给StrongArm核处理的,则按正常的EOP处理流程,如果包是交给StrongArm核处理的包,同时该包又进行过深度包处理,那么在计算微包个数进行逆向拷贝时,需要减少一片拷贝。
本发明的有益效果是:
a、不影响原始的普通包处理的流程,保证普通包处理的效率。
b、扩展微引擎的功能,使之能处理多层封装的数据包。
c、扩展功能在原始的包处理架构中完成,保证了深度包处理的效率。
d、具有很强的扩展性,随着网络业务发展,如果需要处理128字节之后的包头时,可以依照本发明的框架,引入STOP,SFOP等,使微引擎可以处理任意深度封装的数据包头。
附图说明:
图1是网络处理器IXP1200的结构图。
图2是普通包处理的软件流程图。
图3是本发明实施例的深度包处理的软件流程图。
具体实施方式:
当微引擎对深度封装的数据包需要进行处理时,微引擎进行如下的处理
1.检测内部邮箱,根据标志位将微包(MPACKET)分为SOP,SEOP,EOP,既是SEOP又是EOP,既是SOP又是EOP,既非SEOP又非EOP分别处理。
2.对SOP的包经按照常规的业务处理流程,如果业务流程不需要进行深度包处理,按照的正常的SOP处理流程进行存储,否则进入我们所设计的微引擎的深度包处理流程。
1)读取本线程的内部邮箱后,修改邮箱值的第25位,同时将邮箱内的包缓存地址值加上8,表明偏移64字节,然后将新的邮箱值写入下一个线程的内部邮箱;
2)将该SOP包从FIFO中拷贝到该包由Freelist在SDRAM中所分配的包缓冲区的地址中去,对包的内容不作修改处理;
3.对于SEOP包的处理。对SEOP包,由于要进行数据包头处理,会增删包头的字段,因此邮箱通知必需在进行完包头处理后才能发给下一个线程的邮箱。
1)将SEOP拷贝到Freelist在SDRAM中所分配的包缓冲区,此时包缓冲区里面SOP和SEOP是连续存放的,那么将SOP,SEOP看作是一个128字节的新的包首部,将包首指针地址减去64,由指向SEOP的第一个字节变为指向SOP的第一个字节,此时就可以看作是生成一个128字节的新SOP
2)按照SOP的处理流程,对128字节的新SOP进行处理,采用包头指针偏移的方式,从128字节的新SOP中获取所需要的信息,根据获得的信息,进行处理,如果处理过程中,需要将数据包交给StrongArm核处理,那么就将这个新的SOP整体拷贝到与StrongArm核通信的共享缓冲区中
3)处理完包头后,如果调整了包首部长度,那么需要对内部邮箱所传递的包首部偏移地址值进行调整,告诉后续的处理线程,将微包拷贝到正确偏移的包缓冲区,同时要将内部邮箱的25位复位。处理完成后,发送新的邮箱值到下一个线程的内部邮箱。
4)在外部邮箱中设置标志位,通知EOP微包处理线程,已经进行了深度包处理。
4.对于既是SEOP又是EOP的数据包处理过程中,按照SEOP的处理流程进行处理后,进入EOP的处理流程,将数据包描述符放入发送队列。不需要通过外部邮箱通知EOP进行过深度包处理。
5.对于既不是SEOP又不是EOP的数据包,按照常规的处理流程首先从内部邮箱解析出的分配给自己的包缓冲区的地址值,然后将地址值加上8表示偏移64个字节发送给下一个处理线程的邮箱。
6.当微引擎获得的MPACKET为EOP时,就到系统的外部邮箱去获得指定的输出端口号以及处理SOP或SEOP时获得的索引号,根据这些信息,可以决定该分片是否应交给StrongArm核处理。如果不是,就进行入队操作,进行存储转发,如果是,需要将其拷贝到与StrongArm核通信的共享缓冲区中,然后进行逆向拷贝,将前面存储的中间分片和也拷贝到共享缓冲区中。因为包的组织结构完全相同,因此两个缓冲区的相对偏移也是一样的,可以很方便的实现拷贝。逆向拷贝前,需要检测外部邮箱的深度包处理位是否置位,如果置位,表明SEOP已经被拷贝到与StrongArm核通信的共享缓冲区,需要拷贝的片数需要减一,如果没有置位,表明没有深度包处理过程发生,按照正常的逆向拷贝过程拷贝。
7.对于既是SOP又是EOP的包,表明该包是小于64字节的数据包,不存在深度包处理的过程,按照SOP处理过程处理完后,进行EOP处理,中间不需要对内外部邮箱进行操作
Claims (2)
1.一种微引擎的深度包处理方法,其特征在于:引入至少一片包头协处理分片,每片64字节,微引擎收到的第二片微包称为SEOP;
微引擎收到包的第一片64字节SOP后,经过包特征判断,如果该包需要做深度包处理,采用内部邮箱的第25位通信,通过第25位表明需要进行深度包处理;
微引擎收到包头协处理分片SEOP后,检测邮箱中的25位,如果置位,表明要进行深度包处理;首先将SEOP拷贝到包的第一片64字节SOP的后64字节处,然后将包描述符指针回移到原始SOP头部,将SOP,SEOP当成一个新的128字节的SOP头进行包处理,处理过程中通过将包描述符指针偏移到指定的字段进行包头处理,同时要通过外部邮箱告诉尾部分片EOP进行过深度包处理,在计算微包个数时,进行减1操作。
2.如权利要求1所述的微引擎的深度包处理方法,其特征在于包括以下步骤:
a.系统初始化,通过压栈处理,生成空闲列表,同时定义数据包头协处理分片,每片64字节,即微引擎收到的第二片微包称为SEOP,第三片微包称为STOP,以此类推;
b.微引擎收到包的第一片64字节SOP后,从空闲列表中弹出包表述符,经过包特征判断,如果该数据包需要做深度包处理,设定SOP和SEOP间通过内部邮箱的第25位通信;在内部邮箱中将第25位置位,表明需要进行深度包处理,然后将该SOP片拷贝到通过包描述符计算出的同步动态存储器单元中,不进行包内容处理,如果不需要做深度包处理,按照正常的流程,从SOP中获取有用信息进行处理,邮箱的第25位不置位;
c微引擎收到包的第二片64字节SEOP后,检测邮箱中的25位,如果未置位表明不需进行深度包处理,那么按照原始的对非SOP非EOP包处理流程进行处理,如果置位,表明要进行深度包处理;首先将SEOP拷贝到SOP的后64字节处,然后将包描述符指针回移到原始SOP头部,将SOP,SEOP当成一个新的128字节的SOP头进行包处理,处理过程中通过将包描述符指针偏移到指定的字段进行包头处理;同时要通过外部邮箱告诉EOP进行过深度包处理;
d尾部分片EOP处理时,如果数据包不是交给强臂微处理器StrongARM处理的,则按正常的EOP处理流程,如果包是交给强臂微处理器处理的包,同时该包又进行过深度包处理,那么在计算微包个数进行逆向拷贝时,需要减少一片拷贝。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710052354A CN101136852B (zh) | 2007-06-01 | 2007-06-01 | 微引擎的深度包处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710052354A CN101136852B (zh) | 2007-06-01 | 2007-06-01 | 微引擎的深度包处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101136852A CN101136852A (zh) | 2008-03-05 |
CN101136852B true CN101136852B (zh) | 2010-05-19 |
Family
ID=39160695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710052354A Expired - Fee Related CN101136852B (zh) | 2007-06-01 | 2007-06-01 | 微引擎的深度包处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101136852B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101442490B (zh) * | 2008-12-30 | 2011-04-20 | 合肥昊特信息科技有限公司 | 流量负载均衡处理方法 |
CN102546399B (zh) * | 2011-12-16 | 2014-09-17 | 广东电网公司茂名供电局 | 一种智能变电站过程层报文线性处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1437327A (zh) * | 2002-02-04 | 2003-08-20 | 华为技术有限公司 | 一种网络处理器中内核与微引擎间的通信方法 |
CN1529481A (zh) * | 2003-10-14 | 2004-09-15 | �й���ѧԺ�����о��� | 网络处理器内部实现分布式应用层转换网关的方法 |
CN1564550A (zh) * | 2004-04-19 | 2005-01-12 | 中兴通讯股份有限公司 | 一种短包数据的接入方法 |
CN1614955A (zh) * | 2004-11-16 | 2005-05-11 | 北京北方烽火科技有限公司 | 微引擎与StrongArm核的通信方法 |
-
2007
- 2007-06-01 CN CN200710052354A patent/CN101136852B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1437327A (zh) * | 2002-02-04 | 2003-08-20 | 华为技术有限公司 | 一种网络处理器中内核与微引擎间的通信方法 |
CN1529481A (zh) * | 2003-10-14 | 2004-09-15 | �й���ѧԺ�����о��� | 网络处理器内部实现分布式应用层转换网关的方法 |
CN1564550A (zh) * | 2004-04-19 | 2005-01-12 | 中兴通讯股份有限公司 | 一种短包数据的接入方法 |
CN1614955A (zh) * | 2004-11-16 | 2005-05-11 | 北京北方烽火科技有限公司 | 微引擎与StrongArm核的通信方法 |
Non-Patent Citations (2)
Title |
---|
彭凯,卢益民.网络处理器IXP1200工作流程研究.电子工程师31 4.2005,31(4),24-28. |
彭凯,卢益民.网络处理器IXP1200工作流程研究.电子工程师31 4.2005,31(4),24-28. * |
Also Published As
Publication number | Publication date |
---|---|
CN101136852A (zh) | 2008-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103888386B (zh) | 可扩展虚拟局域网报文的传输方法及装置、系统 | |
US7916632B1 (en) | Systems and methods for handling packet fragmentation | |
US7274706B1 (en) | Methods and systems for processing network data | |
US20010053148A1 (en) | Network adapter with embedded deep packet processing | |
US20050021558A1 (en) | Network protocol off-load engine memory management | |
CN103731409B (zh) | 用于具有tcp加速的嵌入式汽车采集设备的分布式测量装置 | |
US9160659B2 (en) | Paravirtualized IP over infiniband bridging | |
CN108063712A (zh) | 一种网络请求的发送方法及装置 | |
CN105939284B (zh) | 报文控制策略的匹配方法及装置 | |
Chen et al. | Mp-rdma: enabling rdma with multi-path transport in datacenters | |
US20230127722A1 (en) | Programmable transport protocol architecture | |
US8014282B2 (en) | Hashing packet contents to determine a processor | |
CN1781293B (zh) | 用于修改从源传输到目的地的数据的系统和方法 | |
US7215662B1 (en) | Logical separation and accessing of descriptor memories | |
CN114301995A (zh) | 实时工业以太网协议的转换切换与互通融合系统及其方法 | |
CN101136852B (zh) | 微引擎的深度包处理方法 | |
CN109617833B (zh) | 多线程用户态网络协议栈系统的nat数据审计方法和系统 | |
CN103368872A (zh) | 数据包转发系统和方法 | |
Mallet et al. | Operating system support for protocol boosters | |
CN100579075C (zh) | 一种快速响应icmp回送请求报文的方法 | |
CN1965542A (zh) | 处理分组标头 | |
US20080040494A1 (en) | Partitioning a Transmission Control Protocol (TCP) Control Block (TCB) | |
US7940764B2 (en) | Method and system for processing multicast packets | |
Taguchi et al. | Fast datapath processing based on hop-by-hop packet aggregation for service function chaining | |
CN101494661A (zh) | 传输控制协议/网间协议的协议栈读取数据的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100519 Termination date: 20130601 |