专利名称:一种分布式多对多设备通信和管理方法
技术领域:
本发明涉及ー种分布式多对多设备通信和管理方法,特别是指一种机架式多业务路由器中主控卡、多种线路接ロ卡和多种业务处理板卡之间的通信机制和相互之间的管
理方法。
背景技术:
在中高端路由器或者交換机中,各种类型板卡之间的主要通信机制如下主控卡必须能及时感知其他卡,并将相关的用户配置信息发送给其他接ロ卡或者业务卡,以便实现路由器或者交換机功能的开通。各种接ロ线路卡必须能及时感知多块业务处理卡和交換 卡的状态以及相关的负载信息,以便进行合适的调度,实现负载均衡和业务处理。业务处理板卡必须能及时确定各类接ロ卡的状态,以便进行正确的业务分发和处理。各类接ロ线路卡之间的管理数据必须隔离,各种类型的业务处理板卡都需要接受主控卡的管理和控制。因此,各种类型板卡之间的通信需要满足如下要求
基于以太网实现板卡间通信;
实现板卡的发现、加入、监控和离开;
实现板卡间通信信息的广播、组播和单播;
为上层应用提供两种服务可靠按序的服务、非可靠非按序的服务;
能对长包实现分片传输。各种类型的板卡之间如何通信才能满足以上需求,采用传统的TCP或者UDP协议,各板卡之间只能建立一対一的通信,这样需要建立较多的会话,通信量较多,部分嵌入式操作系统本身的TCP和UDP实现的可靠性遭到质疑,另外采用TCP和UDP需要占用大量的IP地址,这些IP地址虽然只在设备内部使用,但为设备遭受攻击留下了隐患。其次,如果采用TCP或者UDP的主从通信机制,板卡两两之间通过建立会话进行通信,每块板卡需要建立大量的会话对,对这些众多会话对的管理、建立和删除都占用的大量的CPU和缓存资源。而中高端路由器或者交換机的CPU资源和缓存对系统性能的影响极大,板卡之间的通信和管理必须尽量节省资源。因此使用TCP或者UDP通信实现各板卡之间多点对多点的可靠传输,存在较大的局限性。另外,各种类型的板卡之间的通信除满足以上基本功能外,必须具备足够的可靠性。只有通过可靠正确的传输,才能保证整个系统的正常运行,并实现路由器或者交换机设备的基本功能。
发明内容
有鉴于此,本发明的主要目的在于提供ー种采用类似于四层TCP传输的请求-应答方式,实现ニ层以太网的可靠传输,通过有效的状态机管理,实现机架式路由器或者交換机中各种板卡之间可靠通信和管理的分布式多对多设备通信和管理方法。
为达到上述目的,本发明提供ー种分布式多对多设备通信和管理方法,其包括如下步骤
(1)机架式路由器或者交換机设备各板卡启动后,启动两个后台任务,ー个后台任务定时发送私有定义的心跳报文,另ー个后台任务监控其他板卡的心跳报文;
(2)各板卡记录其他板卡的状态,维护整个设备板卡的状态机,所有板卡的发现、加入、监控和离开通过状态机的变迁来实现;
(3)将应用层需要传输的数据,通过私有协议进行封装,根据目的板卡和发送板卡设置相应的目的MAC地址和源MAC地址,通过可靠传输方式发送给目的板卡;
(4)通过定时器机制,实现数据报文的重传和板卡的状态检查;
(5)发包时,查看是否存在发送缓冲区,填写发送报文协议包头,然后发送,并启动数据 包的缓存定时器,发送缓冲区按发送序列号的顺序递增排列;
(6)收包时,检查是否等于期望接收的序列号,如果相等则直接交给应用层进行收包处理,对期望接收的序列号重新赋值,反之需要缓存,并发送期望接收序列号;
(7)对于可靠按序传输,发送者和接收者都要维护ー个发送缓存和ー个接收缓存,并且都维护ー个可接收序号的窗ロ,发送缓存用于存放发送出去的未确认的包,接收缓存用于存放接收到但乱序的包,接收缓存里面已经按序的包直接交给相应的上层进行处理。该方法用于机架式交换设备内部各板卡之间的可靠通信,可扩展至其他类似的系统。各板卡之间进行多点对多点的管理数据传输时,采用私有的以太网ニ层通信协议,对单播和组播均可实现可靠传输。所述私有的以太网ニ层通信协议,数据包头部格式为自定义格式。包的重传由每个包的重传定时器来进行,实现组播报文中仅对部分未确认的板卡进行重传。对于长包,根据链路的MTU,实现分片和重组。发包过程中,捎带上ー报文的确认ACK信息。本发明的分布式多对多设备通信和管理方法采用基于ニ层以太网的传输机制,通过机架式设备板卡之间可靠的多点对多点传输,实现机架式路由器中多主控卡、各种线路接ロ卡和各种业务处理卡之间的可靠传输和管理,从而保障了网络层核心设备的高可靠性。
图I为本发明应用的硬件框架图2为本发明应用的软件框架图3为本发明的软件实现结构图4为本发明的任务事件处理图5为本发明主控板维护的状态机;
图6为本发明除主控外其他板卡维护的状态机;
图7为本发明各板卡间私有传输数据包格式。
具体实施例方式为便于对本发明的方法及达到的效果有进ー步了解,下面结合附图对本发明进行详细的描述。基于分布式体系结构的中高端路由器和交换机硬件架构如图I所示,整个系统包括主控模块、交換网模块、接ロ处理单元、业务处理单元。系统主控模块采用1+1的冗余备份,主控模块专注于业务控制协议(如路由协议)内部传送,通过独立通道提供控制信息传递;交换网采用多级交换矩阵结构,实现分布式交換;接ロ単元实现高速报文处理;业务处理单元种类较多,如IPv4/IPv6过渡业务处理単元实现隧道、翻译等IPv4/IPv6过渡,安全智能管道处理单元实现高速业务感知和内容管控等,同一种功能的业务处理单元一般采用N+1备份。 在中高端路由器或者交換机中,各种类型的板卡都具备自己的CPU和相应的嵌入式操作系统,各板卡之间通过主从分布式通信或者TCP、UDP等机制,实现相互之间的发现与控制管理。主控提供整个系统的网管界面,使得整个系统对外是一个完整的整体。其软件体系结构设计框架如图2所示,它包括控制实体(CE)和转发实体(FE)两部分。控制实体负责管理整个路由器系统,控制实体软件负责管理整个路由器系统,主要完成上层各种虚拟设备驱动程序、虚拟设备接ロ映射管理、路由控制协议、控制平面协议栈、开放控制服务映射层、构件运行支撑环境与管理监测、用户操作管理Π (User Interface)公共支撑模块、网络管理公共支撑模块、控制实体与转发实体间通信、管理和监控以及与用户相关的各种配置管理支持等功能。转发实体指路由转发板,使用网络处理器、多核处理器来处理接ロ管理和报文转发功能,完成IPv4、IPv6、MPLS等多种协议报文的转发处理功能,完成IPv4/IPv6隧道、IPv4/IPv6协议翻译等功能。因此,基于分布式体系结构的中高端路由器和交換机中,各板卡之间需要进行多点对多点的可靠通信,如果能够找到ー种高效可靠的多点对多点分布式通信机制,实现机架式路由器或者交換机中板卡(控制实体)之间的有效管理,对机架式路由器或者交換机的稳定性和综合性能的提高是大有裨益的。任务和事件处理的总体实现
本发明的方法运行于机架式设备的各类型板卡上,运行结构如图3所示,通过上层协议接ロ与上层协议进行通信,通过下层以太网接ロ与以太网链路驱动连接,在上层协议接口中封装为私有的通信格式。如图3所示,除以上接口外,还需实现以下功能
分片和重组单播和组播均支持分片和重组功能,根据链路MTU,对较大数据包进行分片,在接收端,则对分片包按序进行重组。状态机维护实现板卡的发现、加入、监控和离开。单播和组播以太网单播地址通过板卡的发现进行学习,单播直接使用以太网单播来实现,广播直接用以太网广播来实现,组播也用以太网广播来实现,在软件通信数据包里面进行接收槽位区分。对单播和组播的可靠传输,均需要收到全部接收板卡的应答信息,未收到应答信息的板卡,需进行重传。分布式多对多设备通信和管理方法任务处理如图4所示,主要包括收、发包事件处理,状态机超时处理,ACK报文的请求和处理等。
状态机中各状态及变迁的实现
图5为主控板卡维护的状态变迁图,主要包含以下状态
NONEXIST :板卡启动时将状态机设置为N0NEXIST状态;
0PENRECV :板卡在NONEXIST收到其他卡发来的OPEN包,发送0PENACK进入0PENRECV状态;同时启动0PENRECV定时器,防止状态机长期处于0PENRECV状态;同时启动Ke印alive和hold机制;
LOADING :板卡在0PENRECV状态收到L0ADREQ,进入LOADING状态,同时开始对其他卡需要同步配置的信息数据进行传输;
OPERATION :板卡在LOADING状态收到L0ADFINISH进入0PERATKI0N状态,在整个过程 中都存在keepalive和hold机制;
在LOADING和OPERATION状态收到OPEN包说明线卡重新启动,进入0PENRECV状态。图6为除主控板卡外,其他板卡维护的状态变迁图,主要包含以下状态
NONEXIST :板卡启动将状态机设置为N0NEXIST状态,发送OPEN进入0PENSEND状态,启
动0PENSEND定时器;
0PENSEND :板卡收到主控发来的0PENACK包,发送L0ADREQ进入LOADING状态,接收主控发送过来的load数据,同时启动keepalive和hold机制;
LOADING :板卡收到L0ADDATA进行LOADING处理,load数据应该有结束标志,板卡执行load操作通知板卡状态机load完成,进入OPERATION状态;
OPERATION :在整个过程中都存在ke印alive和hold机制。整个系统状态变迁说明如下
1、各板卡初始化完毕都处于NONEXIST状态;
2、各线路接ロ卡和业务处理卡发送广播的ΤΥΡΕ_0ΡΕΝ消息,进入STATE_0PENSEND;
3、主控板收到ΤΥΡΕ_0ΡΕΝ消息,发送TYPE_0PENACK,进入STATE_0PENRECV状态,启动Keepalive 和 Hold 定时器;
4、各线路接ロ卡和业务处理卡收到TYPE_0PENACK消息,发送TYPE_L0ADREQ消息,进入STATE_L0ADING状态,启动Ke印alive和Hold定时器;
5、主控板卡收到TYPE_L0ADREQ消息,通知上层处理TYPE_L0ADREQ消息,并将该板卡信息广播给所有已在位板卡;
6、各已在位板卡记录新加入的板卡信息,新上线板卡接收其他上层处理loading消息,Loading完毕后,通知线卡Loading完成,线卡进入STATE_0PERATI0N状态,发送TYPE_L0ADFINISH消息给主控;
7、主控收到TYPE_L0ADFINISH 消息进入 STATE_0PERATI0N 状态;
8、每个状态都有一个和该状态相关的定时器,避免在某个状态上停留时间太长。板卡之间数据包传输格式
为了保证可靠传输,需要定义板卡间传输数据包封装格式,支持各板卡彼此之间的单播和广播,此外还考虑传输大块的数据信息的分段传输、服务质量QoS等,即不同级别的应用可以用不同的服务策略。图7表示了板卡之间数据传输的消息格式。各字段定义如下
type :表示数据包的类型,主要有以下几种类型open、openack、keepalive(互相发送)、Loadreq、Loadf inish、ackreq (ACK 轮循)、ack (ACK 响应)、Nak、data (数据包)、nm (网管包)等;
dir :表示数据包的方向性,主要有以下几种从主控卡到线路接ロ卡、线路接ロ卡到主控卡、主控卡到业务处理卡、业务处理卡到·主控卡、线路接ロ卡到业务处理卡、业务处理卡到线路接ロ卡。可以有多种类型同时进行,如主控卡向线路接ロ板卡和业务处理板卡,则为主控卡到线路接ロ卡和主控卡到业务处理卡的或操作;
svr :表不进行传输的要求,O表不非可靠非按序服务,I表不可靠按序服务;
length :包括数据包头的总长度;
identifier :表示发送的姆ー份应用数据单元;
flag :更多的片MF标志,广播或单播标志;
offset :分片偏移;
seq :发送序列号;
ack :确认号;
src :源卡号;
srccpu:源 CPU 号;
dst :目的卡号,在单播包中才有效;
srccpu:目的 CPU 号;
reserved :保留;
checksum :校验和,包括首部和数据;
d stmap :目的卡号、CPU号的bitmap,最大支持64*4,在广播标志中才有效。发包流程
对于等待发送的数据包,首先获得自己的槽位号,和待发送的目的地的槽位号(可以为广播地址,向所有板卡进行广播),是否要求可靠服务,制定的CoS类别。对分配的数据包分配内存池中的块,如果失败,则错误计数,返回。分配内存成功,根据链路的MTU,将相应的数据报文拆分,如果待发送包的序列号在发送窗ロ之内,也可以查看是否还存在发送缓冲区,再填写发送报文协议包头,然后发送。启动数据包的缓存定时器。如果缓存定时器超时,且收到NAK,则重传,如果超时η (η缺省=3)次以后,则丢弃,可用发送缓冲区个数加1,进行错误计数。发送缓冲区按发送序列号的顺序递增排列,因此再进行插入的时候按有序链表操作。发包过程中,可以捎带上ー报文的确认ACK信息。收包流程
从底层驱动收到协议类型为0xFF03的数据包,检查是否等于期望接收的序列号,如果相等则直接交给应用层进行收包处理,然后检查接收缓冲区,按序检查,将需要的包交付上层,对期望接收的序列号重新赋值。反之需要缓存,检查是否有接收缓冲区,如果有,则缓存,并发送期望接收序列号的ΝΑΚ。缓存起来,启动定时器,如果超吋,则重传ΝΑΚ,如果超时η (η缺省=3)次以后,则丢弃,可用接收缓冲区个数增加。收到NAK报文以后,对发送缓存中的包添加NAK收到标记。如果收到确认序列号报文,且确认序列号在期望接收的确认序列号和下一个发送序列号之间,则关闭定时器,释放所有小于或等于当前确认序列号的发送缓存,可用发送缓冲区个数增加。可靠按序传输
发包时,如果缓存不够,直接返回ERROR,其他情况返回0K。由于源地址和目的地址采用bit位来表示,并且Oxffffffff表示广播,整个系统最多支持32个板卡。各板卡对每个其他板卡(包括广播、组播)维护ー个发送缓存和ー个接收缓存,发送缓存用于存放发送出去的未确认的包,接收缓存用于存放接收到但乱序的包,接收缓存里面已经按序的包直接交给相应的上层进行处理。发送者维护本地变量ack_expected (发送者发送出去的包的最低序号)和next_Seq_t0_Send(发送者发送出去的最大序号+1),发送者收到ack后,判断ack中的序号是否 在 ack_expected 和 next_seq_to_send circulIy 之间,确定是否释放 ack_expected 和 ack序号之间的发送缓存并増加aclexpected,达到最大值后,循环设置为O ;
接收者维护本地变量seq_expected (期望接收的最小序号)和seq_toofar (接收者可以接收的最大序号+1 ),接收者对接收的序号seq,判断是否在seq_expected和seq_toofar之间,从而确定收到的包是否在接收窗口内,如果seq和seq_expected不相等,发送NAK要求重传seq_expected,将按序的包依次送给相应的处理函数进行处理。为了智能修改重传机制,收到NAK,应发送NAK消息中确认序号之后一数据块,因为丢包往往会持续ー小段时间,避免重传之后较近的数据连续重传;及时释放缓冲区,不要等到keepalive或ackack方才释放;收到Keepalive,看作收到确认序号+1的NAK,实现智能重传。发送者和接收者都要维护ー个发送缓存和ー个接收缓存,并且都维护ー个可接收序号的窗ロ,发送方的窗ロ从O开始增加到最大BUFFER_NUM,接收者窗ロ固定为BUFFER_NUM大小,接收方为窗口内的每个序号提供一个缓存,每个接收缓存还有ー个相关的标志位用来表示缓存的占用情況。发送广播包者针对每个发送缓存还要提供引用计数,释放发送缓存只是将引用计数减1,当应用计数为O时才真正的释放缓存。板卡定时轮循广播发送ackreq,请求其他板卡发回ack,由于板卡需要区分是针对广播包的ack还是针对单播的ack,在ack包里面包含是广播还是单播的ack标志,收包者需要保存收到的包是广播还是单播,这样在对包进行ackreq回复时可以作出判断,这ー点可以直接使用收到的缓存中的目的mac作出判断。包的重传由每个包的重传定时器来进行,重传定时器到,检查有无NAK到达,若有则进行重传,若无则继续重新启动重传定时器,重传定时器的关闭由ACK包来触发。本发明的方法的基本思路是所有板卡启动后,初始化管理软件,启动两个后台任务,一个后台任务定时发送私有定义的心跳报文,心跳报文中携带该板卡的槽位信息、板卡类型以及子卡信息等,另ー个后台任务监控其他板卡的心跳报文,记录其他板卡的状态,维护整个设备板卡的状态机。所有板卡的发现、加入、监控和离开通过状态机的变迁来实现。各板卡维护整个系统各板卡的信息,主控卡根据其他卡的类型和端ロ信息,发送相应的配置信息;线路接ロ卡根据业务处理板卡的位置和流量信息,调度本接ロ卡接收数据业务的转发和处理,对于多个相同类型的转发卡和业务处理卡,实现负载均衡调度,同时由于线路接ロ板卡维护了各业务处理板卡的信息,对与业务处理板卡的热插拔操作,线路接ロ板卡可及时感知,实现有效的调度,提高了设备对数据业务处理的效率,同时避免业务的丢失;另外,业务处理板卡根据线路接ロ板卡和交换板卡的信息,将处理后的业务进行合适的分发。因此该方法除了完成各种板卡之间的状态协商及维护外,还需要进行多点对多点的管理数据通信、负责设置、获取线卡硬件信息等。各板卡之间进行多点对多点的管理数据传输时,采用私有的以太网ニ层通信协议,该方法主要用于设备内部的通信,只需要单播和广播两种方式。可靠传输报文的源MAC地址为本板卡设置的地址,可进行固定设置或者通过槽位号換算,单播报文的目的MAC地址为相应目的槽位的MAC地址,广播报文则为全F。以太报文类型则私有定义为0xFF03,其他数据包类型则进行私有定义。 为保证可靠传输,对于各板卡之间的单播传输,采用请求-应答的传输机制,发送板卡需要接收到确认消息ACK之后,才向上层应用返回传输成功消息。对于各板卡之间的广播传输,由于发送板卡已知系统中所有板卡信息,且了解需要接收的板卡,为实现其可靠性,发送时将需要广播的槽位信息通过设置相应的位操作来实现,接收确认消息ACK吋,需要对相应的位进行判断,只有接收到所有槽位的ACK消息后,才能表示其他槽位已正确接收,如果有部分失败,也只需对失败的槽位进行传输。包的重传由每个包的重传定时器来进行,重传定时器到,检查有无重传请求NAK到达,若有则进行重传,若无则继续重新启动重传定时器,重传定时器的关闭由确认消息ACK包来触发。分片和重组采用类似IP的分片和重组机制,根据链路的MTU,将应用层的数据拆份,对分片报文携帯相应的标记和序号。接受完成后,根据序号进行重组数据包。为保证传输的按序进行,所有板卡软件均维护ー个发送缓存和ー个接收缓存,发送缓存用于存放发送出去的未确认的包,接收缓存用于存放接收到但乱序的包,接收缓存里面已经按序的包直接交给相应的上层进行处理。发送者维护本地变量aclexpected(发送者发送出去的包的最低序号)和neXt_Seq_t0_Send (发送者发送出去的最大序号+1);接收者维护本地变量seq_expected (期望接收的最小序号),如果ack_expected和seq_expected不相等,发送NAK要求重传seq_expected,将按序的包依次送给相应的处理函数进行处理。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.ー种分布式多对多设备通信和管理方法,其特征在于,其包括如下步骤(1)机架式路由器或者交換机设备各板卡启动后,启动两个后台任务,ー个后台任务定时发送私有定义的心跳报文,另ー个后台任务监控其他板卡的心跳报文;(2)各板卡记录其他板卡的状态,维护整个设备板卡的状态机,所有板卡的发现、加入、监控和离开通过状态机的变迁来实现;(3)将应用层需要传输的数据,通过私有协议进行封装,根据目的板卡和发送板卡设置相应的目的MAC地址和源MAC地址,通过可靠传输方式发送给目的板卡;(4)通过定时器机制,实现数据报文的重传和板卡的状态检查;(5)发包时,查看是否存在发送缓冲区,填写发送报文协议包头,然后发送,并启动数据包的缓存定时器,发送缓冲区按发送序列号的顺序递增排列; (6)收包时,检查是否等于期望接收的序列号,如果相等则直接交给应用层进行收包处理,对期望接收的序列号重新赋值,反之需要缓存,并发送期望接收序列号;(7)对于可靠按序传输,发送者和接收者都要维护ー个发送缓存和ー个接收缓存,并且都维护ー个可接收序号的窗ロ,发送缓存用于存放发送出去的未确认的包,接收缓存用于存放接收到但乱序的包,接收缓存里面已经按序的包直接交给相应的上层进行处理。
2.如权利要求I所述的分布式多对多通信和管理方法,其特征在于,该方法用于机架式交换设备内部各板卡之间的可靠通信,可扩展至其他类似的系统。
3.如权利要求I所述的分布式多对多通信和管理方法,其特征在于,各板卡之间进行多点对多点的管理数据传输时,采用私有的以太网ニ层通信协议,对单播和组播均可实现可靠传输。
4.如权利要求3所述的分布式多对多通信和管理方法,其特征在于,所述私有的以太网ニ层通信协议,数据包头部格式为自定义格式。
5.如权利要求I所述的分布式多对多通信和管理方法,其特征在于,包的重传由每个包的重传定时器来进行,实现组播报文中仅对部分未确认的板卡进行重传。
6.如权利要求I所述的分布式多对多通信和管理方法,其特征在干,对于长包,根据链路的MTU,实现分片和重组。
7.如权利要求I所述的分布式多对多通信和管理方法,其特征在干,发包过程中,捎带上ー报文的确认ACK信息。
全文摘要
本发明公开了一种分布式多对多设备通信和管理方法,其包括如下步骤(1)机架式路由器或者交换机设备各板卡启动后,启动两个后台任务;(2)各板卡记录其他板卡的状态;(3)将应用层需要传输的数据,通过私有协议进行封装,根据目的板卡和发送板卡设置相应的目的MAC地址和源MAC地址,通过可靠传输方式发送给目的板卡;(4)通过定时器机制,实现数据报文的重传和板卡的状态检查;(5)发包及(6)收包。本发明的方法采用基于二层以太网的传输机制,通过机架式设备板卡之间可靠的多点对多点传输,实现机架式路由器中多主控卡、各种线路接口卡和各种业务处理卡之间的可靠传输和管理,从而保障了网络层核心设备的高可靠性。
文档编号H04L12/24GK102833332SQ201210302249
公开日2012年12月19日 申请日期2012年8月23日 优先权日2012年8月23日
发明者汪学舜, 戴锦友, 朱国胜, 刘辉辉 申请人:武汉烽火网络有限责任公司