Giới thiệu chung

Một phần của tài liệu Nghiên cứu, thiết kế và xây dựng hệ thống thoại doanh nghiệp sử dụng VoIP (Trang 69 - 83)

Như chúng ta đã biết, hệ thống thoại PSTN đã và đang phát triển trên khắp thế giới với mức độ ổn định khá cao. Tuy nhiên một thực tế đặt ra đối với mạng PSTN là khả năng mở rộng dịch vụ khó, ít tính năng, giá thành cuộc gọi lại cao. Chính vì vậy, để đáp ứng nhu cầu người dùng, hệ thống thoại VoIP ra đời nhằm nâng cao khả năng tương tác với người dùng cùng với tính năng đa dạng về dịch vụ đã và đang đem lại cho người dùng các tiện ích mà mạng PSTN không có. Ngoài sự đa dạng về dịch vụ, giá thành cuộc gọi trên mạng VoIP cũng rất thấp. Vì vậy em chọn đề tài “Phân tích, thiết kế hệ thống thoại doanh nghiệp sử dụng VoIP”. Mô hình tổng quát của hệ thống như sau: SS7 Switch STP PSTN / ISDN SS7 Switch Switch Switch STPSTP PSTN / ISDN Hình 3.1. Sơđồ h thngBusiness

• Các công ty: Là những khách hàng trong hệ thống mạng thoại Business. Mỗi công ty có thể có nhiều chi nhánh khác nhau nằm trên các vùng khác nhau và thuê dịch vụ thoại doanh nghiệp. Mỗi nhân viên trong công ty sẽ

Nguyễn Đức Hùng- ĐHBKHN  69  được gán cho một số máy lẻ, số máy này chỉ có tác dụng trong nội bộ một công ty, và nó là duy nhất đối với một nhân viên trong công ty. Ngoài ra, các nhân viên có thể được gán một số máy cố định (giống số thuê bao PSTN) để gọi ra, vào từ PSTN.

• Các hệ thống thoại khác: Là các hệ thống thoại của các nhà cung cấp dịch vụ viễn thông khác, hoặc có thể là một hệ thống thoại doanh nghiệp khác, quản lý các đầu số thuê bao khác. Các hệ thống này liên kết với nhau để

thực hiện cuộc gọi. Ví dụ, doanh nghiệp Viettel cũng có hệ thống thoại VoIP khác, quản lý một dải số cố định thuộc mạng Viettel. Khi đó, để

thực hiện gọi đến các thuê bao trong mạng Viettel thì hệ thống cần kết nối đến nhà cung cấp này.

• Mạng PSTN: Việc xây dựng một mạng mới luôn luôn phải đi kèm với hệ

thống mạng cũ. Chính vì vậy hệ thống phải kết nối đến mạng PSTN. Việc kết nối được thực hiện qua Gateway, Gateway có nhiệm vụ chuyển đổi báo hiệu giữa mạng VoIP và mạng PTSN.

Một vấn đề khá quan trọng đối với mạng thoại doanh nghiệp là: Đối với các thuê bao trong doanh nghiệp hay thuê bao lẻ là thói quen thực hiện cuộc gọi. Khi một thuê bao nhấc máy gọi đến thuê bao khác hay gọi ra PSTN, nếu thuê bao này nằm trong cùng một vùng thì không cần bấn kèm mã vùng, hệ thống phải tự nhận biết là cuộc gọi nội hạt hay không … Từ đó ta phải xây dựng cấu trúc dữ liệu hệ

thống sao cho việc quản lý các thuê bao một cách hiệu quả nhất mà không được thay đổi thói quen người dùng.

• Mô hình chung của hệ thống Business mà em xây dựng: Khi khách hàng tiến hành thực hiện cuộc gọi, bộ tham số mà khách hàng gửi lên hệ thống bao gồm: Tên tài khoản, mã bảo mật, số chủ gọi (mã code của khách hàng), và số khách hàng bấm (có thể là số máy lẻ, số dịch vụ, số thuê bao khác …). Các thông tin này được gửi lên hệ thống thông qua bản tin INVITE. Hệ thống sẽ tiến hành phân tích xem các

