skip to Main Content

CÁCH PHÂN TÍCH SIP CALLS TRÊN WIRESHARK

Khi gặp sự cố như cuộc gọi không thành công hoặc không có âm thanh trong SIP,hiện nay các thiết bị hầu hết đều hỗ trợ tính năng xuất file định dạng PCAP, chúng ta cần lấy tệp PCAP file định dạng có thể mở bằng Wireshark và kiểm tra các gói. Bài viết này nói về cách sử dụng Wireshark để phân tích các cuộc gọi SIP.

MỤC LỤC

Biểu thức bộ lọc của Wireshark

File định dạng  PCAP chứa tất cả các giao thức chạy trên network, Wireshark có các biểu thức để lọc các gói để có thể hiển thị các thông báo cụ thể. Dưới đây là một số danh sách chuỗi phổ biến:

Lọc Miêu tả
sip Lọc giao thức SIP
rtp Lọc luồng RTP
rtcp  Lọc các gói RTCP 
rtpevent Lọc các gói DTMF
ip.addr  Sử dụng địa chỉ IP để lọc các gói tin, e.g. ip.addr==192.168.5.150 or ip.addr!=192.168.5.150
udp.srcport Lọc gói phụ thuộc vào cổng nguồn UDP, e.g. udp.srcport==10000
udp.dstport  Lọc gói phụ thuộc vào cổng đích UDP, e.g. udp.destport==20000 or udp.srcport==10000 || udp.destport==20000
dns  Lọc giao thức DNS 

Wirehark có nhiều bộ lọc cho giao thức SIP

Sử dụng phổ biến nhất là sip.Method và sip.Call-ID.

Sử dụng sip method to filter sip messages: sip.Method == INVITE

Sử dụng call-id để lọc một cuộc gọi cụ thể: sip.Call-ID==20badbbf750c497a80d63ebb8a74a213

Wireshark có thể lọc với một số tham số đặc biệt trong gói, thông qua tùy chọn ‘Prepare a Filter’, chọn tham số bạn muốn và nhấp chuột phải sau đó bạn có thể thấy màn hình menu.

Phân tích SIP Call

Hiển Thị Danh sách SIP Call

Nhấn chuột chọn ‘Telephony > VOIP Calls‘, sau đó bạn có thể xem danh sách SIP Call.

Chúng ta có thể xem thông tin bên dưới:

  • Start Time và Stop Time của mỗi cuộc gọi
  • Initial Speaker là địa chỉ IP của người gọi.
  • Caller ID người gửi và nhận

Nhấn chọn cuộc gọi bạn muốn kiểm tra, Sau đó bạn có thể xem tùy chọn không hợp lệ Flow Sequence tự động có sẵn. Nhấn chọn Flow Sequence, chúng ta có thể thấy biểu đồ với một số chi tiết:

  • Luồng báo hiệu SIP giữa các UA khác nhau.
  • Hướng, nguồn và cổng đích của luồng RTP.
  • Codec của luồng RTP.

Lọc một SIP Call

Trong giao thức SIP, chúng ta có thể sử dụng call-id, from-tag, to-tag để xác định một cuộc gọi. Thông thường, SIP sẽ tạo chuỗi call-id ngẫu nhiên cho mỗi cuộc gọi, vì vậy chúng ta có thể đánh dấu một sip call bằng tham số call-id.

Xem hình sau về cuộc gọi SIP được lọc theo Call-ID.

SIP headers

Enable display raw for SIP message để không cần mở rộng mọi tiêu đề SIP hoặc các thông số SDP.

Có 2 trường trong SIP là INVITE request, SIP headers và SDP.

Liệt kê một số sip headers tại đây:

  • From: Caller URI
  • To: destination of the call
  • Contact: địa chỉ cho yêu cầu tiếp theo

Ngoài ra một số thông số nhập trong SDP:

  • media line: m=audio 4000 RTP/AVP 123 8 0 101
  • media direction: a=sendrecv
  • codec: a=rtpmap:123 opus/48000/2
  • ptime: a=ptime:20

 Phân tích RTP

Khi gặp sự cố về giọng nói, có thể kiểm tra sự cố sau với Wireshark:

Luồng RTP có tồn tại không?
Luồng RTP gửi và nhận có đúng địa chỉ IP và cổng không?
Luồng RTP có được giải mã theo đúng codec không?
Luồng RTP có được gửi đúng thời gian không?

Lọc luồng RTP
Sử dụng ‘rtp’ làm biểu thức để lọc các gói RTP.
Trên đồ thị luồng SIP Call, chúng ta có thể kiểm tra hướng RTP và codec.
Sử dụng menu ‘Telephony > RTP > RTP Streams‘.
Chúng ta có thể thấy tất cả các luồng RTP hiển thị và có thể thấy một số thông tin của các luồng RTP này, như cổng nguồn và cổng đích, SSRC, tải trọng, delta tối đa, tỷ lệ phần trăm bị mất của các gói và jitter.

Nhưng làm thế nào chúng ta có thể biết được luồng nào là luồng chúng ta muốn kiểm tra?Trên biểu đồ luồng cuộc gọi SIP, chúng ta có thể thấy nguồn và cổng đích của một luồng RTP
Dòng phương tiện của tin nhắn SDP trong tin nhắn INVITE hoặc 200OK
Giải mã gói UDP thành RTP
Như chúng ta biết RTP thường sử dụng truyền tải UDP, khi luồng SIP Call trong tệp PCAP chưa hoàn thành, Wireshark có thể không phân tích cú pháp các gói UDP thành các luồng RTP. chúng ta có thể giải mã các gói UDP thành RTP theo cách thủ công.

Phát luồng RTP
Hiện tại, Wireshark chỉ hỗ trợ chơi codec pcmu và pcma.

Chọn và Phát Luồng trong danh sách cuộc gọi

Phát một luồng RTP, trong danh sách Luồng RTP, Analyze > Play Streams

Chúng ta có thể thấy trình phát RTP sau khi nhấp vào nút Phát Luồng.

This Post Has 0 Comments

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *