业务智能网关是存在于服务器(Internet)与客户端(GGSN)之间的一个网元,主要功能是对无线网络上的数据包进行协议分析,根据协议类型匹配相应的规则,规则中规定了对某种协议所需要执行的动作(例如流量速率控制,数据放行或者阻断等),配置规则后进行进行相应的控制,主要包括对数据传输速度的控制,数据流量大小时长的统计以及计费,起到了一个类似智能代理服务器的功能,整个系统涵盖从驱动层网卡数据收发到应用层协议控制,涉及 tcp/ip 中常用的协议类型如 http,ftp,bt 等。
功能模块: 网卡收发数据,协议解析,规则下发,规则执行,业务控制,话单处理
技术实现: 整个智能网关系统的架构是基于消息驱动的,系统中的多个进程和线程之间采用消息交互方式进行通信,每个线程从自己消息队列中取出消息根据不同消息号进行相应处理。项目中用户和数据量比较大,开辟了共享内存来方便进行管理,其中主要定义了基于流上下文和用户上下文两个重要的数据结构,其中流上下文是以五元组(ip 地址,端口号,协议类型)作为键值,标示用户上网的一个唯一链路。用户上下文以用户源 ip 地址作为键值,标识示了一个用户唯一 id。两个数据区采用环形队列数据结构进行分配和释放。在系统运行中,每个用户可以对应多个流,每个流有自己的协议类型,通过对这两个基本数据区的分析和处理,建立起用户和流之间的对应关系,极大的方便了业务处理和用户管理。
在项目中负责了多个主要模块的代码开发和测试。主要包括了对数据包的预处理获取流与规则等基本信息(主要是 ip 层和传输层的信息),然后将数据包发送给协议进程解析出数据包应用层协议基本类型(进程间消息交互),根据获取到的协议类型进行业务套餐(根据手机用户上网的号码段来定义的)的匹配,最后根据匹配到套餐进行相应的业务控制(包括流量控制和阻断等功能,包括了HTTP FTP BT 等常用协议类型),由于主处理流程消息量比较大,并且应用层主要是 HTTP 协议类型逻辑比较复杂,存在时序问题,因此引入了状态机机制,根据当前的状态控制业务走向,成功的完成了大量逻辑复杂的业务功能。在将数据发送后对相应的时长和流量进行了统计,并将结果发送给在线计费模块实现在线计费。项目上线后每台业务处理机器支持在线用户 10 万个,网络吞吐率 100Gbps。后续又开发了业务系统分析,黑白名单,业务跟踪,话单分析等相关模块和工具,后期对代码进行了优化,使业务流程更加清晰,方便了后续新功能的添加。