NHIỆM VỤ VÀ NỘI DUNG: Thiết kế hệ thống VoIP cho nhà cung cấp dịch vụ có khả năng hỗ trợ số lượng cuộc gọi lớn, đáp ứng các yêu cầu của một nhà cung cấp dịch vụ bao gồm khả năng dự phòn
MÔ HÌNH VOIP
Giới thiệu
VoIP hay còn đư ợc gọi dưới các tên khác như: Internet Telephony, IP Telephony, Broadband Telephony, Broadband Phone và Voice over Broadband VoIP là ứng dụng truyền thoại thời gian thực trên nền Internet bằng các kết nối IP Trong đó các tín hiệu âm thanh tương tựđược lấy mẫu để chuyển đổi thành tín hiệu số Các tín hiệu này sau đó sẽ trở thành dữ liệu gói trên nền internet như các dữ liệu thông thường, các dữ liệu này được nén, mã hóa cho phù hợp với ứng dụng thoại và được chuyển đến đầu cuối Khi thiết bị đầu cuối nhận được các dữ liệu gói này sẽ chuyển ngược trở lại thành tín hiệu thoại như ứng dụng thoại tương tự thông thường Các giao thức báo hiệu thường được sử dụng trong hệ thống VoIP là H.323, SIP (Sessions Initial Protocol) [3] Trong khi giao thức truyền tải trong mạng VoIP thường được sử dụng là RTP (Real-Time Transport Protocol)/RTCP (Real-time Transport Control Protocol) [4].
Ki ế n trúc h ệ th ố ng VoIP
VoIP là hệ thống chuyển mạch mềm thường được xây dựng gồm các thành phần tiêu biểu sau [5]:
Hình 2.1: Thành phần mô hình VoIP Trong đó các thành phần của hệ thống bao gồm:
SIP Proxy: Là Server quản lý chuyển tiếp thiết lập cuộc gọi cho thuê bao
(User) hay chuyển tiếp giữa các SIP proxy
User Provision: Giao diện thiết lập User hệ thống
PSTN Gateway: Giao tiếp của hệ thống VoIP với PSTN
Nat Traversal: Giao tiếp hệ thống qua NAT
Acounting and CDR generation: Lưu nhật kí thoại và tính cước
Monitor Tool: Công cụ giám sát tài nguyên hệ thống
Database: Server chuyên phục vụ cơ sở dữ liệu cho hệ thống như: thông tin
User, thông tin cấu hình, thông tin cước…
Giao th ứ c trong VoIP
Trong phần này chúng tôi giới thiệu về các giao thức báo hiệu và truyền tải được sử dụng trong hệ thống VoIP Cụ thể, với giao thức báo hiệu ta đề cập tới giao thức SIP, trong khi giao thức truyền tải đề cập tới giao thức RTP/RTCP
Mô hình VoIP Trang 5 HVTH: KS Cao Hữu Thuyết
SIP (Sessions Initial Protocol) [3] là một giao thức điều khiển và đã đư ợc chuẩn hóa bởi IETF (Internet Engineering Task Force) [23] Nhiệm vụ của nó là thiết lập, hiệu chỉnh và xóa các phiên làm việc giữa người dùng Các phiên làm việc cũng có thể là hội nghị đa phương tiên, cuộc gọi điện thoại điểm-điểm,….SIP được sử dụng kết hợp với các chuẩn giao thức IETF khác như là SAP (Session Advertisement Protocol) [6], SDP (Session Description Protocol) [7] Các trường trong header của SIP tương tự của HTTP (Hypertext Transfer Protocol) [9] về cả cấu trúc và ngữ nghĩa Nó bao gồm các yêu cầu được gởi đến từ người sử dụng SIP client đến SIP Server Server xử lý các yêu cầu và đáp ứng đến client Một thông điệp yêu cầu, cùng với các thông điệp đáp ứng tạo nên sự thực thi SIP
2.3.1.2 Các thành phần của SIP
SIP gồm 2 thành phần cơ bản là SIP client (là các thiết bị phần cứng hoặc phần mềm sử dụng giao thức SIP ví dụ như SIP phone…) và SIP Server (là các thiết bị được cài đặt để xử lý các bản tin SIP) Trong SIP Server có các thành phần quan trọng như: Proxy Server, Redirect Server, Location Server, Registrar Server
Proxy Server: là SIP Server thay mặt SIP client để chuyển tiếp các bản tin SIP tới thành phần khác trong hệ thống Như vậy, chức năng chính của nó trong mạng là định tuyến các bản tin SIP đến nơi yêu cầu Proxy Server cũng cung cấp các chức năng xác thực trước khi thực hiện định tuyến cuộc gọi
Hình 2.2: Mô hình Proxy Server
Redirect Server: Là một thành phần trong hệ thống SIP Server, Server này sẽ trả về cho đối tượng phát bản tin SIP địa chỉ đích mà nó cần để nó tự liên lạc với đích trực tiếp Redirect Server cung cấp khả năng di chuyển vị trí cho người dùng
Hình 2.3: Mô hình Redirect Server Registrar Server: là Server nhận bản tin SIP REGISTER yêu cầu và cập nhật thông tin từ bản tin request vào “location database” nằm trong Location Server Location Server: lưu thông tin trạng thái vị trí hiện tại của người dùng trong mạng SIP
SIP là giao thức tiết lập phiên khá đơn giản được hình thành trên cơ sở HTTP nên có cấu trúc khá đơn giản, các phần tử SIP giao tiếp với nhau thông qua các bản tin SIP đã được chuẩn hóa [RFC 3261] Có hai loại bản tin trong SIP là bản tin yêu cầu (SIP Request) và bản tin đáp ứng (SIP Response)
Bản tin yêu cầu: được gửi từ Client tới Server RFC 3261 định nghĩa 6 kiểu bản tin SIP Request cho phép User Agent (UA) và Proxy có thể xác định người dùng, khởi tạo, sửa đổi, hủy một phiên [3]:
STT Bản tin Nội dung bản tin
1 INVITE Mời thực hiện cuộc gọi
2 ACK Xác nhận nhận gói thành công
3 BYE Kết thúc cuộc gọi
5 REGISTER Đăng kí user lên proxy
6 OPTIONS Xác định năng lực máy chủ
Mô hình VoIP Trang 7 HVTH: KS Cao Hữu Thuyết
Bảng 2.1: Bản tin SIP Request
Cấu trúc bản tin SIP Request [3], gồm 3 phần:
Bản tin đáp ứng: Server gửi bản tin SIP response tới Client để báo về trạng thái của SIP Request mà Client gửi trước đó Các SIP Response được đánh số từ
100 đến 699, được chia thành các lớp nghĩa khác nhau [3]:
STT Mã bản tin Loại bản tin
1 1xx Các bản tin chung
2 2xx Các bản tin báo hiệu thành công
3 3xx Các bản tin chuyển địa chỉ
4 4xx Các bản tin thể hiện yêu cầu không được đáp ứng
5 5xx Các bản tin báo hiệu sự cố máy chủ
6 6xx Các bản tin báo hiệu sự cố toàn mạng
Bảng 2.2: Bản tin SIP Response
Cấu trúc bản tin SIP Response [3], gồm 3 phần:
- Body: SDP answer Ý nghĩa của các trường trong phần Tiêu đề (Headers) của các bản tin SIP [3]:
Tiêu đề SIP Mô tả
From Thường là AOR (Address of Record) của người gửi Nó bao gồm SIP hoặc SIPS URI (Uniform Resource Identifiers) và với tùy chọn tên được hiển thị
To Mô tả người nhận của bản tin SIP, AOR của người nhận Với chức năng forward hay redirect thì không phải là địa chỉ người nhận Trường này giống trường From
Call-ID Định nghĩa series của bản tin SIP Call-ID phải được xác định trong mọi bản tin SIP được gửi bởi tất cả các UA trong một dialog
Cseq Chứa một giá trị nguyên và tên phương thức Trường này dùng để xác định, sắp xếp, đánh dấu chuỗi SIP request trong một dialog Cseq có thể khác nhau giữa bản tin được truyền lại và truyền mới
Via Xác định đường đi được chỉ ra request và các response sẽđược gửi
Contact Chứa SIP hoặc SIPS URI của UA muốn nhận được SIP request mới
Allow Liệt kê tập các phương thức SIP được hỗ trợ bởi UA
Supported Liệt kê tập các phần mở rộng của SIP hỗ trợ bởi UA
Require Trường này rất giống như trường Supported nhưng là của các
UA ở xa cần thiết cho một transaction được xử lý
Content-Type Kiểu của phần thân của bản tin SIP (nếu có phần thân)
Content-Length Kích thức của phần thân bản tin SIP Trường này là bắt buộc khi bản tin SIP được truyền trên TCP
Bảng 2.3: Các trường trong Tiêu đề bản tin SIP
2.3.1.4 Quy trình xử lý cuộc gọi SIP
Quá trình xử lý của một Proxy Server: Proxy Server là SIP Server thay mặt SIP Client chuyển tiếp các bản tin SIP tới thành phần khác trong hệ thống
Hình 2.4: Quá trình xử lý cuộc gọi của Proxy Server
Khi một user được khởi tạo (hoặc đã đư ợc khởi tạo nhưng khởi động lại) thì phải đăng ký với Registrar Khi user đang tồn tại trong hệ thống thì không cần phải đăng ký nữa Hai user A và user B xét ở hình trên cùng một domain Ngữ cảnh ở đây là user A gọi cho user B
Mô hình VoIP Trang 9 HVTH: KS Cao Hữu Thuyết
Hoạt động của Proxy Server trong trường hợp này được trình bày theo các bước:
Bước 1: User B đăng kí đến Server Register, tại đây diễn ra quá trình xác thực thông tin đăng kí (giả sử user B mới khởi động)
Bước 2: Server Register gởi toàn bộ thông tin đăng kí của user (username, ip, port, expire….) đến Location Server Tại đây các thông tin sẽ được ghi vào Database để sử dụng khi cần thiết
Các mô hình VoIP trong th ự c t ế
2.4.1 Mô hình VoIP cho doanh nghiệp vừa và nhỏ
Mô hìnhVoIP cho doanh nghiệp vừa và nhỏ chủ yếu tập trung vào các nhu cầu gọi nội bộ Vì vậy, sốlượng thuê bao không nhiều, nhu cầu về bảo mật không cao
Do đó, về cơ bản cấu hình mạng không lớn và chi phí cho hệ thống là không cao
2.4.2 Mô hình VoIP cho doanh nghiệp lớn Đối với những công ty hay tập đoàn lớn, thì mô hình này rất phù hợp Lớn hơn nữa, nếu nhu cầu mở rộng là nhiều, liên lạc không chỉ là nội bộ mà có thể mang tính chất toàn cầu, tức là có yếu tố liên kết, khi đó mô hình nà y gần như là mô hình của một nhà cung cấp, vì không những cung cấp nội bộ tập đoàn (công ty) mà còn liên kết với các nhà cung cấp khác, thông qua đó có thể liên lạc với những đối tượng khác nhau Phát sinh vấn đề về trả phí liên kết với các nhà cung cấp dịch vụ khác
Và khi đó, chính là mô hình VoIP cho các nhà cung cấp
2.4.3 Mô hình VoIP cho ISP – Các nhà cung cấp dịch vụ
Mô hình VoIP cho ISP thực sự rất phức tạp, vì quy mô số thuê bao lớn, số lượng đối tượng khách hàng nhiều, số lượng và chủng loại liên kết với các nhà cung cấp khác phong phú Khách hàng có thể là cá nhân, xí nghiệp, công ty hoặc thậm chí là tập đoàn Vậy hội tụ lại chỉ là liên kết của rất nhiều nhóm doanh nghiệp (xí nghiệp, công ty) khác nhau Khi đó, vấn đề đặt ra không chỉ là dung lượng, đó là các dịch vụ giá trị gia tăng khác, vì sẽ có sự cạnh tranh giữa các ISP khác nhau Đây cũng là điểm khác biệt nhiều nhất giữa mô hình VoIP cho Doanh nghiệp và mô hình VoIP cho ISP
2.4.4 So sánh giữa các mô hình
Khoảng cách vật lý các thuê bao/nhóm thuê bao
Nhu cầu dịch vụ giá trị gia tăng
Nhu cầu sử dụng bản quyền
Chi phí thực hiện (Tương đối)
Doanh nghiệp vừa và nhỏ
Vừa Thường là gần Ít Có/
Doanh nghiệp lớn Lớn Gần/Xa Vừa Có Nhiều Lớn Thuê
Nhà cung cấp Rất lớn Gần/Xa Nhiều Có Nhiều Rất Lớn Thuê/ Đầu tư Bảng 2.4: So sánh các mô hình VoIP
Trong phần so sánh này, có phần “Nhu cầu sử dụng bản quyền” Thực tế việc sử dụng các phần mềm thương mại khuyến khích nên dùng bản quyền Tuy nhiên, với việc phát triển không ngừng hệ thống các phần mềm mã nguồn mở hiện nay, ít nhiều kích thích các nhà cung cấp tự phát triển cho riêng mình một hệ thống dựa trên những phần mềm công cụ sử dụng mã nguồn mở Do đó, cũng ảnh hướng rất nhiều đến chi phí để thực hiện
Mô hình VoIP Trang 15 HVTH: KS Cao Hữu Thuyết
• Số lượng thuê bao cần sử dụng dịch vụ
Qua chương này, chúng tôi có khái niệm về VoIP và kiến trúc của một hệ thống VoIP Ngoài ra, chúng tôi cũng li ệt kê các giao thức hay được sử dụng trong hệ thống: báo hiệu, truyền tải thoại Bên cạnh đó, các mô hình VoIP trong thực tế cho thấy việc xác định rõ nhu cầu thực của một doanh nghiệp hay nhà cung cấp dịch vụ sẽ quyết định mô hình cần thiết để triển khai Đó là:
• Khoảng cách vật lý của các thuê bao, nhóm thuê bao
• Nhu cầu dịch vụ giá trị gia tăng
• Mức độ bảo mật dữ liệu
• Nhu cầu sử dụng bản quyền
Song, sau tất cả các phân tích và so sánh trên, chúng tôi thấy yếu tố hết sức quan trọng là hạ tầng mạng Bởi yếu tố này quyết định rất lớn đến chất lượng dịch vụ VoIP Vì vậy, nếu là nhà cung cấp dịch vụ thì, rõ ràng phải quan tâm nhiều và có trách nhiệm với dịch vụ mình cung cấp cho khách hàng
Tuy nhiên, trong phạm vi đềtài này xem như mạng lõi sẽ thuê của một đối tác khác, vì vậy có thể yêu cầu về mức độ ưu tiên cho VoIP.
MÔ HÌNH VOIP CHO ISP
Thiết kế Mô hình VoIP cho ISP
Xây dựng một hệ thống VoIP cho các nhà cung cấp đảm bảo tính khả thi, hiệu quả, và có:
- Dung lượng lớn: Đáp ứng khoảng 5000 cuộc gọi
- Triển khai các ứng dụng: Voice mail, Meetme Conference, IVR, Call Parking, Music On Hold
- Các giải pháp an toàn hệ thống: Dự phòng Gateway, Dự phòng tổng đài, Cân bằng tải
- Thực hiện tính cước (ưu tiên trảtrước)
- Khảnăng mở rộng khi sốlượng người dùng tăng
3.1.2 Phân tích yêu cầu a Hệ thống yêu cầu là hệ thống VoIP
VoIP là hệ thống điện thoại nên đầu tiên nó phải đáp ứng được đầy đủ các yêu cầu cơ bản của một hệ thống thoại PSTN cơ bản như: nghe, gọi cơ bản và các dịch vụnâng cao như mailbox, conference, meetme….
Mô hình VoIP cho ISP Trang 17 HVTH: KS Cao Hữu Thuyết Đáp ứng yêu cầu của một hệ thống viễn thông nên hệ thống thiết kế phải có đầy đủ các đặc tính như dự phòng, cân bằng tải….Và có khả năng mở rộng trong tương lai b Đối tượng yêu cầu là các ISP Đối tượng là ISP nên hệ thống phải có sựlinh động về mặt thời gian và vị trí địa lý, dung lư ợng cũng tương đối lớn, khoảng 5000 cuộc gọi Hệ thống có khả năng tính cước Nếu muốn mở rộng có thểtăng tài nguyên hệ thống, mà không làm ảnh hưởng nhiều đến hệ thống đang hoạt động
3.1.3 Lựa chọn phương án thiết kế
Từ phân tích yêu cầu trên, ta thấy hệ thống cần hai phần chính: Tổng đài VoIP nội bộ (có dung lượng lớn) và tổng đài VoIP liên kết với các nhà cung cấp khác (có nhiều dịch vụ) Cả hai thành phần này đều phải được đảm bảo dự phòng khi cần thiết, chẳng hạn khi quá tải hoặc xảy ra sự cố Đối với một tổng đài VoIP nội bộ (sử dụng SIP) thông thường, có thể dùng các phần mềm sau để xây dựng:
- OpenSER: Là một hướng phát triển của SER
- OpenSIPS/Kamailio: Là một hướng phát triển của OpenSER
Bên cạnh đó, một số phần mềm khác cũng dùng để xây dựng tổng đài VoIP nhưng ngoài SIP còn hỗ trợ nhiều giao thức khác (IAX, H.323, ):
Lựa chọn Phương án thiết kế:
Nhằm đáp ứng về mặt giá thành sản phẩm và khảnăng mở rộng hệ thống linh hoạt, ta chọn các phền mềm mởđể xây dựng core của hệ thống, nhờ đó hệ thống sẽ giảm được khoản đầu tư cho bản quyền core:
- Xây dựng tổng đài VoIP nội bộ: Sử dụng phần mềm OpenSIPS để xây dựng các Server (Server Opensips) để hỗ trợ thực hiện các cuộc thoại nội bộ với số lượng lớn
- Xây dựng tổng đài VoIP liên kết với các nhà cung cấp khác: Sử dụng phần mềm Asterisk để xây dựng tổng đài VoIP, đồng thời làm Gateway cho tổng đài VoIP nội bộ dùng OpenSIPS trên, hỗ trợ thực hiện các cuộc gọi đi và đến các ISP khác Tổng đài này hỗ trợ được ít cuộc gọi hơn so với các Server Opensips nhưng nhiều ứng dụng
Kết hợp 02 mô hình này sẽ phát huy tối ưu các ưu điểm của mỗi phần mềm, để đem lại hiệu suất hoạt động cao nhất đáp ứng yêu cầu đề ra.
Triển khai hệ thống
+ Gọi nội mạng đồng thời là không giới hạn
+ Gọi PSTN < 1000 cuộc gọi đồng thời tùy thuộc vào số Co-line và gateway
+ Có khả năng giao tiếp với các ISP khác
+ Phục vụđầy đủ các dịch vụ thoại truyền thống
+ Chạy SIP/UDP, RTP để truyền thoại (có thể mở rộng chạy TLS và SRTP)
+ Tính cước trảtrước, trả sau
Mô hình VoIP cho ISP Trang 19 HVTH: KS Cao Hữu Thuyết
Hình 3.1: Mô hình VoIP ISP
Giải thích mô hình: Mô hình VoIP này gồm 2 Node với 5 Server phục vụ cho mỗi Node (tạm gọi là chi nhánh):
- Server “Opensips 1,2” chạy Opensips làm Server đóng vai trò như m ột tổng đài nội bộ, tiến hành chuyển cuộc gọi nội bộ cho toàn bộ thuê bao nội bộ trong hệ thống và liên lạc liên tổng đài giữa các chi nhánh Tại cùng một thời điểm một trong hai Server sẽở chếđộ active tham gia trực tiếp vào hệ thống, Server còn lại sẽ chạy ở chế độ standby dự phòng cho Server active đang ho ạt động Với ưu thế chỉ xử lý báo hiệu nên nó có thể cho phép hàng ngàn user online cùng lúc và hàng trăm user đồng thời thực hiện cuộc gọi cùng lúc
- Server “Asterisk gateway 1,2” chạy asterisk Mục đích là làm gateway cho Opensips chuyển các cuộc gọi ra ngoài PSTN ứng với 2 chi nhánh khác nhau Hai Server này được lần lượt sử dụng để cân bằng tải cho hệ thống
- Server “Database” chạy database mysql lưu trữ toàn bộ các thông tin về user đăng ký cho SIP proxy Opensips cũng như tất cả các thông tin cấu hình feature cho OpenSIP Để cài đặt các phần mềm mã nguồn mở ứng dụng, trong mô hình thử nghiệm, chúng tôi chọn Hệđiều hành Linux CentOS để làm nền cho các máy ảo Oracle VM VirtualBox
Phiên bản Opensips sử dụng:
Opensips cung cấp cho người dùng 2 phiên bản sử dụng
Phiên bản 1: Có mã hóa đường truyền : Opensips-1.6.4-2-tls
Phiên bản này ứng dụng cho các hệ thống yêu cầu bảo mật cao như ngân hàng, công ty lớn….Người quản trị có thể cấu hình một số kênh thông tin quan trọng được mã hóa dữ liệu trước khi truyền trên kênh truyền đến đầu cuối Phiên bản này mang lại tính bảo mật rất cao nhưng lai tốn tài nguyên của hệ thống hơn so với kênh không bảo mật
Phiên bản 2: Không có mã hóa kênh truyền : Opensips-1.6.4-2-notls
Phiên bản này ứng dụng cho các hệ thống không yêu cầu tính bảo mật cao, áp dụng cho các doanh nghiệp đơn vị có nhu cầu thoại cao nhưng không cần bảo mật cuộc gọi Phiên bản này mang lại sức mạnh vượt trội cho hệ thống, do không có phần mã hóa kênh truyền nên không tốn nhiều tài nguyên, có thể làm việc cùng lúc với lượng tải lớn Đểđảm bảo tính bảo mật cho hệ thống, chúng tôi lựa chọn phiên bản 1
Các gói dependency cần thiết:
- Gói để biên dịch mã nguồn:
- Gói thực hiện bảo mật (nếu có ý định sử dụng kênh bảo mật TLS)
Mô hình VoIP cho ISP Trang 21 HVTH: KS Cao Hữu Thuyết
- Gói cơ sở dữ liệu :
+ libmysqlclient-libs, libmysqlclient-devel, mysql-server, mysql-devel
Chúng tôi có thể cài đặt các gói trên từ thư viện dependency trực tuyến với lệnh:
# yum install (áp dụng với Fedora hoặc Redhat có bản quyền)
Nếu ta sử dụng phiên bản khác thì có thể search gói “.rpm” hoặc source để cài đặt
PhpMyAdmin: là một công cụ web hỗ trợ quản lý cơ sở dữ liệu MYSQL
Sau khi đã tiến hành cài đặt đầy đủ hệđiều hành và các gói cần thiết nói trên, tiếp theo ta sẽ tiến hành cài đặt Opensips như các bước sau:
Bước 1: Download gói cài đặt Opensips tại địa chỉ : http://sourceforge.net/projects/Opensips/files/Opensips/
Lựa chọn phiên bản muốn sử dụng và download source về Server Ở đây đề tài sử dụng : Opensips-1.6.4-2-tls
Bước 2: Đặt toàn bộ source vào thư mục /usr/src Để dễ quản lý source chương trình
Bước 3: Giải nén source “Opensips-1.6.4-2-tls.tar.gz” thành “Opensips-1.6.4- 2-tls”, đổi tên source thành Opensips để dễ sủ dụng
# tar –xzvf Opensips-1.6.4-2-tls.tar.gz
Bước 4: Edit Makefile để built Opensips với MYSQL
Ta sẽ thấy nội dung file Makefile như hình
Hình 3.2: File Makefiles chưa sửa đổi Delete module “db_mysql” như tô đỏởtrên đểđược hình
Hình 3.3: File Makefiles đã sửa đổi Lưu lại những thay đổi trên
Bước 5: Tiến hành built source
Lệnh thực hiện như sau :
# make all include_modules=”mysql”
# make prefix=/usr/local install include_module=”mysql”
Bước 6 : Dùng trình soạn thảo nano mở file tại:
# nano /usr/local/etc/Opensips/Opensipsctlrc
Ta sẽ thấy như hình :
Mô hình VoIP cho ISP Trang 23 HVTH: KS Cao Hữu Thuyết
Hình 3.4: File Opensipsctlrc chưa sửa đổi
Bỏ chú thích tại dòng tô đỏ được hình sau :
Hình 3.5: File Opensipsctlrc đã sửa đổi Lưu lại các thay đổi đã thực hiện
Bước 7: Khởi tạo Database cho hệ thống Opensips :
+ Khởi động mysql: #service mysqld start
+ Tạo Database: # /usr/local/sbin/Opensipsdbctl create Đến đây việc cài đặt Opensips đã hoàn thành, tiếp theo là việc cấu hình và sử dụng Server
3.2.1.2 Cấu hình và sử dụng Server Opensips
Toàn bộ cách định tuyến đường đi của Opensips được người dùng thiết lập trong file Opensips.cfg
File này gồm có 4 phần chính đó là :
- Global Parameters: Các tham số chính của hệ thống
- Load Modules: Các modules chính được lấy từthư viện của Opensips
- Modules Parameter: Các tham số của các modules
- Routing: Phần định tuyến đường đi của Opensips a Global Parameters
Tham số này sẽ chỉ ra interface mà Opensips sẽdùng để lắng nghe các bản tin SIP yêu cầu phục vụ ví dụ như :
+ Chọn giao diện lắng nghe
Listen=:: listen=udp:192.168.1.11:5060 listen=tcp:192.168.1.11:5061 listen=tls:192.168.1.11:5061
+ Chọn version IP dns_try_ipv6=yes/No
+ Kích hoạt TCP disable_tcp=yes/No
+ Chọn Port làm việc portP60
Tham số này để thiết lập cho hệ thống biết phải xử lý đồng thời bao nhiêu cuộc gọi
Tham số này được thiết lập trong kịch bản với tên gọi là “Children”, thường được default với giá trị bằng 4, có nghĩa là cùng lúc sẽ xử lý tối đa 4 cuộc gọi, các cuộc gọi khác đến sẽđược đưa vào hàng đợi trong bộ nhớđệm
Các tham số này giúp thiết lập tuỳ chọn ghi lại nhật kí Server để giúp người quản trị tiện theo dõi và phát hiện lỗi trong hệ thống cũng như quản lý hệ thống
- Debug: Đây là tham số khá quan trọng trong phần này Giúp lựa chọn độ chi tiết của nhật kí ghi lại hoạt động hệ thống,độ chi tiết này tăng dần tương ứng khi “debug” nhận các giá trị từ 0 -> 9 Thông thường theo mặc định của Opensips “debug=3”, giá trị này cho phép nhật kí hệ thống ghi lại tấc cả các lỗi và các “message” quan trọng của hệ thống b Load Modules và Module Parameter
Opensips được viết theo cấu trúc module, các chức năng khác nhau được viết trong các module khác nhau và hoàn toàn tách rời nhau nên để sử dụng các hàm này ta cần load các module này lên trước khi sử dụng giống như “include ” trước khi dùng hàm trong c++
Cấu trúc để load module này gồm 2 phần:
Mô hình VoIP cho ISP Trang 25 HVTH: KS Cao Hữu Thuyết
Chỉ đường dẫn đến thư mục chứa các module cho Opensips, thông thường đường dẫn này là : “ mpath="/usr/local/lib/Opensips/modules/"” (có thể khác nếu cài đặt Opensips ởđường dẫn khác)
Thực hiện theo cấu trúc: loadmodule "tên module"
Opensips cho phép ta thiết lập các tham số cho module theo nhu cầu của người dùng Để làm được diều này ta sử dụng hàm : modparam("tên module", "tham số", "giá trị")
Script ví dụcài đặt tham số module:
# - mi_fifo params - modparam("mi_fifo", "fifo_name", "/tmp/Opensips_fifo")
# - rr params - modparam("rr","enable_double_rr",1) modparam("rr","append_fromtag",1) c Routing
Các script routing của Opensips được viết bằng ngôn ngữtương tự như C++ Trong đó các hàm chức năng được lấy từ “Core” và “Modules” của hệ thống vì vậy điều đặc biệt quan trọng là ta cần phân biệt được đâu là hàm của nhân đâu là hàm của module để load các module cho phù hợp mà không gây ra lãng phí hệ thống Một script định tuyến VoIP thực tế cần đảm bảo 3 yêu cầu cơ bản sau :
- Hiệu suất Để đảm bảo 3 yếu tố này, một form của Opensips routing thường hay được đề xuất cho người thực hiện hệ thống được ví dụnhư sau:
Lưu đồ giải thuật xây dựng kịch bản Opensips.cfg:
Mô hình VoIP cho ISP Trang 27 HVTH: KS Cao Hữu Thuyết
Hình 3.6: Lưu đồ giải thuật Core Opensips
X ử lý t ạ i server Chuy ể n theo URI
File Opensips.cfg thực hiện cơ bản: Xem Phụ lục d Quản lý user
Có 2 cách để thực hiện việc quản lý user bên trong Server Opensips:
Cách 1: Quản lý bằng dòng lệnh (shell):
Từ cửa sổ shell của Linux, cú pháp thực hiện như sau:
Opensipsctl add password
Xóa User: rm Đổi password: passwd
+ Khi thực hiện tất cả các tác vụ, trên hệ thống sẽ yêu cầu password quản lý hệ thống Theo mặc định pass này sẽ là “Opensipsrw” Password này là thông tin được cấu hình trong file “Opensipsctlrc” được lưu trong thư mục /usr/local/etc/Opensips (có thể thay đổi nếu đường dẫn cài đặt chương trình khác)
+ Trong trường hợp sử dụng multi-domain ta cần chọn domain trước khi thêm bớt user
Cách 2: Quản lý bằng database (mysql):
Do thông tin user được xác thực bằng cơ sở dữ liệu MYSQL nên tất cả các user trên đều được lưu trữ trong MYSQL, ta chỉ cần dùng bất cứ một chương trình nào có thể thực hiện tương tác với MYSQL thì ta cũng sẽ thực hiện được việc thêm bớt user một cách trực quan và rõ ràng Ở đây trong giới hạn của đề tài tạm thời chúng tôi sử dụng “php myadmin” để quản lý MYSQL một cách thuận tiện hơn
Từ trình duyệt internet khởi động phpmyadmin như hình:
Mô hình VoIP cho ISP Trang 29 HVTH: KS Cao Hữu Thuyết
Hình 3.7: Giao diện Opensips Database
Tất cả các thông tin tài khoản user sẽđược lưu trữ trong bảng subcriber:
Hình 3.8: Giao diện Subcribers table Đến đây việc Add, Delete, Update ta có thể thực hiện đơn giản như việc Thêm, Xóa, Sửa chữa Database với phpmayadmin
Như trên đã trình bày việc quản lý user thực chất chính là quản lý Database
HỆ THỐNG THỬ NGHIỆM
Mô hình h ệ th ố ng th ử nghi ệ m
Hình 4.1: Mô hình thử nghiệm hệ thống VoIP ISP Tại mô hình này, không thực hiện giao tiếp với các ISP khác
Trong đó, cấu hình địa chỉ IP được quản lý như sau:
Hệ thống thử nghiệm Trang 63 HVTH: KS Cao Hữu Thuyết
STT Tên Thiết bị Địa chỉ IP Net Mask
Bảng 4.1: Bảng địa chỉ IP các Server Trong đó, các ký hiệu hiểu như sau:
Kịch bản và kết quả thực hiện
4.2.1 Thiết lập cuộc gọi nội bộ Server Opensips
Hình 4.2: Kịch bản gọi nội bộ Server Opensips
+ User A và User B là client của Server Opensips
+ User A thực hiện cuộc gọi local cho user B
+ User B đồng ý, hai bên thông thoại
+ User B hang up kết thúc cuộc gọi
Hình 4.3: Kết quả cuộc gọi nội bộ
Dễ thấy cuộc gọi nội bộ giữa 2 user đăng ký trên cùng 01 Server đư ợc thực hiện thông qua Server Opensips tại địa chỉ IP 192.168.92.11
4.2.2 Thiết lập cuộc gọi giữa các Server Opensips
Hệ thống thử nghiệm Trang 65 HVTH: KS Cao Hữu Thuyết
Hình 4.4: Kịch bản gọi liên Server Opensips Diễn dịch:
+ User A là client của Server Opensips 1
+ User B là client của Server Opensips 2
+ User A thực hiện cuộc gọi enter clave cho user B bằng cách bấm thêm đầu số của user B + number của user B
+ User B đồng ý, hai bên thông thoại
+ User B off hook kết thúc cuộc gọi
Hình 4.5: Kết quả cuộc gọi liên tổng đài
+ Cuộc gọi liên tổng đài giữa 2 user được thực hiện thông qua chuyển tiếp tín hiệu giữa 2 Server Opensips tại địa chỉ IP 192.168.1.21 và 192.168.1.11
+ Quá trình route đúng như kết quảmong đợi ban đầu
4.2.3 Thiết lập cuộc gọi ra PSTN thông qua Gateway Asterisk
Trong khuôn khổ mô phỏng đề tài này, giả sử tất cảcác user PSTN được xem như là user của asterisk
Hệ thống thử nghiệm Trang 67 HVTH: KS Cao Hữu Thuyết
Hình 4.6: Kịch bản gọi từ Server Opensips ra Gateway
+ User A là client của Server Opensips 2
+ User B là client của PSTN
+ User A thực hiện cuộc gọi ra PSTN cho user B bằng cách bấm thêm đầu số route ra PSTN + Mã tỉnh + số của user B
+ User B nghe chuông báo và nhấc máy, hai bên thông thoại
+ User A hang up kết thúc cuộc gọi
Hình 4.7: Kết quả gọi ra PSTN thông qua gateway
Cuộc gọi ra ngoài từ user của Opensips 192.168.1.21 đến PSTN là user của Gateway Asterisk 2 192.168.1.32 được thự hiện từOpensips được định tuyến chạy ra Gateway Asterisk 2
4.2.4 Thiết lập cuộc gọi khi cân bằng tải
Hệ thống thử nghiệm Trang 69 HVTH: KS Cao Hữu Thuyết
Hình 4.8: Kết quả gọi ra PSTN thông qua gateway khi cân bằng tải
+ User A, User C là user của tổng đài IP Opensips
+ User B, User D là user của tổng PSTN
+ Cuộc gọi thứ nhất user A gọi cho user B, cuộc gọi được định tuyến từ user A đến Opensips Server qua Gateway Asterisk 1 ra PSTN đến User B
+ Trong lúc cuộc gọi thứ nhất đang thực hiện cuộc gọi thì user C thực hiện cuộc gọi đến User D, cuộc gọi thứ 2 này được định tuyến từ user C đến Opensips Server qua Gatwaye Asterisk 2 ra PSTN đến User D
+ User B, user D lần lượt gác máy, kết thúc cuộc gọi
Hình 4.9: Kết quả cuộc gọi khi cân bằng tải
Cuộc gọi đầu tiên được Opensips 192.168.92.21 đẩy ra ngoài theo Gateway Asterisk 1 (192.168.1.31), cuộc gọi tiếp theo được chuyển ra ngoài theo Gateway Asterisk 2 (192.168.1.32)
4.2.5 Thiết lập cuộc gọi khi không còn cân bằng tải
Hệ thống thử nghiệm Trang 71 HVTH: KS Cao Hữu Thuyết
Hình 4.10: Kết quả gọi ra PSTN thông qua gateway khi quá tải
Quy trình thực hiện cuộc gọi như thực hiện cuộc gọi cân bằng tải ở trên nhưng có một sựthay đổi ở đây là giả sử sau khi user A thực hiện cuộc goi thứn được kết nối thì tất cảcác CoLine ra PSTN đều đã bận thì khi user quay số gọi ra ngoài thì sẽ nhận được thông báo : “500 Service full” từ tổng đài Opensips
Hình 4.11: Packet báo hiệu quá tải dịch vụ Khi đó trạng thái điện thoại sẽnhư sau:
Hình 4.12: Trạng thái điện thoại báo Gateway bận
Diễn dịch: Cuộc gọi đầu tiên được đẩy ra tại gateway Asterisk 1 (192.168.1.31) đã sử dụng đường Co-Line cuối cùng còn free, Cuộc gọi tiếp theo bị quá tải nên nhận lại tin báo “Service full”
Hệ thống thử nghiệm Trang 73 HVTH: KS Cao Hữu Thuyết
4.2.6 Thiết lập cuộc gọi từ ngoài PSTN vào Server Opensips
Hình 4.13: Kết quả gọi ra từ PSTN vào Server Opensips thông qua gateway Diễn dịch:
+ User A là user của tổng đài PSTN
+ User B là user của tổng đài nội bộ Opensips
+ User A onhook gọi cho sốđại diện tổng đài IP-PBX
+ PSTN tiến hành trượt số trên nhóm co – line cung cấp cho IP-PBX, cuộc gọi được gởi đến GW IP-BPX trên free Co-Line, GW tự off hook sau đó cuộc gọi được thiết lập
+ Tổng đài IP gởi lời mời quay Extension đến User A
+ GW gởi cuộc gọi đến Opensips, Opensips gởi cuộc gọi đến User B, User B nhấc máy, cuộc gọi thông thoại
+ User B off hook kết thúc đàm thoại
Hình 4.14: Kết quả gọi từ PSTN vào nội bộ
Cuộc gọi thành công như mô tả trên phần kịch bản
4.2.7 Thiết lập cuộc gọi khi xảy ra sự cố tổng đài
Khi cấu hình Opensips liên tục kiểm tra các Gateway thì, nếu trong nhóm Gateway cân bằng tải có 1 Gateway hỏng, Opensips tự động loại bỏ Gateway này ra khỏi Group cân bằng, tựđộng chuyển các cuộc gọi ra ngoài qua các Gateway khác còn trống tài nguyên
Trong bài test này, Gateway Asterisk 2 (192.168.1.32) hỏng, Gateway
Asterisk 1 (192.168.1.31) tốt, mặc dù hệ sốtài nguyên lưu trên Server Opensips báo Gateway 2 (pstn = 4) hơn Gateway 1 (pstn = 3), nhưng cuộc gọi ra vẫn được chuyển qua Gateway 1
Hệ thống thử nghiệm Trang 75 HVTH: KS Cao Hữu Thuyết
Hình 4.15: Kết quả gọi khi xảy ra Redundancy Gateway 2 Khi Gateway Asterisk 2 tốt trở lại, Opensips sẽ chuyển nó vào Group cân bằng tải và chuyển các cuộc gọi qua nó trước
Hình 4.16: Kết quả gọi khi Gateway 2 tốt trở lại
Hình 4.17: Kịch bản dự phòng Opensips Server
+ User A ,User B là user của tổng đài nội bộ Opensips
+ Opensips 1 đang ở chế độ Active sẽ relay gói tin INVITE cho User B, cuộc gọi được thiết lập
+ Có sự cố xảy ra Opensips 1 làm Server này không thể tiếp tục phục vụ cho hệ thống
+ Opensips 2 đang ở chế độ Standby phát hiện ra không thể ping thấy
Opensips 1 nên chạy script đổi IP của nó thành IP của Opensips 1 và chạy ở chếđộ Active thay thế Opensips 1
+ Hệ thống đảm bảo tính năng dự phòng cho server Opensips
Hệ thống thử nghiệm Trang 77 HVTH: KS Cao Hữu Thuyết
Tính cướ c cu ộ c g ọ i
Ta sẽ thực hiện chạy demo với mô hình 2 tổng đài Asterisk, tạm gọi là Asterisk Server 1 (AS1: 192.168.1.41) và Asterisk Server 2 (AS2: 192.168.1.42) AS1 sẽ kết nối với AS2 qua đường trunk có tên là “asterisk1”, ngược lại là
Hình 4.18: Mô hình thử nghiệm tính cước File cấu hình /etc/asterisk/sip.conf của AS 1 như sau:
[asterisk1] [3000] type=friend username000 host2.168.30.144 accountcode47501514 context=inter type=friend insecure=invite host=dynamic allow=all secret000 contextbilling allow=all
Cấu hình trong file /etc/asterisk/extensions.conf:
[inter1] exten=>_84XXXX,n,Hangup() exten=>_84XXXX,1,Dial(SIP/${EXTEN:2}20,r)
[a2billing] exten=>_X.,1,NoOp(A2billing Start) exten=>_X.,n,Agi(A2billing.php,1) exten=>_X.,n,Hangup()
Dùng soft phone X-lite cấu hình tài khoản như trên, thực hiện cuộc gọi qua một X-lite khác trên Asterisk2 Hệ thống sẽ phát ra âm thanh thông báo số tiền còn lại trong tài khoản và chúng tôi có thể thực hiện cuộc gọi
Hình 4.19: Cuộc gọi thành công có tính cước
Với các giao diện quản lý user như Elastix (đ ối với Gateway Asterisk) hay PhpMyadmin (Opensips Server), chúng tôi có thể giám sát và quản lý một cách trực quan thông tin thuê bao, lịch sử các cuộc gọi, hiện trạng hệ thống tổng đài.
Như vậy đến đây, chúng tôi đã có thể thực hiện thành công các cuộc gọi thông thường như: nội bộ, liên mạng theo các chiều khác nhau Ngoài ra, với hệ thống thử nghiệm này, chúng tôi có thể thể hiện được các trường hợp cụ thểđối với dự phòng tải (Gateway), hay dự phòng Opensips Server Hơn nữa, khi Gateway quá tải Opensips Server hoàn toàn có thể “lái” lưu lượng tải qua Gateway chia tải thông qua việc kiểm soát tài nguyên các Gateway Asterisk Cuối cùng là thử nghiệm mô hình tính cước
Hiệu suất hệ thống thử nghiệm Trang 79 HVTH: KS Cao Hữu Thuyết
HIỆ U SU Ấ T H Ệ TH Ố NG TH Ử NGHI Ệ M
Kh ả o sát các công c ụ ki ể m tra h ệ th ố ng
Hiện có một số công cụdùng để kiểm tra (test) hệ thống: SIPSAK và SIPp
SIPSAK là một công cụ test dùng lệnh, thường được các nhà quản trị SIP sử dụng Nó được dùng để test các bài test đơn giản cho các SIP Server Đồng thời cũng rất hữu hiệu cho việc kiểm tra công tác bảo mật cho các Server, vì nó cho phép ta tạo ra chính xác các bản SIP Request theo đúng mong muốn Chi tiết có thể tham khảo qua trang web: www.sipsak.org
SIPp là một công cụ dùng để tạo ra các luồng dữ liệu và test khả năng hệ thống SIP Đây là một công cụ hữu hiệu đểđưa các luồng dữ liệu vào SIP Server và kiểm tra nó trước khi cho ra sản phẩm Nó có thể thiết lập hoặc giải phóng nhiều cuộc gọi bằng cách gửi các bản tin INVITE hoặc BYE Tỉ lệ cuộc gọi có thể được điều chỉnh tự động Để có nhiều thông tin hơn có thể tham khảo qua trang web: www.sipp.sourceforge.net/doc/reference.html.
Yêu c ầ u ki ể m tra
Xây dựng (thiết lập) được một hệ thống bằng các chương trình mô phỏng cũng mất nhiều thời gian, tuy nhiên để biết được hệ thống mô phỏng này có đáp ứng được các yêu cầu thiết kế hay không, việc lựa chọn công cụ test cũng phải cân nhắc đến những khả năng đáp ứng các yêu cầu trên Từ đó đánh giá mức độđáp ứng, và khảnăng mở rộng hệ thống
Hệ thống phải được test đầy đủcác tính năng: khảnăng cung cấp các cuộc gọi đồng thời tối đa, đánh giá mức độ hay ngưỡng nghẽn, tốc độ các cuộc gọi hệ thống có thể đáp ứng Giả lập được các đầu cuối.
Lựa chọn công cụ kiểm tra
Dựa vào các thông tin khảo sát về các công cụ dùng để kiểm tra hệ thống, chúng tôi sẽ chọn SIPp là công cụđể thực hiện
SIPp có thể đóng 2 vai trò:
UAC (User Agent Client): ứng dụng client khởi tạo yêu cầu SIP
UAS (User Agent Server): ứng dụng Server kết nối với user
Nếu SIPp là một UAC, các bản tin sẽ được gửi đi như sau:
Hình 5.1: Bản tin SIP khi SIPp là một UAC Còn nếu SIPP đóng vai trò là một UAS thì các bản tin sẽđược gửi đi như sau:
Hiệu suất hệ thống thử nghiệm Trang 81 HVTH: KS Cao Hữu Thuyết
Hình 5.2: Bản tin SIP khi SIPp là một UAS Cài đặt SIPp:
Tại dấu nhắc giao diện dòng lệnh, thực hiện các lệnh dưới đây: cd /usr/src wget http://sourceforge.net/projects/sipp/files/sipp/3.1/sipp.3.1.src.tar.gz/download tar –zxvf sipp.3.1.src.tar.gz rm –f SIP.3.1.src.tar.gz cd SIPp.svn make all
Kết thúc quá trình cài đ ặt, ta đã có ph ần mềm SIPp được cài đặt sẵn trong chính thư mục hiện hành /usr/src/sipp.svn Để chạy thử SIPp thì bắt buộc phải để dấu nhắc lệnh ởthư mục đã cài đặt nó.
Đánh giá hiệ u su ấ t T ổng đài Asterisk bằ ng SIPp
Đầu tiên, cần phải tạo một phần mở rộng có tên là SIPp Nó sẽ tạo lập một cuộc gọi mô phỏng tới số exten 1111 Người nhận cuộc gọi sẽ trả lời, chơi nhạc trong vòng 20 giây, sau đó k ết thúc cuộc gọi Để làm được điều này đơn giản là chỉnh sửa trong file /etc/asterisk/extension_custom.conf như sau:
[sipp] exten=>1111,1,Answer() exten=>1111,2,SetMusicOnHold(default) exten=>1111,3,WaitMusicOnHold(20) exten => 1111,4,Hangup()
Tiếp theo ta sẽ cấu hình để cho phép SIPp kết nối với máy chủ Asterisk và xử lý cuộc gọi Chỉ cần cấu hình trong file /etc/asterisk/sip_custom.conf:
[sipp] type=friend context=sipp host=dynamic port`00 user=sipp canreinvite=no allow=all
Cuối cùng là reload hệ thống Asterisk để các cấu hình vừa rồi có hiệu lực Như đã giới thiệu ở trên, SIPp sẽ tạo giả lập các cuộc gọi bằng cách gửi các bản tin SIP INVITE, sau đó thực hiện cuộc gọi rồi kết thúc bằng bản tin BYE Tùy theo các tùy chỉnh của người quản trị, hệ thống sẽ tạo sốlượng cuộc gọi xem là có bao nhiêu cuộc gọi được tạo ra trong 1s, thời lượng mỗi cuộc gọi là bao nhiêu, số lượng đồng thời các cuộc gọi… Từ các thông số này mà ta sẽ có cái nhìn tổng quát và đánh giá được năng lực hoạt động của hệ thống Asterisk trên thực tế
Thực hiện bài test như sau: cd /usr/src/sipp sipp –sn uac –d 10000 –s 1111 –i 192.168.1.51 –l 200 192.168.1.31 Đoạn dòng lệnh trên sẽ tạo các cuộc gọi giả lập tới sốexten 1111 như đã khai báo ở trên Mỗi cuộc gọi sẽ thực hiện trong 10000ms tương ứng với 10s, giới hạn tối đa số các cuộc gọi đồng thời là 200 cuộc gọi Mặc định sẽ có 10 cuộc gọi mới được tạo ra trong 1s, thông số này sẽđược tùy chỉnh sau
Hiệu suất hệ thống thử nghiệm Trang 83 HVTH: KS Cao Hữu Thuyết
Hình 5.3: Các bản tin SIP được lập bởi SIPp UAC Như ta thấy trong hình ở trên, số lượng các bản tin INVITE, 100 (TRYING),
200 (OK), ACK, BYE… được liệt kê rất rõ Tương ứng với đó là số cuộc gọi được tạo ra Ở góc bên trên ta dễ dàng thấy được có 10 cuộc gọi mới được tạo ra trong 1s và hiện tại có 83 trong tổng số tối đa 200 cuộc gọi đồng thời, lúc này Asterisk bắt đầu có hiện tượng trễ gói (cột “Retrans” có 3 bản tin INVITE phải truyền lại)
Nhấn phím 2 trên bàn phím ta sẽxem được thêm một số chi tiết khác về cuộc gọi như hình dưới đây:
Hình 5.4: Sốlượng các cuộc gọi chi tiết Ở hình này ta sẽ xem được số cuộc gọi ra, vào, số cuộc gọi thành công hay không thành công, hoặc là thời gian cho một cuộc gọi… Như hình trên tất cả các cuộc gọi đều thành công, nghĩa là hệ thống của chúng tôi có thểđáp ứng được đồng thời khoảng 122 cuộc gọi, mỗi cuộc gọi diễn ra trong 10s Ta thấy lúc này hệ thống đã xảy ra rớt 6 cuộc gọi Nên xem như 122 là ngưỡng tối đa số cuộc gọi đồng thời của Gateway trong trường hợp ngõ vào này
Tiếp theo, đểđánh giá đúng lưu lượng phục vụ của tổng đài, ta sẽ cho có tối đa
500 cuộc gọi đồng thời, mỗi cuộc gọi diễn ra trong 2 phút (120000ms) Mỗi giây sẽ có 10 cuộc gọi mới được tạo ra như mặc định: cd /usr/src/sip.svn sipp –sn uac –d 120000 –s 1111 –i 192.168.1.51 –l 500 192.168.1.31
Hiệu suất hệ thống thử nghiệm Trang 85 HVTH: KS Cao Hữu Thuyết
Hình 5.5: Cuộc gọi khi hệ thống nghẽn
Với các thông số mới được khai báo ở trên, thì có thể thấy rằng đến khi có khoảng 130 cuộc gọi đồng thời, mỗi cuộc gọi diễn ra trong 2 phút thì nếu tăng số cuộc gọi lên nữa, hệ thống sẽ bắt đầu không đáp ứng kịp Điều này được thể hiện qua thông số “Un-expected-Msg” như hình trên
Tiếp tục ấn phím 2, ta sẽ thấy được rõ ràng hơn như sau:
Hình 5.6: Thống kê chi tiết các cuộc gọi Như quan sát thì 135 cuộc gọi đã được tạo ra, và có khoảng 5 cuộc gọi không thành công Điều này chứng tỏ rằng hệ thống Asterisk sẽkhông đáp ứng được đồng thời 130 cuộc gọi, mỗi cuộc gọi diễn ra trong 2 phút
Như vậy bằng cách thay đổi các tùy chọn nêu trên, mỗi chúng tôi sẽ tựđưa ra được các đánh giá về khả năng phục vụ của tổng đài đang sử dụng Một số tùy chọn như sau:
-r : số cuộc gọi được tạo ra trong 1s
-rp : thời gian nghỉ giữa mỗi cuộc gọi Mặc định là 1000ms
-l : sốlượng tối đa các cuộc gọi đồng thời
-d : thời gian của mỗi cuộc gọi
-m : định nghĩa số cuộc gọi SIPp thoát khi hoàn thành
-sn, uac : các thông số mặc định phải được khai báo trong câu lệnh
Khi cần tăng số cuộc gọi được tạo ra trong vòng 1s (mặc định là 10calls/s) thì từ màn hình đang quan sát diễn biến cuộc gọi, ta nhấn các phím như sau:
+ : tăng tốc độ cuộc gọi lên 1
Hiệu suất hệ thống thử nghiệm Trang 87 HVTH: KS Cao Hữu Thuyết
- : giảm tốc độ cuộc gọi xuống 1
* : tăng tốc độ cuộc gọi lên 10
/ : giảm tốc độ cuộc gọi xuống 10.
Đánh giá hiệ u su ấ t T ổng đài Opensips bằ ng SIPp
Tiến hành test thử khả năng đáp ứng của Server Opensips giả lập 512MB Memory trên Oracle VM theo mô hình sau :
Type : SIPp UAC -Proxy Opensips -SIPp UAS
UAC là client phát xuất luồng SIP traffic để test Opensips
Opensips là tổng đài muốn test có nhiệm vụ relay gói SIP đến cho UAS
UAS là Server SIP giả lập của SIPp có nhiệm vụ trả lời ngay lập tức tất cả các gói SIP được Opensips relay sang đểđảm bảo thiết lập được luồng cuộc gọi giả lập Quy trình các bản tin SIP của 1 cuộc gọi như sau:
UAC < -200 OK< - Proxy < -200 OK< - UAS
UAC ->ACK -> Proxy ->ACK -> UAS
UAC ->BYE -> Proxy ->BYE -> UAS
UAC < -200 OK< - Proxy < -200 OK< - UAS
Hình 5.7: Bản tin SIP khi UAC SIPp giao tiếp với Opensips Proxy
+ Cài đặt SIPp ở PC 192.168.1.51 sipp -sn uac 192.168.1.11:5060 -s 9999 -d 30000 -i 192.168.1.51 -l 5000
Lệnh này có ý nghĩa là tạo ra Client gởi gói INVITE user 9999 đến Opensips 192.168.1.11 ở port 5060, cuộc gọi này được giữ trong 30 giây với tốc độ gởi mặc định ban đầu là 10 cuộc gọi/giây Tốc độ này được tùy chỉnh tới tối đa là 5000 calls/second
+ Chạy lệnh: sipp -sn uas -i 192.168.1.52 -p 9999 -rsa 192.168.1.11:5060
Lệnh này có ý nghĩa là t ạo ra một Server SIP giả lập lắng nghe ở 192.168.1.52:9999 sẵn sàng trả lời ngay lập tức tất cả các gói tin SIP được gởi từ Opensips 192.168.1.11:5060
Register SIPp UAS to Opensips location:
+ Chạy lệnh: opensipsctl ul add 9999 sip:192.168.1.52:9999
Lệnh này sẽ gán vào location user 9999 ở tại ip 192.168.1.52 đang lắng nghe ở port 9999
+ Loại bỏ xác thực trong kịch bản Opensips.cfg để cuộc gọi được relay vô điều kiện:
#if (!is_method("REGISTER|MESSAGE"))
# sl_send_reply("403","Forbidden auth ID");
Hiệu suất hệ thống thử nghiệm Trang 89 HVTH: KS Cao Hữu Thuyết
+ Chạy UAS sẵn sàng lắng nghe
+ Tăng dần lưu lượng luồng đến lúc packet ở dòng “INVITE” cột “Retrans” xuất hiện, đây là mốc đánh dấu Server Opensips bắt đầu không kịp đáp ứng ngay lập tức các cuộc gọi đến Tiếp tục tăng đến khi xuất hiện packet ở cột :
“Unexpected-Msg”, đây là lúc Server bắt đầu bị nghẽn
Hình 5.8: Opensips bắt đầu trễ gói gây nên hiện tượng truyền lại
Hình 5.9: Opensips bắt đầu đánh mất cuộc gọi
Dựa trên 2 hình trên ta thấy kết quả như sau: Với 512 MB RAM cài đặt trên máy ảo VM, Opensips bắt đầu trễ gói tại tốc độ 90 cuộc gọi trên giây (186 cuộc gọi đồng thời), và thực sự mất cuộc gọi tại tốc độ 270 cuộc gọi trên giây
Với Gateway, số Gateway cần thiết để chia tải cũng được tính tương tự Giả sử số cuộc gọi đồng thời ra, vào Gateway là 500 cuộc, ta cần hệ thống với dung lượng
5000 cuộc gọi thì, ta cần 10 Gateway thật
Như vậy, với kết quả test Asterisk Gateway và Opensips Server ta nhận thấy, nếu muốn một hệ thống có dung lượng lớn ta lấy dung lượng cần thiết chia cho dung lượng mỗi Server sẽ có số Server cần thiết phải xây dựng trong hệ thống Trong bài test này đang dùng Server trên máy ảo nên chưa đánh giá chính xác được năng lực của một Server trên máy thật
Giả sử năng lực một Server thật là 1250 cuộc gọi đồng thời (tốc độ 25 cuộc/giây) thì trung bình thời lượng 01 cuộc gọi khoảng 50 giây, và với một hệ thống cần dung lượng 5000 cuộc gọi đồng thời, ta cần 4 Server thật
Kết luận và hướng phát triển Trang 91 HVTH: KS Cao Hữu Thuyết