BlogTổng hợp: SMS Roaming, Tính cước CAMEL/OCS và Kiến trúc báo hiệu SS7
Bố cục bài viết
Trang này
Ngày tạo
25/08/2026
Cập nhật
Lượt xem
15
Đọc
21m
Tổng hợp: SMS Roaming, Tính cước CAMEL/OCS và Kiến trúc báo hiệu SS7
Mục lục
- Luồng SMS Roaming MO qua SS7 (kèm OCS)
- Luồng SMS Roaming MT qua SS7: Direct Routing vs Home Routing
- Home Routed vs Local Breakout — có áp dụng cho SMS không?
- Cơ chế tính cước: vì sao roaming Reserve trước, nội mạng charge sau
- Vấn đề bảo mật: SMS Spoofing trên SS7
- Phân tích chi tiết từng layer SS7 cho MAP: MO-ForwardSM
- Sơ đồ đóng gói đầy đủ kèm chi tiết TPDU (sm-RP-UI)
- MTP1/2/3, SCCP, TCAP có cố định cho mọi báo hiệu SS7 không?
- ISUP — báo hiệu thiết lập cuộc gọi thoại trên SS7
- ISUP vs BICC — phân biệt Bearer Independent Call Control
- Phân tích thực chiến: trace CAMEL của một cuộc gọi thoại
- Xác minh bằng pcap thật: MO hay MT? Đính chính bằng bằng chứng ASN.1
- Tổng hợp toàn bộ báo hiệu của cuộc gọi (từ pcap)
- Cuộc gọi này là SIP, BICC hay TDM?
1. Luồng SMS Roaming MO qua SS7 (kèm OCS)
Thuê bao (MS) đang ở VPLMN, gửi SMS về SMSC của HPLMN. Giả định thuê bao prepaid, có SMS-CSI cấu hình sẵn trong HLR.
MS(roaming) VMSC/VLR (VPLMN) gsmSCF/OCS (HPLMN) SMSC (HPLMN)
| | | |
|--CP-DATA/RP-DATA->| | |
| (SMS-SUBMIT, | | |
| chứa đ/c SMSC) | | |
| | | |
| [VMSC check SMS-CSI | |
| -> có trigger CAMEL O-SMS] | |
| |--CAP: InitialDPSMS------>| |
| | (SS7 TCAP/SCCP, GT | |
| | định tuyến về HPLMN) | |
| | [OCS: RESERVE credit, |
| | áp tariff cho SMS] |
| |<-CAP: Continue/Connect---| |
| | SMS (hoặc ReleaseSMS | |
| | nếu bị chặn/hết tiền) | |
| |--MAP: MO-ForwardSM------------------------------>|
| | (SS7 TCAP/SCCP, GT tới SMSC HPLMN) |
| | | [SMSC forward tới B]
| |<-MAP: forwardSM-ack------------------------------|
| |--CAP: EventReportSMS---->| |
| | (OCS: COMMIT hoặc ROLLBACK) |
|<-CP-ACK/RP-ACK----| | |
Ghi chú:
- MS ↔ VMSC dùng RP/CP layer (không phải SS7 thuần); từ VMSC trở đi là SS7 thật (MAP, CAP trên TCAP/SCCP).
- Không có CAMEL trigger (postpaid): VMSC forward thẳng
MO-ForwardSM, cước tính offline qua CDR. ReleaseSMS(hết tiền/bị chặn) khiến VMSC không forward, trả lỗi RP-ERROR về MS.
2. Luồng SMS Roaming MT qua SS7: Direct Routing vs Home Routing
2.1. Direct Routing (truyền thống)
SMSC (HPLMN) HLR (HPLMN) VMSC/VLR (VPLMN) MS(roaming)
|--MAP: SRI-SM-------->| | |
| [HLR trả về MSC address hiện tại] |
|<-MAP: SRI-SM-ack-----| | |
| (IMSI + MSC/VMSC address ở VPLMN) | |
|--MAP: MT-ForwardSM------------------------->| |
| | [VMSC check T-CSI] |
| | |--CP-DATA/RP-DATA-->|
| | |<-CP-ACK/RP-ACK-----|
|<-MAP: forwardSM-ack--------------------------| |
Nhược điểm: SMSC/entity nước ngoài biết trực tiếp IMSI + MSC address thật → dễ bị khai thác spoofing/spam quốc tế.
2.2. SMS Home Routing (phổ biến hiện nay)
SMSC (HPLMN) SMS-Router/IP-SM-GW (HPLMN) HLR (HPLMN) VMSC/VLR (VPLMN)
|--MAP: SRI-SM-------->| | |
| [SMS-Router "giả lập" là MSC, | |
| trả về địa chỉ CHÍNH NÓ] | |
|<-MAP: SRI-SM-ack-----| | |
|--MAP: MT-ForwardSM-->| | |
| [SMS-Router tự query lại HLR, | |
| áp rule lọc fraud/spam/filter] | |
| |--MAP: SRI-SM (nội bộ)----->| |
| |<-MAP: SRI-SM-ack-----------| |
| |--MAP: MT-ForwardSM--------------------------->|
| |<-MAP: forwardSM-ack-------------------------- |
|<-MAP: forwardSM-ack--| | |
Ưu điểm: Ẩn thông tin định tuyến thật, cho phép lọc chống spoofing/spam/firewall SS7 trước khi tới VMSC thật.
3. Home Routed vs Local Breakout — có áp dụng cho SMS không?
- “Home Routed”/“Local Breakout” là thuật ngữ gốc dành cho định tuyến thoại roaming trong VoLTE/IMS (GSMA IR.65: S8HR, Local Breakout, Home Routed).
- MO-SMS trên SS7 luôn là “home routed” về bản chất vì địa chỉ SMSC cố định trong SIM, luôn trỏ về HPLMN — không tồn tại khái niệm local breakout.
- MT-SMS có 2 kiểu định tuyến thật (Direct Routing / SMS Home Routing — mục 2) nhưng dùng tên gọi khác, không phải “Local Breakout”.
- Khái niệm Local Breakout/Home Routed/S8HR chỉ thực sự áp dụng đúng nghĩa cho SMSoIP chạy trên hạ tầng IMS (SIP/IMS core), khác hoàn toàn kiến trúc SS7.
4. Cơ chế tính cước: vì sao roaming Reserve trước, nội mạng charge sau
4.1. Mô hình Reserve → Render → Commit/Refund (3GPP TS 32.240)
| Bước | Bản tin CAP | Hành động OCS |
|---|---|---|
| 1. Reserve | InitialDPSMS/InitialDP | Giữ chỗ (reserve) một khoản credit tạm thời |
| 2. Render service | (VMSC thực hiện forward/kết nối) | Dịch vụ được cung cấp thực tế |
| 3. Commit/Refund | EventReportSMS/ApplyChargingReport | Commit (trừ thật) nếu thành công, hoặc Rollback nếu lỗi |
4.2. So sánh Domestic vs Roaming
| Tiêu chí | Nội mạng (Domestic) | Roaming |
|---|---|---|
| Ai chịu rủi ro nếu không thu được tiền | Chính operator, rủi ro thấp | HPLMN vẫn phải trả phí IOT/SS7 transit cho VPLMN dù thuê bao hết tiền |
| Ai kiểm soát toàn bộ đường đi | HPLMN kiểm soát toàn bộ | VPLMN forward hộ — tài nguyên nước ngoài đã bị dùng trước khi biết có thu được tiền hay không |
| Kiến trúc phổ biến | SMSC-based: MSC forward trước, SMSC mới trigger charging | MSC/VLR-based CAMEL trigger: bắt buộc hỏi OCS trước khi cho forward |
| Nguyên tắc | “Làm trước, tính tiền sau” | “Xin phép trước, làm sau” (authorize-before-service) |
5. Vấn đề bảo mật: SMS Spoofing trên SS7
5.1. Các vấn đề chính
- Không xác thực Calling Party —
MO-ForwardSMkhông kiểm tra bên gửi có phải VMSC hợp lệ hay không; OA (Originating Address)/Sender ID có thể bị giả mạo tùy ý. - Rò rỉ thông tin qua SRI-SM — trả về IMSI thật + địa chỉ MSC cho bất kỳ ai truy vấn, dùng để định vị hoặc chuẩn bị SMS interception.
- Giả mạo Global Title — SCCP dựa hoàn toàn vào GT khai báo, không có PKI/chữ ký số xác thực.
- SS7-as-a-Service — truy cập SS7 hợp pháp bị bán/cho thuê trái phép (GT leasing).
- Thiếu kiểm tra chéo giữa các bản tin — không đối chiếu vị trí thật (VLR) với bản tin đến.
5.2. Bảng hệ quả
| Loại tấn công | Cơ chế | Hậu quả |
|---|---|---|
| SMS Sender ID Spoofing | Giả OA trong SMS-SUBMIT/MO-ForwardSM | Giả mạo brandname ngân hàng, lừa OTP |
| SMS Interception | SRI-SM + UpdateLocation giả | Đánh cắp OTP, chiếm tài khoản (2FA bypass) |
| Location Tracking | Khai thác SRI-SM/SRI | Định vị thuê bao không cần thiết bị |
| SMS Flooding/Fraud | Spam MO-ForwardSM giả | Quá tải SMSC, phát sinh chi phí interconnect giả |
5.3. Biện pháp giảm thiểu
- SMS Home Routing (mục 2.2).
- SS7 Firewall (GSMA FS.11, FS.19) — kiểm tra tính hợp lệ GT, chặn bản tin bất thường.
- Category 1/2/3 filtering theo GSMA.
- Sender ID Registration/Whitelisting tại SMSC.
- Dịch chuyển dần sang SMSoIP/RCS trên IMS.
5.4. Vì sao spoof được — cửa vào thật sự nằm ở đâu
| Layer | Trường | Có spoof được không | Vì sao |
|---|---|---|---|
| MTP3 | OPC | Khó hơn | Cần đã có kết nối vật lý/logic hợp lệ vào một Signaling Point |
| SCCP | CgPA (GT) | Dễ | Trường khai báo thuần túy, không xác thực |
| TCAP/MAP | sm-RP-OA, TP-OA, imsi | Rất dễ | Chỉ là field dữ liệu ASN.1, không đối chiếu danh tính thật |
Kết luận: một khi đã có một điểm truy cập hợp lệ vào mạng SS7, hầu như mọi trường logic ở layer SCCP/TCAP/MAP phía trên đều có thể tự do điền tùy ý — vì SS7 được thiết kế trên nguyên tắc “trust-by-default” giữa vài chục nhà mạng, không có cơ chế xác thực nội dung logic.
6. Phân tích chi tiết từng layer SS7 cho MAP: MO-ForwardSM
6.1. Chồng giao thức và tương ứng OSI
| Layer SS7 | Tương đương OSI | Vai trò chính |
|---|---|---|
| MTP1 | Layer 1 – Physical | Truyền tín hiệu vật lý (timeslot E1/T1 hoặc IP nếu SIGTRAN) |
| MTP2 | Layer 2 – Data Link | Đóng gói Signal Unit, đảm bảo truyền tin cậy giữa 2 node liền kề |
| MTP3 | Layer 3 cơ bản | Định tuyến theo Point Code (OPC/DPC), quản lý mạng |
| SCCP | Layer 3 mở rộng + 4 | Định tuyến theo Global Title (GT), phân biệt ứng dụng qua SSN |
| TCAP | Layer 5/6 | Quản lý giao dịch (Begin/Continue/End), mang Component |
| MAP | Layer 7 | Nghiệp vụ cụ thể: MO-ForwardSM, SRI-SM, UpdateLocation… |
6.2. Kịch bản ví dụ
Thuê bao Viettel +84987654321 roaming tại Singapore, gửi SMS về +84912000111, qua SMSC +84850888666.
- IMSI:
452012345678901 - VMSC (SingTel) Point Code:
2-100-3 - STP quốc tế phía VN Point Code:
3-050-1
6.3. MTP2 — Message Signal Unit (MSU)
| F | BSN/BIB | FSN/FIB | LI | SIO | SIF (chứa MTP3+SCCP+TCAP+MAP) | CK | F |
| Trường | Ý nghĩa | Ví dụ |
|---|---|---|
| F | Flag biên bản tin | 01111110 |
| BSN/FSN | Sequence Number, dùng ACK/retransmit | — |
| LI | Length Indicator | 45 byte |
| SIO | Cho biết layer trên (SCCP) | 0x03 |
| SIF | Chứa toàn bộ nội dung layer trên | — |
| CK | Checksum CRC16 | — |
6.4. MTP3 — Routing Label
| Trường | Ý nghĩa | Ví dụ |
|---|---|---|
| OPC | Point Code node gửi | 2-100-3 |
| DPC | Point Code node nhận kế tiếp (hop-by-hop, không phải đích cuối) | 3-050-1 |
| SLS | Chọn link (load balancing) | 5 |
| SI | Layer trên là gì | 3 (SCCP) |
⚠️ OPC/DPC chỉ định tuyến từng chặng, không phải địa chỉ logic đầu-cuối.
6.5. SCCP — định tuyến logic toàn cầu qua Global Title
| Trường | Ý nghĩa | Ví dụ |
|---|---|---|
| CdPA (Called Party Address) | GT + SSN đích | GT=84850888666, SSN=8 |
| CgPA (Calling Party Address) | GT + SSN nguồn | GT=84987654321, SSN=8 |
| Protocol Class | Loại dịch vụ | Class 0 (connectionless) |
STP dịch GT qua Global Title Translation (GTT) để tìm Point Code thật/GT trung gian tiếp theo — đây là cơ chế cho phép SMS “xuyên biên giới” đến đúng SMSC dù người gửi đang roaming.
6.6. TCAP — khung giao dịch
Transaction Portion: Package Type (Begin/Continue/End), OTID.
Dialogue Portion: Application-context-name (OID, ví dụ shortMsgMO-Relay-Context).
Component Portion: Component Type (Invoke/ReturnResult/ReturnError/Reject), Invoke ID, Operation Code (opCode=46 → mo-ForwardSM), Parameters (ASN.1 BER).
6.7. MAP — MO-ForwardSM-Arg
| Trường | Kiểu | Ý nghĩa | Ví dụ |
|---|---|---|---|
sm-RP-DA | CHOICE | Địa chỉ đích = SMSC | 84850888666 |
sm-RP-OA | CHOICE | Địa chỉ thuê bao gửi | 84987654321 |
sm-RP-UI | OCTET STRING | Chứa nguyên vẹn SMS-SUBMIT TPDU | (xem mục 7) |
imsi | optional | IMSI thuê bao | 452012345678901 |
moreMessagesToSend | optional BOOLEAN | Còn tin chờ gửi tiếp | FALSE |
7. Sơ đồ đóng gói đầy đủ kèm chi tiết TPDU (sm-RP-UI)
╔══════════════════════════════════════════════════════════════════════════╗
║ MTP LEVEL 2 — MSU: F|BSN,BIB|FSN,FIB|LI|SIO(0x03=SCCP)|SIF|CK|F ║
║ ┌────────────────────────────────────────────────────────────────────┐ ║
║ │ MTP LEVEL 3 — OPC=2-100-3, DPC=3-050-1, SLS=5, SI=3 (SCCP) │ ║
║ │ ┌──────────────────────────────────────────────────────────────┐ │ ║
║ │ │ SCCP — UDT: CdPA(GT=84850888666,SSN=8) CgPA(GT=84987654321) │ │ ║
║ │ │ ┌────────────────────────────────────────────────────────┐ │ │ ║
║ │ │ │ TCAP: Begin/OTID=0x1A2B3C4D, AC=shortMsgMO-Relay-Context│ │ │ ║
║ │ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ ║
║ │ │ │ │ Invoke: InvokeID=1, opCode=46 (mo-ForwardSM) │ │ │ │ ║
║ │ │ │ │ ┌────────────────────────────────────────────┐ │ │ │ │ ║
║ │ │ │ │ │ MAP MO-ForwardSM-Arg │ │ │ │ │ ║
║ │ │ │ │ │ sm-RP-DA = 84850888666 (SMSC) │ │ │ │ │ ║
║ │ │ │ │ │ sm-RP-OA = 84987654321 (thuê bao A) │ │ │ │ │ ║
║ │ │ │ │ │ imsi = 452012345678901 │ │ │ │ │ ║
║ │ │ │ │ │ moreMessagesToSend = FALSE │ │ │ │ │ ║
║ │ │ │ │ │ sm-RP-UI = SMS-SUBMIT TPDU (TS 23.040): │ │ │ │ │ ║
║ │ │ │ │ │ ┌────────────────────────────────────────┐ │ │ │ │ │ ║
║ │ │ │ │ │ │ Octet1: TP-MTI=01(SUBMIT) RD=0 VPF=00 │ │ │ │ │ │ ║
║ │ │ │ │ │ │ SRR=0 UDHI=0 RP=0 │ │ │ │ │ │ ║
║ │ │ │ │ │ │ TP-MR = 0x05 │ │ │ │ │ │ ║
║ │ │ │ │ │ │ TP-DA: Len=11 Type=0x91 Digits=84912000111│ │ │ │ │ │ ║
║ │ │ │ │ │ │ TP-PID = 0x00 (SMS thường) │ │ │ │ │ │ ║
║ │ │ │ │ │ │ TP-DCS = 0x00 (GSM 7-bit) │ │ │ │ │ │ ║
║ │ │ │ │ │ │ TP-UDL = 26 ký tự │ │ │ │ │ │ ║
║ │ │ │ │ │ │ TP-UD = "Chao ban, day la SMS test" │ │ │ │ │ │ ║
║ │ │ │ │ │ │ (GSM 7-bit packed) │ │ │ │ │ │ ║
║ │ │ │ │ │ └────────────────────────────────────────┘ │ │ │ │ │ ║
║ │ │ │ │ └────────────────────────────────────────────┘ │ │ │ │ ║
║ │ │ │ └──────────────────────────────────────────────────┘ │ │ │ ║
║ │ │ └────────────────────────────────────────────────────────┘ │ │ ║
║ │ └──────────────────────────────────────────────────────────────┘ │ ║
║ └────────────────────────────────────────────────────────────────────┘ ║
╚══════════════════════════════════════════════════════════════════════════╝
Bảng chi tiết TPDU (TS 23.040)
| Octet | Trường | Kích thước | Giải thích |
|---|---|---|---|
| 1 | Flags (MTI, RD, VPF, RP, UDHI, SRR) | 1 byte | Cờ điều khiển hành vi bản tin |
| 2 | TP-MR | 1 byte | Số tham chiếu để đối chiếu ACK/lỗi |
| 3..n | TP-DA | biến đổi | Length + Type-of-Address + số B dạng BCD |
| n+1 | TP-PID | 1 byte | Loại giao thức trên |
| n+2 | TP-DCS | 1 byte | Bảng mã: GSM 7-bit / 8-bit / UCS-2 |
| n+3 | TP-VP | 0/1/7 byte | Chỉ có nếu TP-VPF ≠ 00 |
| n+4 | TP-UDL | 1 byte | Số ký tự nội dung |
| n+5.. | TP-UD | biến đổi | Nội dung thật, encode theo TP-DCS |
Lưu ý mã hóa: SMS có dấu (VD tiếng Việt) → TP-DCS=0x08 (UCS-2), mỗi ký tự 2 byte → tối đa 70 ký tự/segment thay vì 160 ký tự GSM 7-bit.
Điểm mấu chốt về spoof: từ SCCP CgPA/CdPA đến sm-RP-OA, imsi, TP-DA/TP-UD — tất cả là trường ASN.1/octet string do bên gửi tự soạn, không có chữ ký/checksum xác thực xuyên suốt các layer.
8. MTP1/2/3, SCCP, TCAP có cố định cho mọi báo hiệu SS7 không?
| Layer | Cố định cấu trúc? | Cố định luôn xuất hiện? |
|---|---|---|
| MTP1/2/3 | Có (theo chuẩn ITU/ANSI tương ứng) | Luôn xuất hiện với mọi traffic SS7 |
| SCCP | Có (CdPA/CgPA/SSN/GT) | Không — ISUP bỏ qua hoàn toàn, chạy thẳng trên MTP3 |
| TCAP | Có (Begin/Continue/End, Invoke/Result…) | Chỉ dùng khi tầng trên là MAP/CAP/INAP (không dùng cho ISUP) |
| MAP/CAP/INAP/ISUP | Khác nhau hoàn toàn | Lớp “thay đổi” theo từng loại nghiệp vụ |
Vì sao ISUP là ngoại lệ: ISUP chỉ cần định tuyến giữa các tổng đài kế cận (Point Code), không cần định tuyến logic toàn cầu như MAP (SMSC ở HPLMN bất kỳ) → không cần GT-based routing (SCCP), cũng không cần khung giao dịch TCAP.
TCAP là “người vận chuyển mù”: khung TCAP cố định, nhưng nội dung Operation Code/Parameter bên trong hoàn toàn phụ thuộc Application-Context-Name để biết đang là MAP, CAP hay INAP.
9. ISUP — báo hiệu thiết lập cuộc gọi thoại trên SS7
9.1. Vì sao ISUP không cần SCCP/TCAP
| MAP/CAP (SMS, IN) | ISUP (thoại) | |
|---|---|---|
| Đối tượng định tuyến | Ứng dụng logic, cần GT | Trung kế vật lý giữa 2 tổng đài kế cận |
| Đơn vị định danh phiên | OTID/DTID | CIC (Circuit Identification Code) |
| Cần GTT? | Có | Không — chỉ cần Point Code tổng đài kế tiếp |
9.2. Chồng giao thức
MTP3 Routing Label (OPC, DPC, SLS, SI=5 ISUP)
→ ISUP Message trực tiếp: CIC, Message Type (IAM/ACM/ANM...),
Mandatory Fixed Part, Mandatory Variable Part, Optional Part
9.3. Kịch bản ví dụ — IAM (Initial Address Message)
A (+84987654321, Viettel) gọi B (+84912000111, VinaPhone), CIC=45, MSC Viettel PC=1-020-5, MSC VinaPhone PC=1-030-2.
| Trường IAM | Giá trị ví dụ |
|---|---|
| CIC | 45 (trỏ thẳng timeslot TDM mang thoại thật) |
| Nature of Connection Indicator | 0x00 |
| Forward Call Indicators | national call, ISUP preferred |
| Calling Party’s Category | subscriber, ordinary |
| Transmission Medium Requirement | speech |
| Called Party Number | 912000111 |
| Calling Party Number | 987654321 |
Lưu ý: ISUP không mang thoại; CIC chỉ là ID logic trỏ tới timeslot TDM đã đấu nối vật lý từ trước — bearer thật truyền song song, tách biệt (Common Channel Signaling).
9.4. Chuỗi bản tin đầy đủ
MSC A MSC B
|--------- IAM (CIC=45, số B, số A) --------->|
|<-------- ACM (Address Complete) ------------|
|<-------- CPG (Call Progress, optional) -----|
|<-------- ANM (Answer) ----------------------| ← bắt đầu tính cước
|========= Thoại 2 chiều qua CIC=45 ==========|
|--------- REL (Release) --------------------->|
|<-------- RLC (Release Complete) -------------|
10. ISUP vs BICC — phân biệt Bearer Independent Call Control
| ISUP | BICC | |
|---|---|---|
| Bối cảnh | Mạng TDM truyền thống | Mạng NGN, core chuyển sang IP/ATM nhưng cần tương thích ISUP |
| Đặc điểm cốt lõi | Call control và Bearer control gắn chặt | Tách rời Call Control khỏi Bearer Control |
| Bearer | Bắt buộc TDM (E1/T1, 64kbps) | Có thể IP (RTP) hoặc ATM (AAL2) |
| CIC | Trỏ trực tiếp timeslot TDM thật | CIC ảo — chỉ ID logic, bearer thật đàm phán qua bản tin APM |
| Layer bên dưới | MTP3 hoặc SIGTRAN | Thường SIGTRAN (M3UA/SCTP/IP) |
| Chuẩn | ITU-T Q.761-Q.764 | ITU-T Q.1901 |
Kiến trúc NGN điển hình:
MSC-Server A -- BICC (SIGTRAN) -- MSC-Server B [chỉ báo hiệu: IAM, APM, ACM, ANM]
| |
└─ H.248/Megaco điều khiển Media Gateway ─┘
[RTP thoại thật đi trực tiếp giữa 2 Media Gateway,
KHÔNG qua MSC-Server]
11. Phân tích thực chiến: trace CAMEL của một cuộc gọi thoại
Trace ban đầu (ảnh chụp) cho thấy giao dịch CAMEL O-BCSM/T-BCSM giữa cổng 1051 và 1800:
| Bản tin | Ý nghĩa |
|---|---|
invoke initialDP | MSC báo có cuộc gọi, xin chỉ thị OCS |
invoke requestReportBCSMEvent + applyCharging + continue | OCS: theo dõi sự kiện, Reserve credit, cho phép tiếp tục |
invoke eventReportBCSM | Báo Answer — thuê bao đã trả lời |
GSM MAP: noteMM-Event | Sự kiện di động (đổi cell/vùng định vị) |
invoke applyChargingReport + eventReportBCSM | Báo mức tiêu thụ + sự kiện kết thúc |
invoke releaseCall | OCS ra lệnh giải phóng cuộc gọi |
Giả thuyết ban đầu (chỉ dựa vào tên operation, chưa xem tham số): nghi ngờ đây là cuộc gọi MO, và cuộc gọi bị cắt do hết tiền (vì ReleaseCall đến ngay sau ApplyChargingReport).
Giả thuyết này sau đó được kiểm chứng lại bằng file pcap thật ở mục 12 — và hóa ra sai một phần quan trọng.
12. Xác minh bằng pcap thật: MO hay MT? Đính chính bằng bằng chứng ASN.1
Dùng tshark decode toàn bộ tham số InitialDPArg và EventReportBCSMArg.
12.1. Bằng chứng quyết định
eventTypeBCSM: termAttemptAuthorized (12) → DP12, thuộc T-BCSM
eventTypeBCSM: tAnswer (15) → tiền tố "t" = terminating
eventTypeBCSM: tDisconnect (17) → tiền tố "t" = terminating
→ Đây là cuộc gọi MT (Terminating), không phải MO như suy đoán ban đầu (nếu là MO phải là collectedInfo(2), oAnswer, oDisconnect).
12.2. Thông tin trích từ InitialDPArg
| Trường | Giá trị | Diễn giải |
|---|---|---|
| callingPartyNumber | 255672222882 | Số đang gọi đến (bên A) |
| calledPartyNumber | 255622016655 | MSISDN thuê bao đang xét (bên B) |
| IMSI | 640092981618133 | MCC=640,MNC=09 → Halotel (Viettel Tanzania) |
| bearerCapability | 3.1kHz audio, Circuit mode, 64kbit/s | Thoại thường |
12.3. Đính chính giả thuyết “hết tiền”
ApplyChargingArg: maxCallPeriodDuration = 1800 giây (Reserve rất rộng rãi)
eventReportBCSM (tDisconnect): releaseCause = 16 = "Normal call clearing"
Thời lượng thực tế Answer→Disconnect: ~107 giây (<< 1800 giây Reserve)
→ Cuộc gọi kết thúc bình thường do một bên gác máy, KHÔNG phải do hết credit. ReleaseCall chỉ là bước đóng phiên CAMEL đúng thủ tục sau khi đã nhận báo cáo Disconnect.
Bảng so sánh trước/sau khi có bằng chứng thật
| Suy đoán (chỉ tên operation) | Thực tế (tham số ASN.1) | |
|---|---|---|
| MO hay MT | MO | MT |
| Lý do kết thúc | Nghi hết tiền | Kết thúc bình thường |
13. Tổng hợp toàn bộ báo hiệu của cuộc gọi (từ pcap)
Lọc đúng theo TCAP Dialogue ID: Begin otid=03ed7726 (initialDP) ↔ otid=38035cfc (SCF tự cấp).
| Giờ (ICT) | Hướng | Operation | Ý nghĩa |
|---|---|---|---|
| 05:30:33.903 | SSF→SCF | initialDP | Báo cuộc gọi đến (DP12 termAttemptAuthorized) |
| 05:30:34.093 | SCF→SSF | SACK | Transport ACK |
| 05:30:34.347 | SCF→SSF | requestReportBCSMEvent+applyCharging+continue | 3 chỉ thị gộp: theo dõi, Reserve 30 phút, cho tiếp tục |
| 05:30:34.6–35.0 | SCF→SSF | (lặp lại 3 lệnh trên riêng lẻ) | Khả năng duplicate do capture 2 link dự phòng SIGTRAN |
| 05:30:42.879 | SSF→SCF | eventReportBCSM (tAnswer) | B đã trả lời, bắt đầu tính cước |
| 05:30:43.142 | SSF→SCF | eventReportBCSM (trùng) | Duplicate |
| 05:32:29.979 | SSF→SCF | applyChargingReport+eventReportBCSM (tDisconnect) | Báo tiêu thụ ~107s + kết thúc bình thường |
| 05:32:30.254 | SSF→SCF | (trùng) | Duplicate |
| 05:32:30.520 | SCF→SSF | releaseCall | Đóng phiên CAMEL |
| 05:32:30.630 | SSF→SCF | SACK | Transport ACK |
Các bản tin loại trừ (thuộc dialogue/TCAP OTID khác, KHÔNG phải cuộc gọi này): activityTest/releaseCall (otid=2002edd4), requestReportBCSMEvent+connect (otid=340b0bed — cuộc gọi khác đang xử lý song song), 2× noteMM-Event GSM MAP (otid khác, serviceKey=1 khác serviceKey=12 của cuộc gọi này).
Chồng giao thức thực tế:
Transport: SCTP (thay cho MTP1/2/3 truyền thống — SIGTRAN)
Network: M3UA (đóng vai trò MTP3)
Routing: SCCP (GT + SSN=CAP)
Session: TCAP (Begin/Continue/End)
Ứng dụng: CAP v3 (initialDP, RRBE, applyCharging, continue,
eventReportBCSM ×2, applyChargingReport, releaseCall)
14. Cuộc gọi này là SIP, BICC hay TDM?
Kết quả kiểm tra trực tiếp
Toàn bộ 4560 frame trong pcap chỉ gồm SCTP→M3UA→SCCP→TCAP→CAMEL/GSM MAP, và một nhánh TCP/TLS hoàn toàn không liên quan (cổng 5701=Hazelcast, 8086=InfluxDB, 27017=MongoDB — hạ tầng nội bộ OCS/mediation). Không có frame ISUP, BICC, hay SIP nào trong file.
Vì sao đây là điều bình thường
Giao diện CAP giữa gsmSSF (MSC) và gsmSCF (SCP/OCS) tách biệt vật lý hoàn toàn khỏi giao diện thiết lập kênh thoại thật (ISUP/BICC/SIP) giữa các tổng đài:
MSC/MSC-Server
├── CAP (qua SIGTRAN) ──► SCP/OCS ← nằm trong pcap này
└── Call control tới tổng đài kế tiếp ← KHÔNG nằm trong pcap này
(ISUP TDM, hoặc BICC, hoặc SIP-I/SIP)
CAMEL được thiết kế “bearer-agnostic” — hoàn toàn không phụ thuộc/không tiết lộ công nghệ chuyển mạch bên dưới.
Manh mối duy nhất — không đủ kết luận
bearerCapability: 3.1kHz audio, Circuit mode, 64kbit/s — là định dạng IE kiểu Q.763/ISUP cổ điển, nhưng ISUP, BICC, và cả SIP-I (khi đóng gói ISUP trong SIP) đều dùng chung định dạng này → không phân biệt được.
Muốn xác định chính xác cần gì
| Cần thêm capture tại | Dấu hiệu nhận biết |
|---|---|
| Link E1 MTP2/MTP3 giữa 2 MSC | Thấy IAM/ACM/ANM chuẩn ISUP → TDM/ISUP |
Link SIGTRAN dissector là bicc (không phải isup) | Có thêm bản tin APM đàm phán codec → BICC |
| Link IP mang SIP | INVITE có Content-Type: application/ISUP (SIP-I) hoặc chỉ SDP thuần → SIP |
Kết luận: Không thể xác định SIP/BICC/TDM chỉ từ file pcap chứa lớp CAP này — cần một bản capture khác tại đúng điểm thiết lập cuộc gọi thật.