首页> 中国专利> 基于FPGA的3G数据包重组系统及方法

基于FPGA的3G数据包重组系统及方法

摘要

本发明公布了一种基于FPGA的3G数据包重组系统及方法。本发明所述系统包括EMAC核模块和用户接口模块,其中用户接口模块包括:消息类型处理模块、HASH模块、IMSI存储模块、读写控制模块、IMSI插入模块、IMSI非空判断模块。本发明所述方法根据SGSN和GGSN之间的控制信令协议GTP-C提取出用户身份信息IMSI,然后根据TEID-CP、TEID-DII存储IMSI信息,并将用户上下线状态信息与用户身份信息绑定传输到后端处理;并且将用户数据协议GTP-U中的数据包根据头部的TEID-DII查找IMSI,将用户数据与IMSI绑定重组数据包,并且将不同用户数据包根据应用层不同协议类型发往后端处理。本发明提高了整体监管系统的效率,速度迅速。

著录项

  • 公开/公告号CN101582884A

    专利类型发明专利

  • 公开/公告日2009-11-18

    原文格式PDF

  • 申请/专利权人 东南大学;

    申请/专利号CN200910033142.7

  • 发明设计人 黄杰;秦中元;孙婷婷;张晓晓;

    申请日2009-06-15

  • 分类号H04L29/06;

  • 代理机构南京经纬专利商标代理有限公司;

  • 代理人许方

  • 地址 210096 江苏省南京市四牌楼2号

  • 入库时间 2023-12-17 23:01:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-03

    未缴年费专利权终止 IPC(主分类):H04L29/06 授权公告日:20120523 终止日期:20150615 申请日:20090615

    专利权的终止

  • 2012-05-23

    授权

    授权

  • 2010-01-13

    实质审查的生效

    实质审查的生效

  • 2009-11-18

    公开

    公开

说明书

技术领域

发明涉及一种基于FPGA的3G数据包重组系统及方法,属于TD-SCDMA网络安全领域的数据重组系统及方法。

背景技术

3G移动通信技术主要包括3大标准体系:中国的TD-SCDMA标准,欧日的WCDMA标准和美国的CDMA2000标准。TD-SCDMA标准和WCDMA标准承接了GSM的原有核心网结构,它们数据包统一封装在GTP协议中,因此如果获取所有的GTP协议,可以监控所有的移动用户的核心网数据信息。GTP协议分为GTP-C,GTP-U两种协议,其中GTP-C为用户信令协议,部分信令协议中含有国际移动用户识别号(IMSI)。GTP-U封装的是用户数据信息,不含有标志用户身份的IMSI,无法将用户数据与用户信息统一起来。但是在监控系统中需要用户身份和用户状态和用户数据的统一。因此数据采集过程中需要通过GTP-C和GTP-U之间的联系枢纽TEID(隧道标志号)将3G核心网数据包重新组合。

目前对于用户身份信息及用户状态和用户数据的绑定与重组通常放在软件平台上实现。但是由于对于大量用户的监管,需要对大量用户身份信息(IMSI)动态的存取,软件上常采用数据结构中的树表实现,根据测试显示软件实现用户数据与用户身份的绑定,处理速度仅能达到150Mbps。而3G移动通信的通信速率往往高达1Gbps,用软件处理数据用户身份与用户数据的绑定,达不到实时的目。

发明内容

本发明所要解决的技术问题是针对现有技术存在的缺陷提供一种基于FPGA的3G数据包重组系统及方法。

本发明为实现上述目的,采用如下技术方案:

本发明基于FPGA的3G数据包重组系统,其特征在于包括EMAC核模块和用户接口模块,其中用户接口模块包括:消息类型处理模块、HASH模块、IMSI存储模块、读写控制模块、IMSI插入模块、IMSI非空判断模块,消息类型处理模块的输出端依次串接HASH模块、读写控制模块、IMSI插入模块、IMSI非空判断模块,消息类型处理模块的输出端接IMSI插入模块的输入端,HASH模块的输出端接IMSI存储模块的输入端,IMSI存储模块与读写控制模块双向连接,消息类型处理模块的输入端接EMAC核模块的输出端,IMSI非空判断模块的输出端接EMAC核模块的输入端。

所述的基于FPGA的3G数据包重组系统的重组方法,其特征在于包括如下步骤:

步骤(1):采用EMAC软核模块的接收客户端接口接收网关节点GGSN和支持节点SGSN的链路上的所有3G数据包;

步骤(2):将步骤(1)所述的3G数据包经过消息类型处理模块判断得到网关节点GGSN与支持节点SGSN的协议类型:

当网关节点GGSN与支持节点SGSN的协议类型为控制信令协议GTP-C,则插入标志位0;

