一种异步转发方法、系统及设备的利记博彩app

文档序号:7650927阅读:244来源:国知局
专利名称:一种异步转发方法、系统及设备的利记博彩app
技术领域
本发明涉及数据业务传输技术领域,尤其涉及一种异步转发方法、系统及设备。
背景技术
路由器作为一种最常用的网络设备,最主要的功能是报文转发(Forwarding)。转发的一个功能是把传输层要发送的数据包发送到链路层;另一个功能是从链路层接收数据包,当该数据包的目的地址为本路由器时,将该数据包上交到传输层,否则,通过查找路由,把该数据包发送到相应的物理网段中。
从承载的业务角度来划分,转发可以分成IPV4(Internet Protocol Version4,英特网协议版本4)转发,IPV6(Internet Protocol Version 6,英特网协议版本6)转发,MPLS(Multi-Protocol Label Switch,多协议标签交换)转发和TUNNEL(隧道)转发等几个比较大的部分。目前业界传统整个转发的系统架构如图1所示,IPV4转发包括IPV4发送部分和IPV4接收部分、IPV6转发包括IPV6发送部分和IPV6接收部分、MPLS转发包括MPLS发送部分和MPLS接收部分、TUNNEL转发包括TUNNEL发送部分和TUNNEL接收部分,图中实线表示同步函数调用,虚线表示异步的队列操作。
其中,IPV4发送部分将传输层要发送的数据包、TUNNEL发送部分要转发的数据包、及IPV4接收部分要发送的数据包进行转发;IPV4接收部分从MPLS接收部分接收数据包,或从IPV4接收队列中调用数据包,当数据包的目的地址为本路由器时,将该数据包上交到传输层,否则,通过查找路由,通过IPV4发送部分将该数据包发送到相应的物理网段中。
IPV6发送部分将传输层要发送的数据包、及IPV6接收部分要发送的数据包进行转发;IPV6接收部分从MPLS接收部分接收数据包,或从IPV6接收队列中调用数据包,当数据包的目的地址为本路由器时,将该数据包上交到传输层,否则,通过查找路由,通过IPV6发送部分将该数据包发送到相应的物理网段中。
MPLS发送部分将IPV4发送部分、IPV4接收部分、IPV6发送部分、IPV6接收部分、及MPLS接收部分要发送的数据包进行转发;MPLS接收部分从MPLS接收队列中调用数据包,并通过MPLS发送部分将该数据包发送到相应的物理网段中。
TUNNEL发送部分接收MPLS发送部分、IPV6发送部分、及IPV4发送部分的数据包,通过IPV4发送部分转发;TUNNEL接收部分从IPV4接收数据包,并发送到IPV4接收队列、IPV6接收队列、及MPLS接收队列。
在图1中各转发部分进行转发的基本过程如图2所示。驱动接收到数据之后将报文送到链路层进行协议处理,例如Ethernet(以太网)、POS(Packetover SONET/SDH,基于同步光网络/同步数字系统的数据包)、ATM(Asynchronous Transfer Mode,异步传输模式)等,链路层模块首先分享链路层报头,判断报文类型,去掉链路层报头后,根据数据报文类型送入相应的上层模块处理。
其中,对于IPV4或IPV6报文,首先根据IP报头的目的地址查询FIB(Forwarding Information Table,转发信息表),如果是本机的报文,则送到传输层进行处理或直接送到协议处理模块,如果不是则根据查FIB表返回的出接口信息,先找出接口的位置,然后转发到出接口所在的业务板,送入链路层协议处理模块,链路层协议处理模块加上链路层报文头,然后送入驱动模块,通过硬件发出报文。对于MPLS则查ILM(Incoming Label Map,输入标签映射)表,找到出接口,如果是本机的则去掉标签(Label)按IP报文处理流程处理。
业务接收部分的处理流程如图3所示,底层接收硬件收到IP数据包后,送到链路层输入单元,和上层发送报文一同压栈到入IP队列,业务接收部分通过SOCK调度从该入IP队列中读取数据包。对于MPLS业务,在进入入IP队列前还需要进行MPLS去标签处理。
业务发送部分的处理流程如图4所示,从其它业务板转发来的数据包,或本板直接调用的数据包通过IP转发单元进入IP输出单元进行缓存,然后经过链路层输出单元到达驱动发送单元,并由底层发送硬件发送。对于MPLS业务,在出缓存之后还包括加MPLS标签处理。
转发整个流程中,传输层和链路层间大部分使用同步函数调用,只能被单线程驱动;并且由于没有进行隔离,各个转发业务之间耦合很紧,从一个业务出发就能深入到另外一个业务内部,还有可能再进入第三个业务,其中任何一个业务出现问题都会影响到其他业务;另外,业务之间存在大量同步调用,导致转发架构很复杂,可扩展性差,增加一个业务,就必然要改动原有其他业务,这样就大大增加整个转发系统的复杂度。