Nguyễn Đức Hùng- ĐHBKHN  70  tham số về tài khoản có hợp lệ hay không, nếu thông tin tài khoản là hợp lệ, hệ thống sẽ phân tích số bị gọi và đưa ra đích đến cho cuộc gọi

đó. Nếu cuộc gọi trong mạng, hệ thống sẽ truy vấn database và lấy thông tin địa chỉ của thuê bao này rồi sau đó gửi bản tin đến địa chỉ đó. Nếu cuộc gọi đến mạng PSTN, hệ thống sẽ gửi thông tin đến mạng PSTN.

Ví dụ một cuộc gọi như sau:

Hình 3.2 Sơđồ thc hin cuc gi trên h thng Business

* Khảo sát cuộc gọi từ thuê bao A với số thuê bao 044555666, số máy lẻ

201 (Thuộc trụ sở tại Hà Nội của công ty A) đến thuê bao B với số thuê bao 084555777, số máy lẻ 302 tại chi nhánh Hồ Chí Minh:

• Thuê bao A gửi bản tin INVITE tới Openser với các thông tin về số

chủ gọi: mã thuê bao, thông tin tài khoản (username, password), và số

khách hàng bấm (số này có thể là số máy lẻ 302 của thuê bao B hoặc số máy đầy đủ 0844555777).

Nguyễn Đức Hùng- ĐHBKHN  71 

• Sau khi Openser nhận được bản tin INVITE, Openser gửi bản tin INVITE đến B2BUA để xác thực và định tuyến.

• Tại B2BUA, hệ thống sẽ phân tích và gửi thông tin đến RADIUS với các thông tin về số chủ gọi và số bị gọi, RADIUS thực hiện các tính năng AAA rồi trả lại kết quả cho B2BUA.

• Dựa trên kết quả trả về, B2BUA biết được cuộc gọi có được phép hay không, thời gian đàm thoại là bao nhiêu, thuê bao nhận cuộc gọi là thuê bao nào, sau đó gửi lại bản tin INVITE đến Openser, tại đây, Openser biêt được bản tin INVITE đến từ B2BUA, Openser tìm kiếm trong database để lấy thông tin về số bị gọi, sau đó kết nối đến thuê bao cần gọi.

• Trong quá trình kết nối giữa thuê bao và Openser có sự tham gia của RTP proxy, việc điều khiển RTP proxy do Openser đảm nhiệm. Luồng thoại (RTP) sẽ không truyền trực tiếp giữa hai thuê bao vì thông thường thuê bao sẽ nằm sau NAT, vì vậy sử dụng RTP proxy

đểđảm bảo đàm thoại được thông suốt giữa hai thuê bao.

• Trong trường hợp cuộc gọi từ thuê bao A đến số dịch vụ, bản tin INVITE không được gửi đến Openser nữa mà từ B2BUA sẽ được gửi

đến Asterisk. Asterisk sẽ phân tích xem thuê bao yêu cầu dịch vụ gì sẽ

thực hiện tính năng đó. Ví dụ, thuê bao cần biết số thuê bao hiện thời là gì, Asterisk sẽđọc số thuê bao cho khách hàng …

• Đối với cuộc gọi ra PSTN hoặc các nhà mạng khác, bản tin INVITE sẽđược thực hiện gọi đến các nhà mạng đó.

3.2. Chức năng của các thành phần trong hệ thống Business. (adsbygoogle = window.adsbygoogle || []).push({});

Trong mục này em giới thiệu chức năng chính của các thành phần của hệ

Nguyễn Đức Hùng- ĐHBKHN  72 

3.2.1 Openser

Openser có các nhiệm vụ sau:

• Register: Openser nhận các bản tin REGISTER từ các thuê bao trong mạng, lưu trữ thông tin của thuê bao để phục vụ cho việc định tuyến đến thuê bao này. Thông tin thuê bao được lưu trên database riêng của Openser. Mỗi thuê bao sẽ được cập nhật thông tin liên tục theo một chu kì đã được định nghĩa trong bản tin REGISTER. Nếu quá thời gian timeout, Openser tự động xóa thông tin của thuê bao này. Khi một cuộc gọi đến thuê bao, Openser tìm kiếm thông tin về thuê bao trong database, nếu thuê bao đã đăng kí đến hệ