当网关节点GGSN与支持节点SGSN的协议类型为用户数据协议GTP-U,则插入标志位1;

步骤(3):将步骤(2)所述的控制信令协议GTP-C和用户数据协议GTP-U的数据包经过HASH模块得到存取IMSI的地址;

步骤(4):将步骤(3)所述存取IMSI的地址经过读写控制模块对IMSI信息进行读或者写:

a)当为控制信令协议GTP-C类型的数据包,则判断控制信令协议GTP-C头部的消息类型:①当控制信令协议GTP-C头部的消息类型是建立请求信息,则将IMSI存储进步骤(3)所述存取IMSI的地址;②当控制信令协议GTP-C头部的消息类型是建立请求响应信息,则将控制信令协议GTP-C类型的数据包头部的TEID-CP经过HASH模块得到取IMSI新地址得到IMSI,并将控制信令协议GTP-C类型的数据包上行TEID-DII经过HASH模块得到存IMSI新的地址,将IMSI存储进存IMSI新的地址内;③当控制信令协议GTP-C头部的消息类型是下线响应信息,则将控制信令协议GTP-C类型的数据包头部的TEID-CP经过HASH模块得到取IMSI新地址得到IMSI;

b)当为用户数据协议GTP-U类型的数据包,则将用户数据协议GTP-U类型的数据包头部的TEID-DII经过HASH模块得到取IMSI新地址得到IMSI;

步骤(5):将步骤(4)中读出的IMSI信息经过IMSI插入模块插入到用户数据包和用户上下线响应信息中去得到重组数据包;

步骤(6):将步骤(5)所述的重组数据经过IMSI非空判断模块:当重组数据包中IMSI部分为零,则将该重组数据包发往指定主机作为异常包处理;当重组数据包中IMSI部分不全为零,则重组的数据包作为新的数据负载输入到TCP/IP协议栈中去,最后通过EMAC核模块的发送客户端输出。

本发明提供了一种基于FPGA的TD-SCDMA的数据包重组系统及方法。TD-SCDMA的核心网因为汇聚了多个基站传来的分组数据,大量的流量数据会极大的加重数据包重组的难度。基于FPGA的TD-SCDMA的数据包重组方法利用了FPGA的快速处理能力,根据SGSN和GGSN之间的控制信令协议GTP-C提取出用户身份信息IMSI,然后根据TEID-CP、TEID-DII存储IMSI信息,并将用户上下线状态信息与用户身份信息绑定传输到后端处理;并且将用户数据协议GTP-U中的数据包根据头部的TEID-DII查找IMSI,将用户数据与IMSI绑定重组数据包,并且将不同用户数据包根据应用层不同协议类型发往后端处理。这种重组方法有效的提高了整体监管系统的效率,有利于对后端的负载均衡。

本发明采用FPGA硬件编程实现,由于硬件处理的高速性,最高速度可达1.6Gbps,可以满足对3G监管数据处理的需求。

附图说明

图1是TD-SCDMA核心网分组域结构示意图;

图2是Gn接口协议栈模型;

图3是TEID工作原理示意图;

图4是Virtex 5EMAC核模块示意图,

图5是基于FPGA的数据包重组结构示意图;

图6是基于FPGA的数据包重组流程图

图7是用户接口模块结构示意图。

具体实施方式

下面结合附图对发明的技术方案进行详细说明:

本发明所使用的系统在TD-SCDMA分组域网络中的位置如图1所示。

就本系统而言,我们考虑的设备和通讯链路是SGSN和GGSN设备以及两者之间的通信链路。

GPRS服务支持节点(SGSN)的主要作用是记录移动台的当前位置信息,并且在移动台和GGSN之间完成移动分组数据的发送和接收。同时SGSN作为GPRS/WCDMA核心网分组域设备重要组成部分,完成分组数据包的路由转发,移动性管理,会话管理,逻辑链路管理,鉴权和加密,话单产生和输出等功能。GRPS网关节点(GGSN)主要是起网关作用,可以把核心网中的GPRS分组数据包进行协议转换,从而可以把这些分组数据包传送到远端的TCP/IP或X.25网络。它可以和多种不同的数据网络连接。

另外SGSN和GGSN之间的接口是Gn/Gp接口,其中Gn用来描述SGSN和同一PLMN的GGSN接口,Gp用来描述SGSN和不同PLMN的GGSN接口。Gn/Gp接口协议栈如图2所示。GTP协议基于3G核心网的Gn/Gp接口之间,负责SGSN和GGSN之间数据和信令的传输。

