基于网络地址转换的多播转发的方法

文档序号:7685509阅读:301来源:国知局
专利名称:基于网络地址转换的多播转发的方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种基于网络地址转换的多播转 发的方法。
背景技术
NAT(网络地址转换)分成两种 一种是纯粹的IP(互联网协议)地址转换,私网地址和公网地址是一一对应的,主要是隔离私网和外部的公网用户。另一种是基于IP地址和四层协议端口号绑定的NAPT(网络地址端口变换)技术。主 要用于解决IP地址不够用的问题,利用NAPT可以实现私网到公网的多对一的 地址变换。现有的NAT应用主要是NAPT技术的应用,NAPT的提出是为了解决公网IP 地址不足的问题,通过把四层的端口号和IP地址绑定,可以用很少的外部公网 IP地址实现大量的本地私网IP地址和外部连接,且NAPT过程对外部主机是完 全透明的。NAPT将私网IP地址变换成分配给该子网的公网IP地址,同时把该 公网IP对应的报文的4层的一个端口号分配给这个会话,以区分使用同一个 IP地址的不同会话或连接。多播技术提供一种一个发送者向一组接受者传送数据的有效传输方式。多 播在现实中有许多应用。通常在多播传输中,数据被发送到接受者的多播地址, 而不是每个接受者的单播地址,发送者只发送一个数据拷贝,由源端到目标端 路径上的中间节点复制该数据。为了实现多播通信,就必须建立支持多播的路 由协议,目前常用的多播路由协议有距离向量多播路由协议DVMRP、协议无关 密集模式多播协议和协议无关分散牧师多播协议。0CTE0N CN38XX是一款多核处理器,每个处理器内核可以独立完成不同的 任务,例如可以在一部分核上运行基于OCTEON Simple Exactive (以下简称SE) 的数据平面(data plane)的代码,另外一部分核上运行控制平面(control plane) 的操作系统(如linux),使其分工明确,加速数据处理。同时,不同的核之间可以通过共享存储空间来进行数据交换和通信。SE提供了一个开发环境,在这个环境中,可以为0CTE0N处理器开发数据 平面(data plane)的代码。SE是由库1 ibcvmx. a和 一 些包含了大量的内联函数 的头文件组成,它提供了硬件抽象、内存管理和0CTE0N同步机制。基于SE的 代码可以在OCTEON处理器的每个核中以一个独立线程的方式运行。发明内容为了克服现有技术存在的不足,本发明提供一种能有效简化系统流程、提 高系统整体性能的基于网络地址转换的多播转发的方法。为达到上述发明目的,本发明采用的技术方案是提供一种基于网络地址转 换的多播转发的方法,它采用控制平面模块和数据平面模块通过共享存储空间 来进行数据信息的交互;所述的控制平面模块为在共享存储空间的哈希表中 创建一个空的NAT需求列表,需求列表的大小由对应NAT需求决定,由报文做 NAT前的源IP地址、目的IP地址、源UDP端口和目的UDP端口四元组信息作 为哈希索弓l,根据上层应用软件的地址转换需求填充上述需求列表的NAT部分; 遍历已填充NAT信息的需求列表,通过net link接口从linux kernel获取到每 个NAT信息对应的路由信息,并将路由信息填充到对应的需求列表中;所述的 数据平面模块为将到达设备的报文由接收单元接收后送入工作队列,从工 作队列中取出一个报文,得到该报文的源IP地址、目的IP地址、源UDP端口 和目的UDP端口四元组信息,在共享空间的哈希表查找有无此四元组对应的NAT 信息,如果有,则获取该报文对应的NAT需求列表,根据NAT需求列表中NAT 信息的组数确定发包次数;每次从NAT需求列表取出一组NAT信息,修改报文 的相应位置,然后将报文按NAT需求列表中的路由信息发出;如果没有,将该 报文送到linux操作系统中,由linux决定此报文的用途和去向。


