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