GTP协议分为控制信令协议(GTP-C)、用户数据协议(GTP-U)、和计费协议(GTP’)我们这里进行的GTP协议分析主要指GTP-C、GTP-U。如果要实现网络监管,用户数据和用户身份信息是两个必不可少的方面,而GTP协议中并不是所有的信息中都含有用户身份IMSI信息。其中用户第一次上线请求信息(Create PDP Request)中包含用户身份IMSI(国际移动用户识别码)信息。为了达到用户数据以及用户上下线信息与用户身份的绑定,需要通过分析GTP协议将3G核心网数据包重组。在这里所提到的数据重组与普通意义上的IP分片的重组有着很大的区别,这里的重组,是从上线请求信令中提取标志用户身份的IMSI信息并存储,然后将IMSI信息插入到用户上下线响应信息和用户数据包中,从而得到一种包含用户身份信息的数据包,发往后台处理。

GTP协议中关联用户控制信令和用户数据的唯一元素是TEID。核心网中上行(SGSN至GGSN方向)链路和下行(GGSN至SGSN方向)链路使用不同的TEID,并且用户数据信息和控制信令使用不同的TEID,所以一个用户在整个会话过程中用到四个TEID,现在分别定义如下:TEID_UP_C(上行控制信令使用)、TEID_UP_U(上行用户数据信息使用)、TEID_DOWN_C(下行控制信令使用)、TEID_DOWN_U(下行用户数据信息使用)。TEID的具体工作原理如图3所示。在获取数据的处理过程中,需要用到TEID_DOWN_C、TEID_DOWN_U和TEID_UP_U三个TEID计算地址,存取IMSI信息。

以下对各个模块进行展开说明。

1、EMAC核模块

改发明方法使用的硬件平台为v5lxtPCI开发板。平台上两个三态网口,两个千兆电口,FPGA芯片为V5LX50T,片内含有4个内置的三态以太网MAC模块(TEMAC)。其中Virtex5EMAC核模块如图4所示。EMAC核主要分为如下几个接口:接收客户端(RX Client)、发送客户端(TX Client)、流控制接口(Flow Control)、通用主机总线接口(Generic Host Bus)、DCR总线接口(DCR Bus)、物理层接口(Physical Interface)、GTP收发器(GTPTransceiver)、管理数据输入/输出接口(Management Data I/O)。下面对以太网内核的各个接口作一下简要介绍:

(1)发送/接收客户端主要是将用户收发端与以太网MAC收发引擎连接起来;

(2)流控制接口的设计符合IEEE 802.3第31条款;

(3)通用主机总线接口和DCR总线接口是和以太网MAC主机接口的两种控制可选的总线接口,可以通过以太网MAC的信号线选择其中的任何一种,在外部处理器与以太网MAC协作的情况下,选择DCR总线接口比较理想,主机总线接口更适合于FPGA逻辑直接控制以太网MAC的情况;

(4)物理层接口可以连接符合以太网物理层标准BASE-T、BASE-X的任何一种物理层设备;当物理层接口配置成1000BASE-X或者SGMII模式时,需要用到以太网MAC内部的PCS/PMA子层模块,该模块与以太网MAC的GTP收发器接口连接。此GTP收发器接口直接连接到以太网MAC外部的GTP收发器实现1000BASE-X物理层。

2、用户接口模块

基于FPGA的数据包重组结构如图5所示。其中FPGA模块串连在SGSN和GGSN之间,可以捕获3G核心网络中通过的所有数据包。

整个数据包重组过程首先根据UDP端口号判断从核心网获取的GTP数据包类型(GTP-U端口号为2152,GTP-C端口号2123),然后根据数据包头部的TEID检索出用户IMSI,将IMSI信息插入到用户数据中去,实现数据包重组。数据包重组流程如图6所示:

由于监管的用户量大,数据重组过程中,用户数据与用户特征信息的绑定需要对IMSI信息的不断动态存取,因此,要保证处理的实时性,对于整个数据包处理过程中的瓶颈部分-IMSI的动态存取,要求寻求一种达到线速处理的方法。

数据包重组模块如图7所示,其中主要包括消息类型处理模块,HASH模块,IMSI存储模块,读写控制模块,IMSI插入模块,IMSI非空判断模块。下面对各个模块的功能作简单描述。

(1)消息类型处理模块:消息类型处理模块用来判断GTP协议的类型。并对GTP-C与GTP-U分别做不同的标记,以供后台处理时分辨。