发明内容
本发明提供一种异步转发方法、系统及设备,以减少各转发业务之间的耦合,并很好的支持新业务的线性扩展。
本发明实施例提供了一种异步转发方法,包括以下步骤每个转发设备分别设置发送队列和接收队列;所述转发设备的接收部分从所述接收队列中异步调用数据包,所述转发设备的发送部分从所述发送队列中异步调用数据包进行转发。
本发明实施例还提供了一种异步转发系统,包括至少两个转发设备,所述每个转发设备包括发送队列单元,用于存储向外部发送的数据包;发送单元,从所述发送队列单元异步调用数据包进行发送;接收队列单元,用于存储从外部接收的数据包;接收单元,从所述接收队列单元异步调用数据包。
本发明实施例还提供了一种转发设备,包括发送队列单元,用于存储向外部发送的数据包;发送单元,从所述发送队列单元异步调用数据包进行发送;接收队列单元,用于存储从外部接收的数据包;
接收单元,从所述接收队列单元异步调用数据包。
本发明的实施例中,采用异步调用,不同业务间不采用直接函数调用形式,而是采取队列形成,避免了直接函数调用带来的紧密关联性,使业务间的相互影响减少。


图1是现有技术中整个转发系统架构图;图2是现有技术中业务转发的基本流程图;图3是现有技术中业务接收部分的基本流程图;图4是现有技术中业务发送部分的基本流程图;图5是本发明实施例中转发设备结构图;图6是本发明实施例中异步转发系统结构图;图7是本发明实施例一种异步转发方法流程图。
具体实施例方式
本发明实施例提供了一种异步转发系统,如图5所示,包括多个转发设备100,每个转发设备100包括发送单元110、接收单元120、发送队列单元130和接收队列单元140。发送单元110从发送队列单元130异步调用数据包进行发送;接收单元120从接收队列单元140异步调用数据包,接收队列单元140中的数据包来自其它转发设备。发送队列单元130直接存储发送单元110要发送的数据包,和/或存储其它转发设备要转发的数据包。转发设备100中可以包括多个发送队列单元130和多个接收队列单元140,可以根据业务类型不同设置相应的发送队列单元和接收队列单元,一个转发设备中的接收队列与发送队列不一定完全对应。
其中,发送单元110进一步包括发送数据包分配子单元111和发送调用控制子单元112。发送数据包分配子单元111将需要由其它转发设备发送的数据包分配到对应的转发设备的发送队列单元中;发送调用控制子单元112根据数据包的入栈顺序、或优先级调用数据包。接收单元120进一步包括接收数据包分配子单元121和接收调用控制子单元122,接收数据包分配子单元121将数据包发送到本转发设备的发送单元,或发送到其它转发设备的接收或发送队列单元;接收调用控制子单元122根据数据包的入栈顺序、或优先级调用数据包。
本发明实施例中转发设备可以包括多种类型的转发设备,例如IPV4转发设备、IPV6转发设备、MPLS转发设备和隧道转发设备。下面以具有上述几种转发设备的系统进行详细说明,如图6所示。
在IPV4转发设备,IPV4发送部分从IPV4的发送队列中异步调用数据包,且将需要由其它转发设备发送的数据包发送到相应的队列中,例如MPLS发送队列和TUNNEL发送队列;IPV4接收部分从IPV4接收队列中异步调用数据包,当数据包的目的地址为本转发设备时,将该数据包上交到传输层,否则,通过查找路由,将该数据包发送到IPV4发送队列、MPLS发送队列和/或TUNNEL接收队列。
在IPV6转发设备,IPV6发送部分从IPV6的发送队列中异步调用数据包,且将需要由其它转发设备发送的数据包发送到相应的队列中,例如MPLS发送队列和TUNNEL发送队列;IPV6接收部分从IPV6接收队列中异步调用数据包,当数据包的目的地址为本转发设备时,将该数据包上交到传输层,否则,通过查找路由,将该数据包发送到IPV6发送队列和/或MPLS发送队列。
在MPLS转发设备,MPLS发送部分MPLS的发送队列中异步调用数据包,且将需要由其它转发设备发送的数据包发送到相应的队列中,例如TUNNEL发送队列;MPLS接收部分从MPLS接收队列中异步调用数据包,将该数据包发送到MPLS发送队列、IPV4接收队列和/或IPV6接收队列。
在TUNNEL转发设备,TUNNEL发送部分从TUNNEL的发送队列中异步调用数据包,且将需要由其它转发设备发送的数据包发送到相应的队列中,例如IPV4发送队列;TUNNEL接收部分从TUNNEL接收队列中异步调用数据包,将该数据包发送到MPLS接收队列、IPV4接收队列和/或IPV6接收队列。
图6实施例中去掉所有业务之间的同步调用;每一个业务对外只有两个队列是接收队列和发送队列。同现有技术相比,一个业务再也不可能深入另外一个业务内部,业务之间解除了耦合,互相不了解,不感知,不影响。因此,无论增加或裁减业务都很容易,不会影响到整个转发系统的构架,用户容易根据自己的需求配置所需的业务。
另外,由于本实施例中同一个业务也分为接收和发送两个基本功能,这两个功能之间也实现异步隔离,接收部分无法直接调用发送部分的函数,只能通过队列异步化。因此,根据接收和发送功能实现转发异步化,可以支持把同一个业务分散到不同的线程去。
还有,本发明实施例中,从纵向而言,转发、链路层、传输层异步隔离,可以通过不同的线程来驱动不同的层;从横向而言,不同的业务、业务内部基本功能也实现了异步隔离,可以使用不同的线程驱动方式。例如可以使用发送和接收线程方式,发送线程驱动所有业务发送部分,接收线程驱动所有业务接收部分,这样能够做到转发的流入流出比较均衡;还可以使用不同的线程来驱动不同的业务。实现了多进程驱动转发的方式,基本功能模块并行执行,就可以从串行转发转换为并行转发,每一个转发的业务和功能就如同生产线上的加工单元,共同组成了数据包处理流水线,比起现有技术,提高了效率。
本发明实施例还提供了一种异步转发方法,如图7所示,包括以下步骤步骤s701,每个转发设备分别设置发送队列和接收队列,一个转发设备中包括至少一个发送队列和至少一个接收队列,可以根据业务类型不同设置相应的发送队列和接收队列,一个转发设备中的接收队列与发送队列不一定完全对应。其中,发送队列存储需要通过本转发设备发送的数据包,包括本转发设备接收部分要发送的数据包,或其它转发设备的发送部分要通过本转发设备发送的数据包;接收队列存储本转发设备需要接收的数据包,包括其它转发设备的接收部分接收的数据包。
步骤s702,转发设备的接收部分从接收队列中异步调用数据包,转发设备的发送部分从发送队列中异步调用数据包进行转发。其中,转发设备发送部分或接收部分按顺序从接收队列或发送队列中调用数据包,或按优先级调用数据包。
本实施例中,异步转发方法能够用于单线程和多线程,适应未来多核和多CPU场景;并行转发模式,流水线数据包处理,应用于多线程,有效提高转发效率;各个转发业务之间解除了耦合,任何一个业务都是内敛的,不会互相影响,可扩展性好,业务之间实现了隔离,要增加业务很简单,不影响原有系统;转发和传输层、链路层间进行了隔离,能够支持传输层,链路层也是单独线程的情况。
另外,本实施例在从队列中取数据包时,可以根据优先级进行操作,业务的发送和接收可以采用强占方式,不一定采取严格的顺序进行操作,提高了系统的灵活性;且由于异步转发可以进行队列强占,避免了压栈很深时占用大量开销,及读取时间无法准确控制。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1.一种异步转发方法,其特征在于,包括以下步骤每个转发设备分别设置发送队列和接收队列;所述转发设备的接收部分从所述接收队列中异步调用数据包,所述转发设备的发送部分从所述发送队列中异步调用数据包进行转发。
2.如权利要求1所述异步转发方法,其特征在于,所述发送队列存储需要通过本转发设备发送的数据包,所述接收队列存储本转发设备接收的数据包。
3.如权利要求2所述异步转发方法,其特征在于,所述本转发设备要发送的数据包包括所述转发设备接收部分自身要发送的数据包,或所述转发设备以外的其它转发设备的发送部分要通过所述转发设备发送的数据包;所述转发设备要接收的数据包包括所述转发设备以外的其它转发设备的接收部分接收的数据包。
4.如权利要求1所述异步转发方法,其特征在于,所述转发设备发送部分或接收部分按顺序从所述发送队列或接收队列中调用数据包,或按优先级调用数据包。
5.一种异步转发系统,包括至少两个转发设备,其特征在于,所述每个转发设备包括发送队列单元,用于存储向外部发送的数据包;发送单元,从所述发送队列单元异步调用数据包进行发送;接收队列单元,用于存储从外部接收的数据包;接收单元,从所述接收队列单元异步调用数据包。
6.如权利要求5所述异步转发系统,其特征在于,所述发送队列单元存储所述发送单元要发送的数据包,和/或存储所述转发设备以外的其它转发设备要转发的数据包。
7.如权利要求5所述异步转发系统,其特征在于,所述发送单元进一步包括发送数据包分配子单元,将需要由所述转发设备以外的其它转发设备发送的数据包分配到对应的转发设备的发送队列单元。
8.如权利要求7所述异步转发系统,其特征在于,所述发送单元还包括发送调用控制子单元,根据入栈顺序、或优先级调用数据包。
9.如权利要求5所述异步转发系统,其特征在于,所述接收单元进一步包括接收数据包分配子单元,将数据包发送到所述转发设备的发送单元,或发送到所述转发设备以外的其它转发设备的接收或发送队列单元。
10.如权利要求9所述异步转发系统,其特征在于,所述接收单元还包括接收调用控制子单元,所述接收调用控制子单元根据入栈顺序、或优先级调用数据包。
11.一种转发设备,其特征在于,包括发送队列单元,用于存储向外部发送的数据包;发送单元,从所述发送队列单元异步调用数据包进行发送;接收队列单元,用于存储从外部接收的数据包;接收单元,从所述接收队列单元异步调用数据包。
12.如权利要求11所述转发设备,其特征在于,所述发送队列单元存储所述发送单元要发送的数据包,和/或存储所述转发设备以外的其它转发设备要转发的数据包。
13.如权利要求11所述转发设备,其特征在于,所述发送单元进一步包括发送数据包分配子单元,将需要由所述转发设备以外的其它转发设备发送的数据包分配到对应的转发设备的发送队列单元。
14.如权利要求13所述转发设备,其特征在于,所述发送单元还包括发送调用控制子单元,根据入栈顺序、或优先级调用数据包。
15.如权利要求11所述转发设备,其特征在于,所述接收单元进一步包括接收数据包分配子单元,将数据包发送到所述转发设备的发送单元,或发送到所述转发设备以外的其它转发设备的接收或发送队列单元。
16.如权利要求15所述转发设备,其特征在于,所述接收单元还包括接收调用控制子单元,所述接收调用控制子单元根据入栈顺序、或优先级调用数据包。
全文摘要
本发明公开了一种异步转发方法,包括以下步骤每个转发设备分别设置发送队列和接收队列;转发设备的接收部分从所述接收队列中异步调用数据包,转发设备的发送部分从发送队列中异步调用数据包进行转发。本发明实施例提供一种异步转发系统,包括至少两个转发设备,每个转发设备包括发送单元、接收单元、发送队列单元和接收队列单元;发送单元,从发送队列单元异步调用数据包进行发送;接收单元,从接收队列单元异步调用数据包。本发明实施例还提供了一种转发设备。本发明的实施例中,采用异步调用,不同业务间不采用直接函数调用形式,而是采取队列形成,避免了直接函数调用带来的紧密关联性,使业务间的相互影响减少。
文档编号H04L29/06GK101035079SQ200710090398
公开日2007年9月12日 申请日期2007年4月10日 优先权日2007年4月10日
发明者赵斗生, 罗汉军, 涂伯颜 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1