Năm 2024, Yealink – một trong những thương hiệu hàng đầu về thiết bị truyền…
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