使用nProbe监控移动网络(2G,3G和LTE)

2020-10-27 17:56:53 浏览数 (1)

以前,电信行业一直认为监控移动网络流量是复杂,昂贵且专有的。不幸的是,这是开源运动未能广泛传播的少数领域之一,而供应商锁定仍然是标准。去年,我们参观了巴塞罗那的世界移动通信大会,以了解更多有关的信息,结论是,借助Android,移动终端已经相当开放,但是网络仍然很封闭。这一直是向nProbe添加分析移动流量能力的驱动力。

我们的目标一直是监视移动网络流量,类似于在标准IP网络上发生的事情,以便提供更多附加功能。在移动网络中,存在一种称为GTP(GPRS隧道协议)的协议,该协议可分解为两个单独的协议:

GTP-U:用于承载用户数据流量,即你用手持设备上网时的网络流量(如电子邮件、网上冲浪、游戏)。

GTP-C:用于承载GPRS核心网络内的信令。每当您用手持设备连接/断开、跳入网络内部时,网络都会产生一条信息。监控GTP-C是保持和关联用户(即IMSI)和移动网络内与用户相关的动态IP地址的关键。GTP-C中的内容远不止这些,比如用户的电话号码、用户所连接的小区(因而也是它的物理位置)、APN和手持设备的型号。GTP-C用于协商隧道ID,然后用来承载用户流量,所以GTP-C的流量状态必须保存在数据库的某个地方,以保持用户和其IP地址之间的关联。

GTP-C由两个插件(gtpv1和gtpv2插件)以及radius协议处理。相反,nProbe核心已更新为支持移动网络上使用的许多协议和封装,例如:

  • PPP /多链路PPP
  • 移动IP
  • L2TP
  • GTP  v1(2G / 3G网络)和v2(4G / LTE网络)
  • GRE
  • 在移动网络上使用具有3GPP扩展的Radius。

所有现有的nProbe插件均已更新,因此GTP-C的优先级是最高的。这意味着当nProbe检测一些GTP封装的HTTP流量时,还会返回有关生成该流量的用户的常规信息(URL,Cookie,User-Agent…。)信息(即IMSI)。使用微云示例在nProbe中透明地实现了这种信息关联。

每当nProbe检测某些GTP-C消息时,它都会动态(自动)将用户状态更新到redis数据库中,以便用户可以将此信息绑定到用户。

微型云体系结构的另一个优势是,它允许跨各种探针关联流量。实际上,移动网络是自然分布的,通常不可能将所有流量聚合到一个位置。微型云允许所有探测器共享数据(当然,在示例nProbe实例上实现了数据缓存,以避免过多的通信),因此支持所有组合。

PF_RING群集也已更新,因此无论何时运行nProbe的服务器,传入的流量都可以在所有正在运行的nProbe实例之间共享。这是通过尊重GTP隧道来实现的,因为PF_RING不会在外部数据包包络上保持平衡,而是在隧道流量上保持平衡。使用此方法,PF_RING允许在多个实例之间平衡传入网络流量(也在多个传入接口上),从而监视单个服务器上的多千兆位流量。

当然,nDPI能够解析GTP封装的流量,因此您可以配置nProbe(通过指定的模板-T)以在应用程序级别分析流量,从而了解第7层协议。

nProbe可以使用以下信息元素通过NetFlow v9 / IPFIX导出信息:

