一种基于GPON系统的端口数据包发送方法及系统与流程

文档序号:16065976发布日期:2018-11-24 12:40阅读:280来源:国知局
本发明属于以太无源光网络
技术领域
,尤其涉及一种基于gpon系统的端口数据包发送方法及系统。
背景技术
以太网无源光网络(gigabit-capablepon,gpon)技术是一种基于以太网技术、点到多点的无源光网络接入技术,其集以太网技术的易维护、低成本和pon网络的高效等特点于一身,是实现光纤接入网的最佳方式。随着三网融合和光纤入户进程的加快,gpon系统普遍使用,宽带上网、视频点播、网络游戏等需求日益增多,用户数量庞大。在gpon系统资源一定的前提下,用户点播的视频等内容存在延迟现象,网络游戏出现卡顿现象,用户体验较差。同时,当链路出现故障时,发生中断,影响用户使用。技术实现要素:本发明的目的在于提供一种基于gpon系统的端口数据包发送方法,旨在解决现有技术中在gpon系统资源一定的前提下,用户点播的视频等内容存在延迟现象,网络游戏出现卡顿现象,用户体验较差。同时,当链路出现故障时,发生中断,影响用户使用的问题。本发明是这样实现的,一种基于gpon系统的端口数据包发送方法,所述方法包括下述步骤:接收各个光网络单元onu发送的数据包,并将接收到的数据包暂存在预先配置的接收缓冲区内;获取端口、目的mac和链路方向之间的关系,将所述接收缓冲区内属于同向的数据包转存在对应的同向缓冲区内;通过对输入命令和协议进行解析,形成规则,对所述同向缓冲区内的数据包进行解析,生成端口数据发送指针链表,所述端口数据发送指针链表包含数据帧首地址、数据帧长度、下一数据帧首部地址和发送端口之间的关系;根据生成的所述端口数据发送指针链表,将所述同向缓冲区内的数据包发送到对应的端口缓冲区内;其中,聚合组之间和聚合组内的端口之间均采用负载均衡和互为备份的策略。作为一种改进的方案,所述方法还包括下述步骤:在端口缓冲区发送数据的过程中,对每一个所述端口缓冲区的空闲存储容量进行监测;对从所述接收缓冲区输送至所述同向缓冲区内的数据包执行所述对所述同向缓冲区内的数据包进行解析,生成端口数据发送指针链表的步骤以及后续的步骤。作为一种改进的方案,所述方法还包括下述步骤:依据剩余存储容量的大小优先级和端口数据发送指针链表,将数据包发送给对应的端口缓冲区。作为一种改进的方案,所述对所述同向缓冲区内的数据包进行解析的步骤具体包括下述步骤:通过对输入命令和协议进行解析,形成规则,,获取每一个数据包所对应的实例号,并确定每一个实例所对应的用于发送数据包的聚合组,所述规则包含端口号、聚合组号、实例号、vlan号、qinq号和链路方向之间的关系;根据流量负荷均衡规则,在聚合组内确定出用于发送数据包的对应端口。作为一种改进的方案,所述获取端口、目的mac和链路方向之间的关系的步骤具体包括下述步骤:根据预先建立的端口和链路方向之间的对应关系,对所述接收缓冲区内的数据包进行目的mac解析,获取得到端口、目的mac和链路方向之间的关系。本发明的另一目的在于提供一种基于gpon系统的端口数据包发送系统,所述系统包括:数据包接收模块,用于接收各个光网络单元onu发送的数据包;暂存模块,用于将接收到的数据包暂存在预先配置的接收缓冲区内;第一获取模块,用于获取端口、目的mac和链路方向之间的关系;转存模块,用于将所述接收缓冲区内属于同向的数据包转存在对应的同向缓冲区内;数据包解析模块,用于通过对输入命令和协议进行解析,形成规则,并对所述同向缓冲区内的数据包进行解析;指针链表生成模块,用于根据对同向缓冲区内的数据包的解析,生成端口数据发送指针链表,所述端口数据发送指针链表包含数据帧首地址、数据帧长度、下一数据帧首部地址和发送端口之间的关系;第一数据包发送模块,用于根据生成的所述端口数据发送指针链表,将所述同向缓冲区内的数据包发送到对应的端口缓冲区内;其中,聚合组之间和聚合组内的端口之间均采用负载均衡和互为备份的策略。作为一种改进的方案,所述系统还包括:空闲存储容量监测模块,用于在端口缓冲区发送数据的过程中,对每一个所述端口缓冲区的空闲存储容量进行监测;返回执行模块,用于对从所述接收缓冲区输送至所述同向缓冲区内的数据包执行所述对所述同向缓冲区内的数据包进行解析,生成端口数据发送指针链表的步骤以及后续的步骤。作为一种改进的方案,所述系统还包括:第二数据包发送模块,用于依据剩余存储容量的大小优先级和端口数据发送指针链表,将数据包发送给对应的端口缓冲区。作为一种改进的方案,所述数据包解析模块具体包括:第二获取模块,用于通过对输入命令和协议进行解析,形成规则,获取每一个数据包所对应的实例号,所述规则包含端口号、聚合组号、实例号、vlan号、qinq号和链路方向之间的关系;聚合组确定模块,用于确定每一个实例所对应的用于发送数据包的聚合组;端口确定模块,用于根据流量负荷均衡规则,在聚合组内确定出用于发送数据包的对应端口。作为一种改进的方案,所述第一获取模块具体包括:预先建立模块,用于预先建立的端口和链路方向之间的对应关系;目的mac地址解析模块,用于对所述接收缓冲区内的数据包进行目的mac解析,获取得到端口、目的mac和链路方向之间的关系。在本发明实施例中,接收各个光网络单元onu发送的数据包,并将接收到的数据包暂存在预先配置的接收缓冲区内;获取端口、目的mac和链路方向之间的关系,将所述接收缓冲区内属于同向的数据包转存在对应的同向缓冲区内;对所述同向缓冲区内的数据包进行解析,生成端口数据发送指针链表;根据生成的所述端口数据发送指针链表,将所述同向缓冲区内的数据包发送到对应的端口缓冲区内,从而实现链路无环路、负载均衡的向多端口发送数据包,当某一链路发生故障,其他链路提供备份,提高数据报文的发送可靠性和发送效率,同时也解决了视频内容卡顿现象,为用户提供更好的服务。附图说明图1是本发明提供的基于gpon系统的端口数据包发送方法的实现流程图;图2是本发明提供的olt的链路结构示意图;图3是本发明提供的数据包发送示意图;图4是本发明提供的对所述同向缓冲区内的数据包进行解析的实现流程图;图5是本发明提供的基于gpon系统的端口数据包发送系统的结构框图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。图1示出了本发明提供的基于gpon系统的端口数据包发送方法的实现流程图,其具体包括下述步骤:在步骤s101中,接收各个光网络单元onu发送的数据包,并将接收到的数据包暂存在预先配置的接收缓冲区内。在步骤s102中,根据网络组网建设架构和源mac地址学习,获取端口、目的mac和链路方向之间的关系,将所述接收缓冲区内属于同向的数据包转存在对应的同向缓冲区内。在该步骤中,同向缓冲区可以根据实际的情况进行设置,一般根据服务内容分为两个方向或四个方向或八个方向等,在此以两个方向,即存在两个同向缓冲区为例进行说明。其中,把接收的数据包存入接收缓冲区,根据在页面输入的聚合命令,建立聚合组、端口和链路方向之间的对应关系,对接收数据包的目的mac地址进行分析,找到mac目的地址、端口、聚合组和链路方向之间的关系,然后把相同方向的数据包存入同向缓冲区;该聚合命令可以采用下述命令:interfaceinterface-numberport-groupport-group–numberinterfaceaggregate-portport-numberaggregate-portload-balance{dst-mac︱src-mac︱ip}。在步骤s103中,通过对输入命令和协议进行解析,形成规则,并对所述同向缓冲区内的数据包的数据帧的帧头信息和ip数据报的报头信息进行解析,生成端口数据发送指针链表,所述端口数据发送指针链表包含数据帧首地址、数据帧长度、下一数据帧首部地址和发送端口之间的关系。在该步骤中,在同向缓冲区中,取出数据包的mac帧头在mac控制器中,根据vlan、双层vlan和生成树实例之间的对应关系,对数据包的mac帧头中的vlan、双层vlan、源mac地址进行分析,取出数据包的ip包头在cpu中对数据包头的源ip地址、目的ip地址进行分析,根据vlan、双层vlan和多生成树实例之间的对应关系,聚合组中负载均衡方式,建立端口数据发送指针链表,把同向缓冲区中的数据包发送到端口缓冲区中。其中,同向缓冲区采用双端口ram结构,容量可控,根据同向发送数据指针链表把数据批量传送到端口缓冲区,端口数据发送指针链表结构由数据帧首部地址、数据帧长度、下一帧数据帧首部地址和发送端口之间的关系。在步骤s104中,根据生成的所述端口数据发送指针链表,将所述同向缓冲区内的数据包发送到对应的端口缓冲区内;在该实施例中,聚合组之间和聚合组内的端口(端口数量可能是两个或更多)之间均采用负载均衡和互为备份的策略,其中,结合图2所示,每一个olt设备与对应的交换机之间存在多个链路方向,每个链路方向有不同的聚合组,聚合组内设有若干个端口。在该步骤中,端口缓冲区采用fifo结构,顺序发送到链路上。结合图2和图3所示,图2是olt的链路结构,图3是数据包发送示意图,其中:在图2中,每一个olt设备对应若干个oun,每一个olt设备上连接两个服务内容的交换机,即交换机1和交换机2,其中,每一个交换机对应一个链路方向,因此,在图2所示的示意图上,有两个链路方向(方向1和方向2),每一个链路方向上设置有两个聚合组(分别用a和b表示),即聚合组1和聚合组2,每一个聚合组内设有两个端口;图3示出了接收缓冲区、同向缓冲区和端口缓冲区的对应关系,其中:在执行上述步骤s101之前,预先设置对应的接收缓冲区、同向缓冲区和端口缓冲区,图3中给出的是两个同向缓冲区和四个端口的情形,前两个端口属于聚合组a,后两个端口属于聚合组b。在该实施例中,在端口缓冲区发送数据的过程中,对每一个所述端口缓冲区的空闲存储容量进行监测;对从所述接收缓冲区输送至所述同向缓冲区内的数据包执行所述对所述同向缓冲区内的数据包进行解析,生成端口数据发送指针链表的步骤以及后续的步骤。其中,当对新存入同向缓冲区的数据包进行解析并建立新的端口数据发送指针链表后,将数据包从同向缓冲区发送至端口缓冲区时,按照剩余存储容量的大小优先级和端口数据发送指针链表进行发送,即剩余存储容量越大的端口缓冲区其优先级越高,按照这个顺序,同时结合上述端口数据发送指针链表进行发送数据;在该实施例中,端口数据发送指针链表的结构如下表所示:首地址帧长下一帧首地址端口形成端口号1的数据发送指针链表,端口号2的数据发送指针链表,以及形成端口号n的数据发送指针链表。如图4所示,对所述同向缓冲区内的数据包进行解析的步骤具体包括下述步骤:在步骤s201中,通过对输入命令和协议进行解析,形成规则,并获取每一个数据包所对应的实例号,并确定每一个实例所对应的用于发送数据包的聚合组,所述规则包含端口号、聚合组号、实例号、vlan号、qinq号和链路方向之间的关系。在该步骤中,该规则为预先建立的规则,然后在实际的数据包解析过程中,使用该规则对数据包进行解析,以得到该数据包具体属于那个实例号,并且得知该数据包通过那个聚合组进行数据发送,其中,这种情形是有两个聚合组的情形下实现的;其具体的实现过程为:使用cist2的优先级向量{cist根桥id,cist外部根路径开销,cist域根bid,cist内部路径开销,cist指定桥bid,cist指定聚合组pid,cist接收聚合组pid}和msti1实例的优先级向量{msti域根bid,msti内部路径开销,msti指定桥bid,msti指定聚合组pid,msti接收聚合租pid},生成多生成树。在步骤s202中,根据流量负荷均衡规则,在聚合组内确定出用于发送数据包的对应端口。在该实施例中,在确定数据包通过那个聚合组进行数据发送后,需要确定数据包通过聚合组内的那个端口进行数据发送,其具体实现依据上述流量负荷均衡规则,其中,该流量负荷均衡规则具体为:(1)源ip地址和vlan运算;(2)目的ip地址和vlan运算;(3)源ip地址和目的ip地址异和vlan运算;(4)源mac地址和vlan运算;(5)目的mac地址和vlan运算;(6)源mac地址和目的mac地址和vlan运算;选取其中一个运算规则,运用hash算法选择聚合链路的发送端口,在此不再赘述,但不用限制本发明。作为本发明的另一个具体实现,对于没有聚合组之分的传输链路,其可以采用下述方式实现实例的确定以及链路的确定:使用cist1的优先级向量{cist根桥id,cist外部根路径开销,cist域根bid,cist内部路径开销,cist指定桥bid,cist指定端口pid,cist接收端口pid}和msti1实例的优先级向量{msti域根bid,msti内部路径开销,msti指定桥bid,msti指定端口pid,msti接收端口pid},生成多生成树。其中,对于有聚合标志和没有聚合标志的生成树命令,可以采用下述程序实现:spanning-treespanning-treemodemstpspanning-treemodemstpinstanceinstance-numbervlanvlan-numberspanning-treemodemstpinstanceinstance-numberport-prioritypriorityspanning-treemodemstpinstanceinstance-numberlag-prioritypriority上述仅给出其中一种实现方式,在此不用以限制本发明。在本发明实施例中,聚合组中链路正常工作时,通过hash算法实现负载均衡,当链路故障时,互为备份,继续为用户提供服务;聚合组之间链路正常时,通过实例实现负载均衡,当链路故障时,互为备份,继续为用户提供服务,从而实现链路的双备份。为了便于说明,结合图2和图3所示,下述给出具体的实现事例:根据组网架构,gpon系统olt端口1-端口4连接交换机1,定义为链路方向1,gpon系统olt端口5-端口8连接交换机2,定义为链路方向2。端口1和端口2聚合,定义为聚合组1;端口3和端口4聚合,定义为聚合组2;端口5和端口6聚合,定义为聚合组3;端口7和端口8聚合,定义为聚合组4。根据聚合命令,使端口1,端口2定义为聚合组1;使端口3,端口4定义为聚合组2。gpon系统olt和交换机1运行聚合协议,使olt的端口1,端口2,端口3,端口4和交换机1的对应端口分别聚合。在端口1,端口2之间进行负载均衡,输入负载均衡命令aggregate-portload-balance{ip}终端的ip地址和vlan号进行hash运算,选择端口发送数据。开启生成树协议spanning-tree,spanning-treemodemstp运行多生成树协议,spanning-treemodemstpinstanceinstance-number1vlanvlan-numbervlan1-vlan500,把vlan1-vlan500影射到实例1,spanning-treemodemstpinstanceinstance-number2vlanvlan-numbervlan501-vlan1000,把vlan501-vlan1000影射到实例2;spanning-treemodemstpinstanceinstance-number1lag1-prioritypriority16,spanning-treemodemstpinstanceinstance-number1lag2-prioritypriority4096,spanning-treemodemstpinstanceinstance-number2lag1-prioritypriority4096,spanning-treemodemstpinstanceinstance-number2lag2-prioritypriority16,实例1在聚合组1的优先级数为16,实例1在聚合组2的优先级数为4096,实例1在聚合组1的优先级高。实例2在聚合组1的优先级数为4096,实例2在聚合组2的优先级数为16,实例2在聚合组2的优先级高。运行多实例生成树协议后,使用cist2的优先级向量{cist根桥id,cist外部根路径开销,cist域根bid,cist内部路径开销,cist指定桥bid,cist指定聚合组pid,cist接收聚合组pid}和msti1实例的优先级向量{msti域根bid,msti内部路径开销,msti指定桥bid,msti指定聚合组pid,msti接收聚合租pid},进行优先级向量比较。建立nni端口号、聚合组号、、生成树实例号、vlan号、qinq号、链路方向之间的关系。在链路正常情况下,实例1对应的数据包经过聚合组1发送,实例2对应的数据包经过聚合组2发送的。数据包在聚合组1、2之间实现负荷分担,聚合组内端口1和端口2实现负荷分担,端口3和端口4实现负荷分担。当olt接收到数据包后,暂存于接收缓冲区,分析数据包的目的mac地址,找到目的mac地址和链路方向之间的对应关系,把数据包存于同向缓冲区。分析同向缓冲区数据包的数据帧头部的vlan信息,例如当前数据包的vlan号是200,。vlan号200属于实例1的,当前数据包应从聚合组1发送,然后再分析当前数据包的ip地址信息和vlan号进行hash运算,选择发送的端口。然后形成当前数据包的端口发送指针链表。把存于同向缓冲区的数据包依次分析后,形成端口1-4的发送指针链表,然后把同向缓冲区的数据包发送到端口缓冲区,由端口缓冲区把数据包发送到链路上。同向缓冲区的容量是可控的,根据端口缓冲区的空闲容量,确定发送数据包的数量。同向缓冲区数据包只分析数据帧头部的信息和ip数据报的头部信息,形成端口发送指针链表,进行批数据发送,使发送数据更快。当聚合组1的链路发生故障,实例1对应的数据包和实例2的数据包都经过聚合组2发送,实现了聚合组2是聚合组1的热备份,并且互为备份。当聚合组1中端口1链路发生故障,聚合组1的数据包全部从端口2发送。实现端口1和端口2互为备份。这种结构当链路正常时,聚合组内和聚合组之间数据包发送实现了负荷分担,链路故障时聚合组内和聚合组之间都互为备份,是热双备份结构,更加可靠。图5示出了本发明提供的基于gpon系统的端口数据包发送系统的结构框图,为了便于说明,图中仅给出了与本发明实施例相关的部分。基于gpon系统的端口数据包发送系统包括:数据包接收模块11,用于接收各个光网络单元onu发送的数据包;暂存模块12,用于将接收到的数据包暂存在预先配置的接收缓冲区内;第一获取模块13,用于获取端口、目的mac和链路方向之间的关系;转存模块14,用于将所述接收缓冲区内属于同向的数据包转存在对应的同向缓冲区内;数据包解析模块15,用于对所述同向缓冲区内的数据包进行解析;指针链表生成模块16,用于根据对同向缓冲区内的数据包的解析,生成端口数据发送指针链表,所述端口数据发送指针链表包含数据帧首地址、数据帧长度、下一数据帧首部地址和发送端口之间的关系;第一数据包发送模块17,用于根据生成的所述端口数据发送指针链表,将所述同向缓冲区内的数据包发送到对应的端口缓冲区内;其中,聚合组之间和聚合组内的两个端口之间均采用负载均衡和互为备份的策略。在该实施例的基础上,上述基于gpon系统的端口数据包发送系统还包括:空闲存储容量监测模块18,用于在端口缓冲区发送数据的过程中,对每一个所述端口缓冲区的空闲存储容量进行监测;返回执行模块19,用于对从所述接收缓冲区输送至所述同向缓冲区内的数据包执行所述对所述同向缓冲区内的数据包进行解析,生成端口数据发送指针链表的步骤以及后续的步骤。其中,第二数据包发送模块20,用于依据剩余存储容量的大小优先级和端口数据发送指针链表,将数据包发送给对应的端口缓冲区。在本发明实施例中,数据包解析模块15具体包括:第二获取模块21,用于根据预先建立的生成树规则,获取每一个数据包所对应的实例号,所述生成树规则包含端口号、聚合组号、实例号、vlan号、qinq号和链路方向之间的关系;聚合组确定模块22,用于确定每一个实例所对应的用于发送数据包的聚合组;端口确定模块23,用于根据流量负荷均衡规则,在聚合组内确定出用于发送数据包的对应端口。在本发明实施例中,第一获取模块13具体包括:预先建立模块24,用于预先建立的端口和链路方向之间的对应关系;目的mac地址解析模块25,用于对所述接收缓冲区内的数据包进行目的mac解析,获取得到端口、目的mac和链路方向之间的关系。其中,上述各个模块的功能如上述方法实施例所记载,在此不再赘述。在本发明实施例中,接收各个光网络单元onu发送的数据包,并将接收到的数据包暂存在预先配置的接收缓冲区内;获取端口、目的mac和链路方向之间的关系,将所述接收缓冲区内属于同向的数据包转存在对应的同向缓冲区内;对所述同向缓冲区内的数据包进行解析,生成端口数据发送指针链表;根据生成的所述端口数据发送指针链表,将所述同向缓冲区内的数据包发送到对应的端口缓冲区内,从而实现链路无环路、负载均衡的向多端口发送数据包,当某一链路发生故障,其他链路提供备份,提高数据报文的发送可靠性和发送效率,同时也解决了视频内容卡顿现象,为用户提供更好的服务。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1