(2)HASH模块:HASH模块是整个模块中最关键部分,它主要实现IMSI存取地址计算。由于含有IMSI信息的Create PDP Request信令(信令就是信息,不需要重复)与用户上下线响应信息以及用户数据信息是通过TEID相关联,所以为了满足大量用户动态的对IMSI的存取,需要找到TEID与IMSI直接关联的存取方式。根据这一思想,本文提出一种基于FPGA的Hash算法实现地址计算,该算法过程最主要用到下面Hash函数:h(x,y)=ax+y(a为2的幂次,x,y∈Z+)通过多次调用这个Hash函数分解TEID得到不同寻址信号。具体的数据重组查找算法过程为:(设用户的三个TEID值分别为A,B,C)

一、将用户的三个个TEID分别跟相对应的基TEID(值设为A1,B1,C1)异或,得到的值记为A2,B2,C2

二、将A1,B1,C1分别按照HASH函数:h(x,y)=216x+y(0≤x≤217-1,0≤y≤215-1)分解。求出系数x,y的值,以A1处理过程为例,设A1求出的系数分别记为E、F;

三、将E的值按照h(x,y)=28x+y(0≤x≤28-1,0≤y≤28-1)分解。求出系数x,y的值,分别记为G、H;将F的值按照h(x,y)=28x+y(0≤x≤28-1,0≤y≤28-1)分解。求出系数x,y的值,分别记为I、J;

四、将G、H相异或,得到的值记为K,将J做3次做循环移位,得到的值即为L。

五、将得到的I作为RAM的片选信号、L作为初始地址值;K的值作为超范围用户的IMSI的存储和查找。

下面对算法做简要的注释,第一步中的基TEID为随机抽取的任一用户的TEID的值,并保持T时间内基TEID不变。这样做的原因是,在现实中用户TEID的分配与用户的IP分配类似,具有总体上升到趋势,选择在T时刻内,所有用户跟同一用户的TEID异或,可以将不同用户的TEID之间的差异,由原本的分布在不同位置移动的TEID的低位置上,其中T的选取对于冲突概率的影响很大。这样就可以用较少的位数区分大量的用户。这一步的异或可以用简单的硬件描述语言实现,这一步运算需要两个时间周期。

第二步,是利用HASH函数分解,这里对函数系数的选择做简要解释,第二步选择了系数216这样分解得到的E、F的位数16bit。这样选择的目的主要是为第三步的E、F分解做铺垫。这一步的分解,用硬件描述语言实现也是很简单的,这一步运算需要一个时间周期。

第三步中对F的分解,系数选择的是28,分解得到的I、J的位数为8bit,这样做的目的是根据监控用户的数目而定的,目前我们所做的监控设备针对在线用户数为一万个,每一个用户的IMSI是8Byte,由于一个用户要用到3个TEID跟其IMSI相联系,这样需要的存储空间为104*3*8*8bit≈1.5*221Mbit,我们用来存储IMSI的BRAM的大小为211*23地需要这样的RAM28个,这样得到的I作为片选信号,J左移3bit后得到11bit的地址信号,容量大小为8Byte,用来存储一个用户的IMSI。运算的硬件语言实现跟第二步相同。这一步运算需要一个时间周期

第四步运算简单易懂不多做解释。这一步运算需要一个时间周期

第五步中超范围的意思是,在T时间内,用户总TEID的分配趋势是递增的,然后由第一步的基TEID的异或,可以将不同转移到低位置上,但是由于TEID分配有一些特殊情况,可能其变化范围超出了所选的位数,需要考虑到这种特殊情况,于是把特殊情况的TEID称作超范围用户,这些用户的IMSI单独存放在一个RAM中。实际中,这种超范围用户是很少的。最后IMSI的存储或读取需要八个时间周期。

(3)IMSI存储模块:IMSI存储模块是用到的存储器为BRAM。

(4)读写控制模块:读写控制模块是根据消息类型处理模块做的标志采取动作,如果是Create PDP Request信令,则根据Hash模块计算出来的地址写RAM,如果是用户数据包或用户上下线响应信息则根据Hash模块计算出来的地址读RAM。

(5)IMSI插入模块:IMSI插入模块主要是完成将读出的IMSI信息,插入到用户上下线响应信息和用户数据信息中去。对于用户上下线响应信息,则将IMSI插入到GTP协议头部的前8Byte,如果是用户数据信息,则将IMSI插入到数据负载前的8Byte。

(6)IMSI非空模块:IMSI非空模块用来判定插入的IMSI部分是否为空。由于处理过程来不及,或者网络丢包等原因导致某个用户的IMSI信息没有存储,则该用户的上下线响应信息和用户数据信息中的IMSI插入部分则会全部为零。IMSI非空模块判断若该部分全部为零,则将该用户数据包发往指定主机作为异常包处理;如果不全部为零,则重组的数据包作为新的数据负载输入到TCP/IP协议栈中去,生成TCP/IP包传输到后台处理。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号