代码语言:javascript复制
Plugin GTPv1 Signaling Protocol templates:
[NFv9 57692][IPFIX 35632.220] %GTPV1_REQ_MSG_TYPE GTPv1 Request Msg Type
[NFv9 57693][IPFIX 35632.221] %GTPV1_RSP_MSG_TYPE GTPv1 Response Msg Type
[NFv9 57694][IPFIX 35632.222] %GTPV1_C2S_TEID_DATA GTPv1 Client->Server TunnelId Data
[NFv9 57695][IPFIX 35632.223] %GTPV1_C2S_TEID_CTRL GTPv1 Client->Server TunnelId Control
[NFv9 57696][IPFIX 35632.224] %GTPV1_S2C_TEID_DATA GTPv1 Server->Client TunnelId Data
[NFv9 57697][IPFIX 35632.225] %GTPV1_S2C_TEID_CTRL GTPv1 Server->Client TunnelId Control
[NFv9 57698][IPFIX 35632.226] %GTPV1_END_USER_IP GTPv1 End User IP Address
[NFv9 57699][IPFIX 35632.227] %GTPV1_END_USER_IMSI GTPv1 End User IMSI
[NFv9 57700][IPFIX 35632.228] %GTPV1_END_USER_MSISDN GTPv1 End User MSISDN
[NFv9 57701][IPFIX 35632.229] %GTPV1_END_USER_IMEI GTPv1 End User IMEI
[NFv9 57702][IPFIX 35632.230] %GTPV1_APN_NAME GTPv1 APN Name
[NFv9 57703][IPFIX 35632.231] %GTPV1_MCC GTPv1 Mobile Country Code
[NFv9 57704][IPFIX 35632.232] %GTPV1_MNC GTPv1 Mobile Network Code
[NFv9 57705][IPFIX 35632.233] %GTPV1_CELL_LAC GTPv1 Cell Location Area Code
[NFv9 57706][IPFIX 35632.234] %GTPV1_CELL_CI GTPv1 Cell CI
[NFv9 57707][IPFIX 35632.235] %GTPV1_SAC GTPv1 SAC
代码语言:javascript复制
Plugin GTPv2 Signaling Protocol templates:
[NFv9 57742][IPFIX 35632.270] %GTPV2_REQ_MSG_TYPE GTPv2 Request Msg Type
[NFv9 57743][IPFIX 35632.271] %GTPV2_RSP_MSG_TYPE GTPv2 Response Msg Type
[NFv9 57744][IPFIX 35632.272] %GTPV2_C2S_S1U_GTPU_TEID GTPv2 Client->Svr S1U GTPU TEID
[NFv9 57745][IPFIX 35632.273] %GTPV2_C2S_S1U_GTPU_IP GTPv2 Client->Svr S1U GTPU IP
[NFv9 57746][IPFIX 35632.274] %GTPV2_S2C_S1U_GTPU_TEID GTPv2 Srv->Client S1U GTPU TEID
[NFv9 57747][IPFIX 35632.275] %GTPV2_S2C_S1U_GTPU_IP GTPv2 Srv->Client S1U GTPU IP
[NFv9 57748][IPFIX 35632.276] %GTPV2_END_USER_IMSI GTPv2 End User IMSI
[NFv9 57749][IPFIX 35632.277] %GTPV2_END_USER_MSISDN GTPv2 End User MSISDN
[NFv9 57750][IPFIX 35632.278] %GTPV2_APN_NAME GTPv2 APN Name
[NFv9 57751][IPFIX 35632.279] %GTPV2_MCC GTPv2 Mobile Country Code
[NFv9 57752][IPFIX 35632.280] %GTPV2_MNC GTPv2 Mobile Network Code
[NFv9 57753][IPFIX 35632.281] %GTPV2_CELL_TAC GTPv2 Tracking Area Code
[NFv9 57754][IPFIX 35632.282] %GTPV2_SAC GTPv2 Cell Identifier
代码语言:javascript复制
Plugin Radius Protocol templates:
[NFv9 57712][IPFIX 35632.240] %RADIUS_REQ_MSG_TYPE RADIUS Request Msg Type
[NFv9 57713][IPFIX 35632.241] %RADIUS_RSP_MSG_TYPE RADIUS Response Msg Type
[NFv9 57714][IPFIX 35632.242] %RADIUS_USER_NAME RADIUS User Name (Access Only)
[NFv9 57715][IPFIX 35632.243] %RADIUS_CALLING_STATION_ID RADIUS Calling Station Id
[NFv9 57716][IPFIX 35632.244] %RADIUS_CALLED_STATION_ID RADIUS Called Station Id
[NFv9 57717][IPFIX 35632.245] %RADIUS_NAS_IP_ADDR RADIUS NAS IP Address
[NFv9 57718][IPFIX 35632.246] %RADIUS_NAS_IDENTIFIER RADIUS NAS Identifier
[NFv9 57719][IPFIX 35632.247] %RADIUS_USER_IMSI RADIUS User IMSI (Extension)
[NFv9 57720][IPFIX 35632.248] %RADIUS_USER_IMEI RADIUS User MSISDN (Extension)
[NFv9 57721][IPFIX 35632.249] %RADIUS_FRAMED_IP_ADDR RADIUS Framed IP
[NFv9 57722][IPFIX 35632.250] %RADIUS_ACCT_SESSION_ID RADIUS Accounting Session Name
[NFv9 57723][IPFIX 35632.251] %RADIUS_ACCT_STATUS_TYPE RADIUS Accounting Status Type
[NFv9 57724][IPFIX 35632.252] %RADIUS_ACCT_IN_OCTETS RADIUS Accounting Input Octets
[NFv9 57725][IPFIX 35632.253] %RADIUS_ACCT_OUT_OCTETS RADIUS Accounting Output Octets
[NFv9 57726][IPFIX 35632.254] %RADIUS_ACCT_IN_PKTS RADIUS Accounting Input Packets
[NFv9 57727][IPFIX 35632.255] %RADIUS_ACCT_OUT_PKTS RADIUS Accounting Output Packets
代码语言:javascript复制
并使用一些命令行选项将流量信息保存在转储文件中:
代码语言:javascript复制
--gtpv1-dump-dir  | Directory where GTPv1 logs will be dumped
--gtpv1-exec-cmd  | Command executed whenever a directory has been dumped
--gtpv2-dump-dir  | Directory where GTPv2 logs will be dumped
--gtpv2-exec-cmd  | Command executed whenever a directory has been dumped
--radius-dump-dir  | Directory where Radius logs will be dumped
--radius-exec-cmd  | Command executed whenever a directory has been dumped

本质上,nDPI,PF_RING和nProbe现在能够监视多千兆位移动流量,并使用微云将探针中的GTP-C与GTP-U流量自动关联,而无需像其他工具那样在收集器上进行操作。优点是,一旦流被导出,收集器就立即知道产生流量的移动用户,更不用说收集器上实现的相关性在计算资源方面是昂贵的。由于微云中的信息是持久的,因此在极不可能的崩溃情况下,由于微云中维护了用户与GTP的流量关联,因此不会丢失任何内容。这也适用于移动流量增长且需要启动其他探测的情况(也适用于仍通过IP连接到微云的不同网络位置):启动以后,它们会自动执行。

迄今为止,nProbe已有用于永久监视某些国家/地区移动运营商的流量的案例。

0 人点赞