thống, Openser sẽ gửi bản tin đến thuê bao đó dựa trên địa chỉ thuê bao mà truy vấn được trong database. Nếu thuê bao chưa đăng kí đến hệ thống hoặc thời gian đăng kí đã hết hiệu lực, Openser sẽ gửi thông báo thuê bao chưa

đăng kí dịch vụ hoặc chưa kích hoạt.

• Xử lý NAT (Network Address Translation): Một nhiệm vụ quan trọng của Openser trong hệ thống Business là xử lý NAT. Do đặc thù hệ thống Business là hệ thống phục vụ cho các thuê bao bất kì, khác với hệ thống Wholesale, các thuê bao thường nằm sau NAT. Chính vì vậy, nếu 2 thuê bao cùng nằm sau NAT thì không thể liên lạc trực tiếp cho nhau. Openser được xây dựng để đảm bảo các bản tin đến và đi giữa các thuê bao này đến được với nhau một cách chính xác.

• Điều khiển RTP (Realtime Transmittion Protocol): Do với SIP, báo hiệu và thoại là độc lập nhau, mà Openser chỉ là proxy xử lý về mặt báo hiệu SIP, không có khả năng xử lý luồng RTP. Chính vì vậy Openser phải kết nối với một RTP proxy để xử lý luồng thoại kết nối giữa 2 thuê bao. Khi một thuê bao muốn gửi luồng RTP đến thuê bao khác, nó không thể gửi trực tiếp mà phải thông qua RTP. Việc điều khiển kết nối giữa thuê bao và RTP hoàn toàn do Openser đảm nhiệm.

Nguyễn Đức Hùng- ĐHBKHN  73 

3.2.2 Radius Server

Một trong những giao thức đang được sử dụng khá phổ biến giúp các nhà cung cấp dịch vụ mạng nói chung và Voip nói riêng trong việc chứng thực người dùng và tính cước đó chính là giao thức Remote Authentication Dial In User Service - RADIUS.

RADIUS là một giao thức thực hiện chức năng chứng thực, phân quyền và hỗ trợ việc tính cước cho các nhà cung cấp dịch vụ. Nó gửi đi các thông tin như

Username/Password của khách hàng tới Radius server để thực hiện quá trình đăng kí tại SIP Registrar trước khi thực hiện cuộc gọi.

Trong hệ thống Business, khi một thuê bao thực hiện cuộc gọi, hệ thống sẽ

gửi thông tin đến RADIUS với các thông tin về username/password, thông tin về

thuê bao, thông tin số bị gọi. RADIUS dựa vào thông tin này sẽ quyết định xem thuê bao có được phép gọi hay không, thời gian gọi là bao lâu, và cuộc gọi sẽđược

định tuyến như thế nào …

Thông tin của bản tin này như sau: User-Name, Service-Type, NAS-Port, NAS-IP-Address: Ví dụ một bản tin như sau NAS-IP-Address = '119.18.184.2' User-Name = '0444512345' Called-Station-Id = '0444512345' Calling-Station-Id = '093456789'

h323-conf-id = '891ED125 0A46C9D1 3D783CB5 3809F556' call-id = '2049860460@119.18.184.2'

call-id = '2049860460@119.18.184.2' h323-session-protocol = 'sipv2'

h323-ivr-out = 'Routing:SIP'

Nguyễn Đức Hùng- ĐHBKHN  74 

h323-ivr-out = 'Seed:2817588155' Password = 'cisco'

h323-remote-address = '119.18.184.2' NAS-Port = '5060'

Thông tin trả lại nếu cuộc gọi được chấp nhận có dạng như sau:

'Cisco-AVPair','h323-ivr-in=Routing:093456789@119.18.184.55;expires=300;credit- time=-1;patience=20'

Trong bản tin trên số bị gọi trả về là 093456789, cuộc gọi còn tối đa 300 giây. Khi bắt đầu cuôc gọi thì Openser gửi cho Radius bản tin Accounting-start để

