7. Kết cấu của đề tài:
1.5.3. Kiến trúc Asterisk
Về cơ bản kiến trúc của Asterisk là sự kết hợp giữa nền tảng công nghệ điện thoại và ứng dụng điện thoại. Công nghệ điện thoại cho VoIP như H.323, SIP, IAX … Các công nghệ điện thoại cho hệ thống chuyển mạch TDM như T1, E1, ISDNvà các giao tiếp đường truyền thoại analog. Các ứng dụng thoại như chuyển mạch cuộc gọi, tương tác thoại, Caller ID, Voicemail, chuyển cuộc gọi…
Asterisk có một số chức năng chính đóng vai trò quan trọng trong hệ thống chuyển mạch cuộc gọi. Khi khởi động hệ thống Asterisk thì chức năng Dynamic Module Loader thực hiện nạp driver của thiết bị, nạp các kênh giao tiếp, các format, codec và các ứng dụng liên quan, đồng thời các hàm APIcũng được liên kết nạp vào hệ thống.
Sau đó hệ thống PBX Swiching Core của Asterisk chuyển sang trạng thái sẵn sàng hoạt động chuyển mạch cuộc gọi, các cuộc gọi được chuyển mạch tùy vào dial plan được cấu hình trong file extensions.conf. Chức năng Application Launcher
Hình 1.12: Kiến trúc Asterisk. Application Laugher GSM, G.723.1, G.711, iLBC, Speex, Linear Codec Translator Scheduler and I/O Manager PBX Swiching
Core Dynamic Module
Loader
Conferencing, Voicemail, Calling Card, Dialing …
Asterisk Application API
SIP, H.323, IAX, MGCP, Custom Hardware …
Asterisk Channel API
C o dec Tr a n sl a to r A P I gsm, g.723, wav, mp3, au … A st eri sk F il e F o rm a t API
dùng để rung chuông thuê bao, quay số, định hướng cuộc gọi, kết nối với hộp thư thoại…
Scheduler and I/O Manager đảm nhiệm các ứng dụng nâng cao, các chức năng được phát triển bởi cộng đồng phát triển Asterisk.
Codec Translator xác nhận các kênh nén dữ liệu ứng với các chuẩn khác nhau có thể kết hợp liên lạc được với nhau.
Tất cả các cuộc gọi định hướng qua hệ thống Asterisk đều thông qua các giao thức như SIP, Zaptel, IAX nên hệ thống Asterisk phải đảm trách nhiệm vụ liên kết các giao thức khác nhau đó để xử lý cuộc gọi.
Kiến trúc Asterisk bao gồm 4 chức năng API chính:
Asterisk Application API: Bao gồm tất cả các ứng dụng được thực thi trong
hệ thống Asterisk như Voicemail, CallerID …
Asterisk File Format API: Asterisk tương thích với việc xử lý các loại file
có định dạng khác nhau như: gsm, wav,mp3 …
Asterisk Channel API: Giao tiếp với các kênh lệnh khác nhau, đây là đầu
mối cho việc kết nối các cuộc gọi tương thích với nhiều chuẩn khác nhau như SIP, IAX, H.323 …
Codec Translator API: Các hàm đảm nhiệm thực thi và giải nén các chuẩn
khác nhau như G723, GSM, Linear …
Ngoài ra, Asterisk còn có thư viện Asterisk Gateway Interface (AGI) – tương tự như CGI– cơ chế kích hoạt ứng dụng bên ngoài, cho phép viết kịch bản phức tạp với một số ngôn ngữ như PHP hay Perl. Nói chung, khả năng viết các ứng dụng tùy biến rất lớn.
1.5.5. SIP trong Asterisk
Giao thức SIP trong Asterisk có ba dạng sau:
SIP client: điều này có nghĩa là Asterisk đăng kí như một máy khách (user) tới một server SIP khác. Nó sẽ nhận hoặc thực hiện cuộc gọi từ server này.
SIP server: Asterisk được cấu hình mặc định là vậy, những SIP client sẽ đăng kí tới server Asterisk và thiết lập phiên kết nối với server này thông qua giao thức SIP.
SIP Gateway: Asterisk xem như là media gateway giữa các giao thức SIP, H.323, IAX và những mối liên kết với mạng PSTN.
Mỗi SIP client hay SIP server được định nghĩa thông qua việc cấu hình nó trong file sip.conf, và có cấu trúc như sau:
[username] ; Tên của SIP Client, có thể là kí tự hoặc số Type = thuộc tính ; trong đó thuộc tính có thể là:
User: Được sử dụng để xác thực cuộc gọi vào.
Peer: Được sử dụng để xác thực cuộc gọi ra.
Friend: Được sử dụng cho cả hai mục đích trên.
Secret=*** ; mật khẩu của user.
Context = contexts ; những user trong cùng một context thì mới có thể liên lạcđược với nhau.
Host = dynamic (hoặc một địa chỉ IP cụ thể) ;nếu là dynamic thì user có thể
đăng kí tới tổng đài Asterisk bằng bất cứ địa chỉ IP nào, còn nếu là một địa chỉ IP cụ thể thì user chỉ đăng kí tới tổng đài Asterisk bằng duy nhất địa chỉ IP đó.
Nat=yes (hoặc no) ; cho phép NAT ở môi trường mạng có địa chỉ IP ở các lớp khác nhau hay không.
Port=5060 ; port để kết nối tới các user khác, mặc định của SIP là 5060. Mailbox=username@vm-context ; thiết lập hộp thư thoại cho user. Allow=xyz ; trong đó xyz là những codec được Asterisk hỗ trợ. … và một số thông số khác.
Ví dụ:[200]
type=friend secret=abc123 context=incoming
host=dynamic nat=no
port=5060
allow=h263,h261,g729,ulaw,alaw, h263p mailbox=200@voicemess