使用nProbe監控行動網路(2G,3G和LTE)

虹科網路視覺化與安全發表於2020-10-21

以前,電信行業一直認為監控行動網路流量是複雜,昂貴且專有的。不幸的是,這是開源運動未能廣泛傳播的少數領域之一,而供應商鎖定仍然是標準。去年,我們參觀了巴塞羅那的世界行動通訊大會,以瞭解更多有關的資訊,結論是,藉助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-GTP

PF_RING群集也已更新,因此無論何時執行nProbe的伺服器,傳入的流量都可以在所有正在執行的nProbe例項之間共享。這是通過尊重GTP隧道來實現的,因為PF_RING不會在外部資料包包絡上保持平衡,而是在隧道流量上保持平衡。使用此方法,PF_RING允許在多個例項之間平衡傳入網路流量(也在多個傳入介面上),從而監視單個伺服器上的多千兆位流量。

當然,nDPI能夠解析GTP封裝的流量,因此您可以配置nProbe(通過指定的模板-T)以在應用程式級別分析流量,從而瞭解第7層協議。

nProbe可以使用以下資訊元素通過NetFlow v9 / IPFIX匯出資訊:

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
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
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
並使用一些命令列選項將流量資訊儲存在轉儲檔案中:
--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已有用於永久監視某些國家/地區移動運營商的流量的案例。

 

相關文章