bắt đầu tính cước, ví dụ một bản tin như sau:

Acct-Status-Type = Start Service-Type = Sip-Session Sip-Response-Code = 200 Sip-Method = Invite Acct-Session-Time = 799923 Event-Timestamp = 1204250608 Sip-From-Tag = "d8856dad25af73850cc1c65cd3d41886" Sip-To-Tag = "885b7c08-600000a-13c4-45026-18825-2bca67fb-18825" Acct-Session-Id ="5570E500-E5A111DC-8766BC7A-B9D9972@67.131.95.144- b2b_1" Connect-Infor = "1TA3RA1806" Called-Station-Id = "00184905272556" Calling-Station-Id = "84174100106" Filter-Id = "10.0.0.6" NAS-Identifier = "10.0.1.2" Login-LAT-Node = "10.0.0.6" Acct-Multi-Session-Id = "00184905272556" (adsbygoogle = window.adsbygoogle || []).push({});

Nguyễn Đức Hùng- ĐHBKHN  75  Framed-AppleTalk-Zone = "84174100106" Reply-Message = "10.0.1.2" NAS-Port = 5060 Acct-Delay-Time = 0 NAS-IP-Address = 10.0.1.11 Client-IP-Address = 10.0.1.11 Acct-Unique-Session-Id = "c127a8fba9c97201" Timestamp = 1204250608

Khi kết thúc cuôc gọi thì Openser gửi cho Radius bản tin Accounting-stop kết thúc thời gian tính cước. Acct-Status-Type = Stop Service-Type = Sip-Session Sip-Response-Code = 200 Sip-Method = Bye Acct-Session-Time = 43060 Event-Timestamp = 1204251238 Sip-From-Tag = "885b7c08-600000a-13c4-45026-18825-2bca67fb-18825" Sip-To-Tag = "d8856dad25af73850cc1c65cd3d41886" Acct-Session-Id ="5570E500-E5A111DC-8766BC7A-B9D9972@67.131.95.144- b2b_1" Login-LAT-Node = "67.131.94.137" Framed-AppleTalk-Zone = "84905272556" Reply-Message = "10.0.0.6" NAS-Port = 5060 Acct-Delay-Time = 0 NAS-IP-Address = 10.0.1.11 Client-IP-Address = 10.0.1.11 Acct-Unique-Session-Id = "c127a8fba9c97201"

Nguyễn Đức Hùng- ĐHBKHN  76 

Timestamp = 1204251238

Cuộc gọi có thể được chọn lựa có hay không có RTP-Proxy khi có RTP-Proxy luồng dữ liệu RTP sẽ qua RTP-Proxy thay vì đi trực tiếp giữa 2 GateWay.

3.2.3 MySQL Giới thiệu

MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất hiện nay,

