[0047] 下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
[0048] 如图1所示,为本发明的一种用于实现ONU设备中数据共享的系统,其中包括:用于处理ONU设备中进程的处理模块;存储模块,以及分别与存储模块和处理模块连接的管理模块;管理模块用于于存储模块上分配共享存储空间;与处理模块连接的控制模块,控制模块用于控制ONU设备的进程对共享存储空间的访问;与管理模块连接的驱动模块,驱动模块用于为ONU设备的进程调用ONU设备的硬件模块。
[0049] 于上述技术方案的基础上,上述的处理模块包括分别对应于ONU设备不同业务的通用标准组件。如图2所示,处理模块中的通用标准组件可以包括用于实现二层交换功能的bridge组件,用于实现三层路由功能的router组件,用于实现PON管理功能的PON组件,用于实现物理端口管理功能的physical port组件,用于实现网络语音功能的VOIP组件等通用的标准组件。当然,处理模块中所包含的各通用标准组件可以并不限于以上所示,而是包括其他所有用于实现ONU全部功能的标准组件。当ONU设备通过系统的处理模块对具体的业务进程进行处理时,就会按照标准组件的数据结构,行为,状态机等来运行,从而ONU设备能够通过处理模块对ONU的多种业务服务进行具体处理和实现。
[0050] 于上述技术方案的基础上,还包括与所述处理模块连接的适配模块,适配模块用于对ONU进程的下发配置做数据转换,以向处理模块传递数据。通过在处理模块接口上再添加适配模块,可以对从UI(user interface)如通过OMCI、TR069以及OAM等,下发下来的配置进行数据转换以满足对处理模块的数据传递。
[0051] 于上述技术方案的基础上,ONU设备默认创设上述的系统,并将ONU设备的所有端口关联到该系统。在ONU设备启动时,会默认创设上述的系统,而该系统默认会地将ONU设备的所有端口,如lan口,wan口等关联进来,进行绑定。可选的,为了方便远程管理的需要,还可以选择配置一个管理IP,通过进入该管理IP,对上述的系统实现管理。上述的用于实现ONU设备中数据共享的系统,与ONU设备所具体处理的业务流相关,即可以在ONU设备中设置有多个。例如,可以在GPON的OMCI业务中创建,在EPON的OAM业务中创建,也可以在TR069业务中创建各种用于实现数据共享的系统。因此,在一种可选的实施例中,上述的系统还包括创设模块,创设模块用于创设新的系统,并将ONU设备的端口划入创设的系统中。当创建系统时,只需调用对应的创设模块即可。例如,在页面或是OLT端配置业务的时候会触发创设模块创建系统的动作,也可以是通过使用命令方式直接创建系统。相对于只通过一个默认系统实现ONU设备中的数据共享,通过创设模块,创设多个针对不同业务的系统,有利于系统实现和维护管理。不同的系统中处理模块的标准组件组成可能是不同的,而系统所关联的端口所绑定的属性也可能是不同的,如端口绑定的vlan,mac地址等,因此共享数据的属性也可能是不同的。进一步的,这里的在ONU设备上设置多个系统,是针对ONU设备的二层交换业务来说的。当用户选择创建二层功能的纯桥,即桥关联的端口无法访问IP层(如CTC的Other桥),也就是不经由三层路由实现的数据业务时,会建立新的用于实现数据共享的系统,并将新设系统下的ONU端口从原来默认创建的系统中移除。而当ONU设备涉及的业务需要经由三层路由模块处理时,同时又需要通过系统关联的端口进行设备管理,这时不再需要再创建新的系统,通过VLAN的方式来进行划分即可,以形成不同的广播域。例如:将用于上网业务的端口1和2用于上网业务划分到vlan100中,而将用于视频电话端口3、4划分到vlan200中。
[0052] 于上述技术方案的基础上,管理模块还包括:用于根据通用标准组件为共享数据设置唯一的互斥信号量标识的设置子模块;用于根据通用标准组件于共享存储空间中创建共享文件的创建子模块;用于为共享文件于存储模块上分配共享存储空间的分配子模块。系统处理模块中的标准组件都会设置相对应的互斥信号量标识,用以唯一标识。这样,当进程访问系统处理模块的标准组件时,都会通过该互斥信号量标识判断共享存储空间上的存储共享数据的共享文件是否已被占用,即是否有其他进程正在访问。如果共享文件为解锁状态,则可以访问。在访问时通过上述的控制模块对其加置读写锁,防止其他进程的同时访问。这样每次只能由一个进程访问,从而实现了安全访问数据的目的。上述的共享文件用于存储共享数据,且和系统中的标准组件,以及互斥信号量标识也存在对应的关系。具体来说,共享文件可以是共享内存。上述的创建子模块在创建共享文件后,还会将共享数据设置为预制的数据结构形式。例如,在一种具体实施方式中,关于以太网端口(ETH port)属性的共享数据,其数据结构形式可以是:
[0053] 其中,上述的ENTITY代表物理端口(端口号),ETH_ADMIN_E端口管理状态(enable或disable),ETH_LPBACK_STATE_E代表loopback环回口的状态。
[0054] 于上述技术方案的基础上,上述的驱动模块用于为所述ONU设备的进程调用所述ONU设备的硬件模块。上述的硬件模块可以是由芯片厂家直接提供或是简单包装的SDK(Software DevelopmentKit,即软件开发工具包),也可以是软件实现,如通过调用LINUX的Netfilter等。在驱动模块和硬件模块之间,还可以通过一个匹配模块来实现不同产品形态,不同驱动架构的适配功能。上述的匹配模块对具体硬件方案,产品芯片结构有全面的了解,能够选择调用那个SDK的哪个API。匹配模块可以调用相应的SDK API来注册事件。在API中传递一个函数指针,在事件触发时SDK层将直接调用这个API,从而在硬件层次具体实现。
[0055] 于上述技术方案的基础上,在一种优选的实施方式中,上述的系统通过编译,形成一个共享库,从而通过对上层提供通用标准API接口函数,可以方便地为ONU的上层进程所调用使用。因此,无论是EPON、GPON项目相关的ONU产品,还是LAN上行的传统xDSL产品都能够在以该共享库为基础的前提下轻松实现。本发明的一种用于实现ONU设备中数据共享的系统的代码,能够移植到任何有该系统组件功能的产品中,如SFU,HGU,单芯片解决方案交换机,可堆叠式交换机,OLT等。因此,本发明不仅适用于采用GPON技术实现的ONU产品中,EPON、LAN上行等网络产品同样也能够很好的利用本发明来进行实现。
[0056] 本发明的另一种实施例公开了一种用于实现ONU设备中数据共享的方法。如图3所示,具体包括如下步骤:
[0057] 步骤1.ONU设备通过对应的标准组件对业务进程进行处理;
[0058] 步骤2.当进程请求对共享存储空间访问,ONU设备进行访问控制;
[0059] 步骤3.调用硬件模块执行。
[0060] 于上述技术方案的基础上,步骤2中还包括:
[0061] 步骤21.ONU设备检测进程中用于标识共享数据资源且对应于标准组件的互斥信号量是否有效;当互斥信号量为有效,则进入步骤22,否则进入步骤23;步骤22.进程通过加置读写锁,访问共享数据空间,并于结束访问时释放读写锁;
[0062] 步骤23.ONU设备创建对应于标准组件的互斥信号量标识,并判断步骤23中创建的互斥信号量是否对应有用于存储共享数据的共享文件,如果有,则返回步骤22;否则进入步骤24;
[0063] 步骤24.ONU设备为进程中的数据于存储模块上分配共享存储空间。
[0064] 于上述技术方案的基础上,步骤24中还包括:
[0065] 步骤241.ONU设备在为共享数据创建共享文件前为进程加置读写锁;
[0066] 步骤242.ONU设备创建共享文件,并分配共享存储空间,同时将进程中的数据以预设的数据结构形式存储到共享文件中;
[0067] 步骤243.ONU设备在分配共享存储空间后,释放读写锁。
[0068] 本发明的一种用于实现ONU设备中数据共享的系统,为实现提供上层各进程调用访问,采用将其编译为共享库的方式,方便了上层进程对其调用。同时由于多进程对其中的数据进行访问存储,所以在此基础上采用了共享内存结合资源访问信号量的方式对其进行合理设计实现。
[0069] 本发明提出的一种用于实现ONU设备中数据共享的系统和方法,极大地提高了系统软件的性能和稳定性,能够达到对数据进行高效、稳定而且安全的访问和存储效果,同时也降低了维护的难度系数,便于日后的增值服务及移植工作。
[0070] 以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。