Pjsip la gi
Vì các User Agent phải kết nối, gửi các SIP request tới một SIP server chạy trên một địa chỉ có ip và port cố định .Do vậy phía server sẽ ghi nhận được ip: port mặt ngoài của thiết bị kết nối tới nó, SIP server sẽ dùng thông tin này để gửi lại các SIP response như hình dưới: Figure 5 : Giải pháp qua NAT cho các tín hiệu SIP Giải pháp truyền các gói tin RTP qua NAT Sử dụng STUN để xác định trước cặp ip:port của thiết bị NAT, gửi cặp này cho user agent kia, để nó có thể kết nối tới: 4.2.2 Figure 6: Giải pháp truyền các gói tin RTP qua NAT Tuy nhiên với giải pháp này, ta không thể đảm bảo 100% các user agent có thể giao tiếp với nhau vì nếu user agent ở dưới một symmetric nat thì dùng STUN sẽ không giải quyết được vấn đề. Chọn lựa chuẩn xây dựng hệ thống VoIP SIP hiện đang thể hiện là chuẩn được dùng và sẽ dùng phổ biến trong tương lai bởi sự đơn giản và hỗ trợ tương tác tốt giữa các hệ thống khác nhau. Các bản tin SIP được thể hiện dưới dạng text base và truyền đi trong mạng IP tương tự như HTTP. Ta có thể phát triển và xây dựng dịch vụ voice dựa trên SIP dễ và nhanh như phát triển các web pages .Nó không yêu cầu các hạ tầng mạng đặt biệc mà tận dụng các thiết bị, server của mạng IP có sẵn .Hơn nữa ngày nay đa số các thiết bị IP phone đều hỗ trợ SIP. Do vậy ta sẽ sử dụng SIP như là một giải pháp cho signaling protocol. 4.3 Để truyền tải và số hóa dữ liệu ta sử dụng giao thức RTP, số hóa âm thanh dùng codec theo chuẩn G.711 (cho chất lượng) và G.729 (cho việc cân bằng giữa chất lượng và băng thông) vì 2 codec trên cũng được hỗ trợ bởi đa số các IP phone ngày nay. Lựa chọn thư viện phát triển ứng dụng SIP trên client Môi trường phía client được lựa chọn để xây dựng demo là Android OS (android API 8). PJSIP là thư viện có thể sử dụng trên nhiều nền tảng, thư viện kích thước nhỏ (small footprint), Tích hợp sẵn các gói thư viện media, NAT để xây dựng ứng SIP client. PJSIP là thư viện viết bằng C có hiệu năng cao, ổn định, hỗ trợ nhiều nền tảng và hiện tại đang được phát triển mạnh mẽ. Ngoài ra, thư viện đi kèm PJSIP đã được đóng gói sẵn các thư viện xử lý media, NAT. Với những ưu điểm này, ta sử dụng PJSIP để phát triển ứng dụng demo phía client. 4.4 Lựa chọn SIP proxy SIP server là thành phần quan trọng trong hệ thống VoIP, cho phép các user agent trao đổi thông tin, đăng ký người dùng và trong suốt với hạ tầng mạng giữa nhiều người dùng .SIP server còn cung cấp các dịch vụ quan trọng khác như định tuyến cuộc gọi, các chính sách bảo mật, xác thực người dùng và quản lý trạng thái user agent .SIP server cần phải làm việc trên nhiều topo mạng (như các mạng công cộng, mạng di động, 3G…). SIP server cần có độ sẵn sàng cao, làm việc với nhiều giao dịch đồng thời và cần có khả năng mở rộng. Kamailio (tên gọi cũ OpenCER) là hệ thống open source dùng để triển khai sip server .Một SIP proxy xây dựng từ Kamailio có khả năng quản lý hàng nghìn cuộc gọi mỗi giây .Kamailio được duy trì và phát triển bởi một cộng đồng lớn các lập trình viên có kinh nghiệm, ngày càng hỗ trợ kết nối tới nhiều hệ thống viễn thông khác. 4.5 PHẦN II: XÂY DỰNG HỆ THỐNG VOIP 1 Khảo sát, phân tích yêu cầu Mục tiêu của hệ thống Xây dựng hệ thống để thử nghiệm tính khả thi của công nghệ Voip phục vụ cho các dự án tiếp theo của Trung tâm phần mềm Viettel. 1.2 1.3 Phân tích yêu cầu 1.3.1 Các ràng buộc thiết kế (Design Constraints) Sử dụng ngôn ngữ Java Server chạy nền tảng UNIX Công cụ phát triển là Eclipse tích hợp Android SDK 1.3.2 Các yêu cầu về hiệu năng (Performance) Đảm bảo nhiều người sử dụng đồng thời Chất lượng cuộc thoại trong phạm vi cho phép 1.4 Thiết kế tổng quan 1.4.1 Thiết kế kiến trúc hệ thống Hệ thống Voip được bao gồm hai thanh phần chính: Server và Client Figure 7: Mô hình hệ thống cần xây dựng Trong các phần trên ta đã nêu ra được các thành phần cần thiết mà hệ thống VoIP phải đáp ứng .Chúng ta có các user agent và server .Hệ thống sử dụng một mô hình phân tán peer-to-peer cùng với một signaling server 1.4.1.1 Client Client trong hệ thống là ứng dụng Voip Android được gọi là các User Agent (UA) .Voip Adroid có các vai trò là: User Agent Client (UAC) – Khi mà nó khởi tạo các SIP request (start SIP signaling) tới server • User Agent Server (UAS) – Khi nó trả lời SIP signaling đến từ các UAC 1.4.1.2 Server • Server được lựa chọn là Kamailio .Có hai chức năng chính làm proxy server và registrar server.Registrar server cung cấp các thông tin về user cho location server (location database) dựa trên các request đã nhận được từ user 1.5 Thực hiện, cài đặt và thử nghiệm hệ thống 1.5.1 Triển khai phía server: 1.5.1.1 Cài đặt |