được phát triển, phân phối và hỗ trợ bởi công ty MYSQLAB. (http://www.mysql.com/)

MySQL là một hệ quản trị cơ sở dữ liệu:

Cơ sở dữ liệu là một tập hợp có cấu trúc của dữ liệu. Nó có thể là bất cứ thứ

gì, từ danh sách mua hàng đơn giản cho đến một khối lượng thông tin khổng lồ của một mạng liên kết. Để bổ xung, truy cập và xử lý dữ liệu trên cơ sở dữ liệu máy tính, bạn cần phải có một hệ quản trị cơ sở dữ liệu như MySQL server. Kể từ khi máy tính trở thành một công cụ hữu hiệu trong việc xử lý dữ liệu với khối lượng lớn, hệ quản trị cơ sở dữ liệu đóng một vai trò trung tâm, nó có thể là một công cụ độc lập, hoặc là một thành phần quan trọng của các ứng dụng khác.

MySQL là hệ quản trị cơ sở dữ liệu quan hệ:

Một cơ sở dữ liệu kiểu quan hệ lưu trữ dữ liệu trong các bảng riêng biệt, chứ

không đặt tất cả dữ liệu chung vào một tập hợp lớn. Điều này làm tăng tốc độ xử lý và sự linh hoạt mềm dẻo cho hệ thống. SQL trong MySQL là viết tắt của “Structured Query Language” ( ngôn ngữ truy vấn có cấu trúc).SQL là ngôn ngữ

chuẩn hóa phổ biến nhất dùng để truy nhập cơ sở dữ liệu, được định nghĩa bởi chuẩn ANSI/ISO SQL Standard.

MySQL là một phần mềm mã nguồn mở:

Phần mềm mã nguồn mở có nghĩa là bất cứ ai cũng được quyền sử dụng và chỉnh sửa phần mềm đó theo mục đích của mình. Mọi người có thể download và sử

Nguyễn Đức Hùng- ĐHBKHN  77  nào.Và nếu cần, bạn có thể sửa đổi các đoạn code sao cho phù hợp với mục đích sử

dụng của mình. Phần mềm MySQL sử dụng GPL (GNU gerneral pulic license) để

thông tin cho bạn biết bạn có thể hay không thể làm gì với phần mềm trong những trường hợp cụ thể. Nếu bạn cảm thấy không thực sự thỏa mái với GPL, hay bạn muốn nhúng kết MySQL code vào các ứng dụng mang tính thương mại, bạn có thể

mua phiên bản có tính thương mại từ công ty MySQL (http://www.mysql.com/company/legal/licensing/)

MySQL database server rt mnh, đáng tin cy và d s dng:

MySQL server đã được phát triển với mục đích ban đầu là để quản lý các cơ

sở dữ liệu lớn với tốc độ nhanh hơn hẳn các giải pháp hiện hành. Và nó đã thực sự

thành công khi được sử dụng các môi trường mang tính đòi hỏi khắt khe trong vài năm gần đây.Với sự phát triển như ngày nay, MySQL server đã có khả năng cung cấp một tập hợp các chức năng rất đa dạng và hữu dụng.Khả năng kết nối, tốc độ, và tính bảo mật đã khiến cho MySQL server trở nên rất phù hợp với ứng dụng truy cập cơ sở dữ liệu trên internet.

MySQL server làm việc trong cả mô hình client/server cũng như trong các hệ

thống nhúng kết:

Phần mềm cơ sở dữ liệu MySQL là một hệ thống client/server bao gồm một SQL server đa phân luồng hỗ trợ các hệ thống phụ dich khác nhau, một vài chương trình và thư viện client khác nhau, các công cụ quản trị, và một tập hợp lớn các giao diện chương trình ứng dụng (APIs- Application Programming Interfaces).

MySQL server cũng có thể đóng vai trò như là một thư viện đa phân luồng nhúng kết mà bạn có thể kết nối tới các ứng dụng của mình để có được một sản phẩm độc lập nhỏ hơn, nhanh hơn và dễ quản lý hơn.

3.3.4. Apache – HTTP server Giới thiệu (adsbygoogle = window.adsbygoogle || []).push({});

Nguyễn Đức Hùng- ĐHBKHN  78  Apache là HTTP server số một của mạng internet hiện nay. Các dự án Apache HTTP server là một nỗ lực để phát triển và bảo dưỡng HTTP server mã nguồn mở cho các hệ điều hành hiện đại bao gồm UNIX và Windows NT. Mục tiêu của dự án là cung cấp một hệ server có tính bảo mật cao, hiệu quả và có khả

năng nâng cấp mở rộng để cung cấp các dịch vụ HTTP có tương thích với các chuẩn HTTP hiện hành.

Khi mới ra đời, Apache chỉ là một hệ thống mã nguồn mở đóng vai trò một lựa chọn khác thay cho web server của công ty Netscape Communications Corporation. Kể từđó, nó đã phát triển để cạnh tranh về chức năng và hiệu suất với các web server khác dựa trên nền UNIX. Apache đã trở thành web server phổ biến nhất trên internet kể từ tháng tư năm 1996. Một cuộc khảo sát cho thấy có trên 70%

Một phần của tài liệu Nghiên cứu, thiết kế và xây dựng hệ thống thoại doanh nghiệp sử dụng VoIP (Trang 69 - 83)