图1是本发明实施例的控制平面模块的工作流程图; 图2是本发明实施例的数据平面模块的工作流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步描述 实施例1:本实施例采用的硬件设备是0CTE0NCN38XX处理器,这是一款多核处理器, 数据平面(data plane)的程序是基于SE开发平台,控制平面(control plane) 用的是Linux操作系统。数据平面(data plane)的程序和控制平面(control plane)程序分别运行在不同的核上,通过共享内存来进行数据交换和通信。参见附图1,它是本实施例控制平面模块的工作流程图,由图1可见,其 工作步骤为步骤1.1:在共享存储空间的哈希表中创建一个空的NAT需求列表,需求 列表的大小由对应NAT需求决定,由报文做NAT前的源IP地址、目的IP地址、 源UDP端口和目的UDP端口作为哈希索引。步骤1.2:根据上层应用软件的地址转换需求填充上述需求列表的NAT部分。步骤1.3:遍历已填充NAT信息的需求列表,通过netlink接口从linux kernel获取到每个NAT信息对应的路由信息,并将路由信息填充到对应的需求 列表中。参见附图2,它是本实施例数据平面模块的工作流程图,由图2可见,其 工作步骤为步骤2.1:报文到达设备后,报文接收单元接收报文。步骤2.2:为报文做一些基本的校验,将报文送入工作队列。步骤2.3:从工作队列中取出一个报文,得到该报文的源IP地址、目的IP地址、源UDP端口和目的UDP端口四元组,在共享空间的哈希表査找有无此四 元组对应的NAT信息,如果有,执行步骤2.4;如果没有,则执行步骤2.5。步骤2.4:获取该报文对应的NAT需求列表,根据NAT需求列表中NAT信 息的组数确定发包次数。每次从NAT需求列表取出一组NAT信息,修改报文的 相应位置,然后将报文按NAT需求列表中的路由信息发出。步骤2.5:将此报文送到linux操作系统中,由linux决定此报文的用途 和去向。综上所述,本发明提供了一种实现基于NAT的多播转发的方法,本方法是 根据NAT和多播转发的共性,采用控制平面模块和数据平面模块通过共享存储 空间来进行数据信息的交互的方法,不复制报文体,只修改报文头,较好地整 合了 NAT和多播转发资源,提高了系统的整体性能。
权利要求
1. 一种基于网络地址转换的多播转发的方法,其特征在于它采用控制平面模块和数据平面模块通过共享存储空间来进行数据信息的交互;所述的控制平面模块为在共享存储空间的哈希表中创建一个空的NAT需求列表,需求列表的大小由对应NAT需求决定,由报文做NAT前的源IP地址、目的IP地址、源UDP端口和目的UDP端口四元组信息作为哈希索引,根据上层应用软件的地址转换需求填充上述需求列表的NAT部分;遍历已填充NAT信息的需求列表,通过netlink接口从linux kernel获取到每个NAT信息对应的路由信息,并将路由信息填充到对应的需求列表中;所述的数据平面模块为将到达设备的报文由接收单元接收后送入工作队列,从工作队列中取出一个报文,得到该报文的源IP地址、目的IP地址、源UDP端口和目的UDP端口四元组信息,在共享空间的哈希表查找有无此四元组对应的NAT信息,如果有,则获取该报文对应的NAT需求列表,根据NAT需求列表中NAT信息的组数确定发包次数;每次从NAT需求列表取出一组NAT信息,修改报文的相应位置,然后将报文按NAT需求列表中的路由信息发出;如果没有,将该报文送到linux操作系统中,由linux决定此报文的用途和去向。
全文摘要
本发明涉及一种基于网络地址转换的多播转发的方法。它采用控制平面模块和数据平面模块通过共享存储空间进行数据信息交互的方法,由控制平面模块在共享存储空间的哈希表中创建一个空的NAT需求列表,报文做NAT前的源、目的IP地址和源、目的UDP端口四元组为哈希索引,根据客户的地址转换需求填充列表的NAT部分,并将每个NAT信息对应的路由信息填充到列表中;数据平面模块将到达设备的报文的四元组信息,在哈希表查找对应的NAT信息,若存在,每次从NAT需求列表取出一组NAT信息,修改报文的相应位置,然后将报文按NAT需求列表中的路由信息发出。该方法不复制报文体,只修改报文头,较好地整合了NAT和多播转发资源,提高了系统的整体性能。
文档编号H04L29/06GK101262425SQ20081003671
公开日2008年9月10日 申请日期2008年4月28日 优先权日2008年4月28日
发明者雷 曹 申请人:艾诺通信系统(苏州)有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1