Thông thường để cấu hình hệ thống Asterisk chúng ta thực hiện trên các tập tin
dạng text như sip.conf, iax.conf. extentions.conf. sau đó để tập tin cấu hình có hi ệu lực
ta cần phải phải thực hiện lệnh reload. Một nhu cầu thực tế là khi cấu hình hệ thống
asterisk, chẳng hạn như cho người sử dụng khai báo một thuê bao online mà không cần
phải reload lại hệ thống asterisk thì thực hiện như thế nào?
Kiến trúc thời gian thực(Asterisk RealTime Architecture) ra đời nhằm đáp ứng
nhu cầu thực tế trên. Kiến trúc thời gian thực thay vì lưu tập tin cấu hình trên t ập tin dạng
text thì được lưu vào database. Khi có một cuộc gọi tới( incoming call) một extension do
Asterisk quản lý được Asterisk tìm kiếm trong bảng( có chức năng tương tự SIP.conf)
của Database đã được định hướng trong file SIP.conf. Khi một trong 2 bên truyền thông
phát ra lệnh hangup thì Asterisk sẽ phát tín hiệu kết thúc kênh truyền thông giữa 2 thiết bị
đầu cuối và xóa Record đã nạp vào bộ nhớ. Như vậy, Asterisk tra cứu Extension theo
kiểu thời gian thực trái với trước kia là nó load tất cả các extension trong file SIP.conf
vào bộ nhớ
35 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 4713 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Hệ thống VoIP và tổng đài Asterisk, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ch vụ
, nhiều tính năng mới .
2. Nhược điểm
- Chất lượng dịch vụ : Do các mạng truyền số liệu vốn dĩ không được thiết kế để
truyền thoại thời gian thực cho nên việc trễ truyền hay việc mất mát các gói tin
hoàn toàn có thể xảy ra và sẽ gây ra chất lượng dịch vụ thấp .
- Bảo mật : Do mạng Internet là một mạng hỗn hợp và rộng khắp bao gồm rất nhiều
máy tính cùng sử dụng cho nên việc bảo mật các thông tin cá nhân là rất khó.
III. Các thành phần trong mạng VoIP
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 3 -
Mạng VoIP phải có khả năng thực hiện các chức năng mà mạng điện thoại công
cộng thực hiện, ngoài ra phải thực hiện chức năng của một gateway giữa mạng IP và
mạng điện thoại công cộng. Thành phần của mạng điện thoại IP có thể gồm các phần
tử sau đây:
- Thiết bị đầu cuối kết nối với mạng IP ( Terminal) : Có thể là một phần mềm
máy tính ( softphone) hoặc một điện thoại IP (hardphone).
- Mạng truy nhập IP: Là các loại mạng dữ liệu sử dụng giao thức TCP/IP, phổ
biến nhất là mạng Internet.
- Gateway: Là thiết bị có chức năng kết nối hai mạng không giống nhau, hầu
hết các trường hợp đó là mạng IP và mạng PSTN. Có 3 loại gateway là: Gateway
truyền tải kênh thoại, Gateway điều khiển truyền tải kênh thoại và Gateway báo
hiệu.
- Gatekeeper: Có thể xem gatekeeper như là bộ não của hệ thống mạng điện
thoại IP. Nó cung cấp chức năng quản lý cuộc gọi một cách tập trung và một số
các dịch vụ quan trọng khác như là: nhận dạng các đầu cuối và gateway, quản lý
băng thông, chuyển đổi địa chỉ (từ địa chỉ IP sang địa chỉ E.164 và ngược lại),
đăng ký hay tính cước...Mỗi gatekeeper sẽ quản lý một vùng bao gồm các đầu
cuối đã đăng ký, nhưng cũng có thể nhiều gatekeeper cùng quản lý một vùng
trong trường hợp một vùng có nhiều gatekeeper.
IV. Các giao thức trong mạng VoIP
1. Giao thức H323
Khi đề cập đến thoại IP, tiêu chuẩn quốc tế thường được đề cập đến là H.323.
Giao thức H.323 là chuẩn do ITU-T SG16 phát triển cho phép truyền thông đa phương
tiện qua các hệ thống dựa trên mạng chuyển mạch gói, ví dụ như Internet. Nó được ITU-
T ban hành lần đầu tiên vào năm 1996 và gần đây nhất là năm 1998. H.323 là chuẩn riêng
cho các thành phần mạng, các giao thức và các thủ tục cung cấp dịch vụ thông tin
multimedia như : audio thời gian thực, video và thông tin dữ liệu qua các mạng chuyển
mạch gói , bao gồm các mạng dựa trên giao thức IP. Tập giao thức H.323 được thiết kế
để hoạt động trên tầng vận chuyển của các mạng cơ sở. Tuy nhiên, khuyến nghị H.323 rất
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 4 -
chung chung nên ít được coi là tiêu chuẩn cụ thể. Trong thực tế, hoàn toàn có thể thiết kế
một hệ thống thoại tuân thủ H.323 mà không cần đến IP. Khuyến nghị này chỉ đưa ra yêu
cầu về “giao diện mạng gói” tại thiết bị đầu cuối. Ban đầu, H.323 dự định dành cho X.25,
FrameRelay sau đó là ATM, nhưng giờ đây lại là TCP/IP, trong khi đó có rất ít H.323
được vận hành trên mạng X.25 và ATM.
1.1.Cấu trúc của H.323.
1.1.1. Thiết bị đầu cuối.
- Thực hiện các chức năng đầu cuối : thực hiện gọi hoặc nhận cuộc gọi.
1.1.2. Gatekeeper
Một miền H.323 trên cơ sở mạng IP là tập hợp tất cả các đầu cuối được
gán với một bí danh. Mỗi miền được quản trị bởi một Gatekeeper duy nhất, là
trung tâm đầu não, đóng vai trò giám sát mọi hoạt động trong miền đó. Đây là
thành phần tuỳ chọn trong hệ thống VoIP theo chuẩn H.323. Tuy nhiên nếu có
mặt Gatekeeper trong mạng thì các đầu cuối H.323 và các Gateway phải hoạt
động theo các dịch vụ của Gatekeeper đó. Gatekeeper hoạt động ở hai chế độ :
- Chế độ trực tiếp: Gatekeeper chỉ có nhiệm vụ cung cấp địa chỉ đích mà không
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 5 -
tham gia vào các hoạt động kết nối khác.
- Chế độ chọn đường : Gatekeeper là thành phần trung gian, chuyển tiếp mọi
thông tin trao đổi giữa các bên.
Gatekeeper phải thực hiện các chức năng sau:
• Chức năng dịch địa chỉ : Gatekeeper sẽ thực hiện chuyển đổi địa chỉ
hình thức (dạng tên gọi hay địa chỉ hộp thư ) của một đầu cuối hay
Gateway sang địa chỉ truyền dẫn (địa chỉ IP). Việc chuyển đổi được thực
hiện bằng cách sử dụng bản đối chiếu địa chỉ được cập nhật thường xuyên
bởi các bản tin đăng ký.
• Điều khiển truy cập : Gatekeeper cho phép một truy cập mạng LAN
bằng cách sử dụng các bản tin H.225 là ARQ/ACF/ARJ. Việc điều khiển
này dựa trên sự cho phép cuộc gọi, băng thông, hoặc một vài thông số
khác do nhà sản xuất quy định. Nó có thể là chức năng rỗng có nghĩa là
chấp nhận mọi yêu cầu truy nhập của đầu cuối.
• Điều khiển độ rộng băng thông :Gatekeeper hỗ trợ các bản tin
BRQ/BRJ/BCF cho việc quản lý băng thông. Nó có thể là chức năng rỗng
nghĩa là chấp nhận mọi yêu cầu thay đổi băng thông.
• Quản lý vùng: Ở đây chữ vùng là tập hợp tất cả các phần tử H.323 gồm
thiết bị đầu cuối, Gateway, MCU có đăng ký hoạt động với Gatekeeper để
thực hiện liên lạc giữa các phần tử trong vùng hay từ vùng này sang vùng
khác.
Các chức năng không bắt buộc của Gatekeeper:
• Điều khiển báo hiệu cuộc gọi: Gatekeeper có thể lựa chọn hai phương
thức điều khiển báo hiệu cuộc gọi là: hoàn thành báo hiệu cuộc gọi với các
đầu cuối và xử lý báo hiệu cuộc gọi chính bản thân nó, hoặc Gatekeeper
có thể ra lệnh cho các đầu cuối kết nối một kênh báo hiệu cuộc gọi hướng
tới nhau. Theo phương thức này thì Gatekeeper không phải giám sát báo
hiệu trên kênh H.225.
• Cho phép cuộc gọi : Thông qua việc sử dụng báo hiệu H.225,
Gatekeeper có thể loại bỏ các cuộc gọi không được phép. Những nguyên
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 6 -
nhân từ chối bao gồm hạn chế tới hoặc từ một đầu cuối cụ thể, hay các
Gateway, và hạn chế truy nhập trong các khoảng thời gian nhất định.
• Quản lý băng thông : Gatekeeper có thể hạn chế một số các đầu cuối
H.323 cùng một lúc sử dụng mạng.Thông qua việc sử dụng kênh báo hiệu
H.225, Gatekeeper có thể loại bỏ các các cuộc gọi từ một đầu cuối do sự
hạn chế băng thông. Điều đó có thể xảy ra nếu Gatekeeper thấy rằng
không đủ băng thông sẵn có trên mạng để trợ giúp cho cuộc gọi. Việc từ
chối cũng có thể xảy ra khi một đầu đang tham gia một cuộc gọi yêu cầu
thêm băng thông. Nó có thể là một chức năng rỗng nghĩa là mọi yêu cầu
truy nhập đều được đồng ý.
• Quản lý cuộc gọi : Một ví dụ cụ thể về chức năng này là Gatekeeper có
thể lập một danh sách tất cả các cuộc gọi H.323 hướng đi đang thực hiện
để chỉ thị rằng một đầu cuối bị gọi đang bận và cung cấp thông tin cho
chức năng quản lý băng thông.
1.1.3. Khối điều khiển đa điểm MCU .
Khối điều khiển đa điểm (MCU) đwợc sử dụng khi một cuộc gọi hay hội
nghị cần giữ nhiều kết nối hoạt động. Do có một số hữu hạn các kết nối đồng thời,
nên các MCU giám sát sự thoả thuận giữa các đầu cuối và sự kiểm tra mọi đầu
cuối về các khả năng mà chúng có thể cung cấp cho hội nghị hoặc cuộc gọi. Các
MCU gồm hai phần: Bộ điều khiển đa điểm (MC) và Bộ xử lý đa điểm (MP).
Bộ điều khiển đa điểm (MC) có trách nhiệm trong việc thoả thuận và quyết
định khả năng của các đầu cuối. Trong khi đó bộ xử lý đa điểm được sử dụng để
xử lý đa phương tiện (multimedia), các luồng trong suốt quá trình của một hội
nghị hoặc một cuộc gọi đa điểm.
Bộ xử lý đa điểm ( MP ) có thể không có hoặc có rất nhiều vì chúng có
trách nhiệm trộn và chuyển mạch các luồng phương tiện truyền đạt và việc xử lý
các bit dữ liệu âm thanh và hình ảnh. MC không phải tương tác trực tiếp với các
luồng phương tiện truyền đạt, đó là công việc của MP. Các MC và MP có thể cài
đặt như một thiết bị độc lập hoặc là một phần của các phần tử khác của H.323.
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 7 -
1.2. Tập giao thức H323
1.2.1 Báo hiệu RAS
Cung cấp các thủ tục điều khiển tiền cuộc gọi trong mạng H.323 có GK. Kênh
báo hiệu RAS được thiết lập giữa các đầu cuối và các GK trước các kênh khác. Nó độc
lập với kênh báo hiệu cuộc gọi và kênh điều khiển H.245. Các bản tin RAS được truyền
qua mạng thông qua kết nối UDP, thực hiện việc đăng ký, cho phép, thay đổi băng thông,
trạng thái vμ các thủ tục huỷ bỏ cuộc gọi. Báo hiệu RAS gồm những quá trình sau:
- Tìm GateKeeper.
- Đăng ký : Đăng ký là một quá trình cho phép GW, các đầu cuối và MCU tham
gia vào một vùng và báo cho GK biết địa chỉ truyền vận và địa chỉ bí danh của nó.
- Định vị đầu cuối
- Cho phép, thay đổi băng thông, trạng thái vμ huỷ quan hệ
1.2.2 Báo hiệu điều khiển cuộc gọi H.225
Trong mạng H.323, thủ tục báo hiệu cuộc gọi được dựa trên khuyến nghị H.225
của ITU. Khuyến nghị này chỉ rõ cách sử dụng và trợ giúp của các bản tin báo hiệu
Q.931. Sau khi khởi tạo thiết lập cuộc gọi. Các bản tin điều khiển cuộc gọi và các bản tin
giữ cho kênh báo hiệu cuộc gọi tồn tại (keepalive) được chuyển tới các cổng.
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 8 -
Các bản tin Q.931 thường được sử dụng trong mạng H.323:
• Setup: Được gửi từ thực thể chủ gọi để thiết lập kết nối tới thực thể H.323 bị gọi
• Call Proceeding: chỉ thị rằng thủ tục thiết lập cuộc gọi đã được khởi tạo.
• Alerting: chỉ thị rằng chuông bên đích bắt đầu rung.
• Connect: thông báo rằng bên bị gọi đã trả lời cuộc gọi.
• Release Complete: chỉ thị rằng cuộc gọi đang bị giải phóng.
• Facility: Đây là một bản tin Q.932 dùng để yêu cầu hoặc phúc đáp các dịch vụ
bổ sung. Nó cũng được dùng để cảnh báo rằng một cuộc gọi sẽ được định tuyến
trực tiếp hay thông qua GK.
1.2.3 Giao thức H.245
H245 xử lý các bản tin điều khiển từ đầu cuối đến đầu cuối giữa các thực thể
H.323. Các thủ tục H.245 thiết lập các kênh logic cho việc truyền tín hiệu âm thanh, hình
ảnh, dữ liệu và thông tin kênh điều khiển. Báo hiệu H.245 được thiết lập giữa 2 đầu cuối,
một đầu cuối với một MC hoặc một đầu cuối với GK. Đầu cuối chỉ thiết lập duy nhất một
kênh điều khiển H.245 cho mỗi cuộc gọi mà nó tham gia. Một đầu cuối, MCU, GK có thể
hỗ trợ nhiều cuộc gọi cùng một lúc do vậy có nhiều kênh điều H.245 tương ứng. Khuyến
nghị H.245 định nghĩa một số thực thể giao thức độc lập trợ giúp cho báo hiệu từ đầu
cuối đến đầu cuối như sau:
• Trao đổi khả năng : Bao gồm những bản tin cho phép xác định khả năng trao
đổi dữ liệu và âm thanh của từng đầu cuối tham gia cuộc gọi. Nó đảm bảo cho bên thu đủ
khả năng nhận và xử lý thông tin đầu vào mà không bị xung đột gì. Khi biết được khả
năng thu của đầu cuối nhận, thì đầu cuối phát sẽ giới hạn nội dung thông tin mà nó truyền
đi trong khuôn khổ khả năng thu trên. Ngược lại, khả năng truyền cho phép đầu cuối
nhận lựa chọn chế độ thu thích hợp. Với tín hiệu âm thanh, khả năng trao đổi bao gồm
các bộ giải mã tín hiệu thoại như họ tiêu chuẩn G: G.729 8kbps, G.711 64kbps, G.723 5,3
hoặc 6,3 kbps, G.722 48kbps...
• Quyết định chủ - tớ: Là các thủ tục quyết định đầu cuối nào là chủ đầu cuối nào
là tớ trong một cuộc gọi xác định. Mối quan hệ này được duy trì trong suốt thời gian cuộc
gọi.
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 9 -
• Trễ vòng (Round Trip delay) : Là các thủ tục dùng để xác định trễ giữa đầu cuối
nguồn và đầu cuối đích. Bản tin RounđTripDelayRequest đo trễ và kiểm tra thực thể giao
thức H.245 ở đầu cuối bên kia có còn hoạt động hay không.
• Báo hiệu kênh logic (Logical channel signaling) : Báo hiệu kênh logic sử dụng
các bản tin OpenLogicalChannel và CloseLogicalChannel và các thủ tục của H.245 để
đóng mở các kênh logic. Khi một kênh logic được mở, một bản tin OpenLogical sẽ miêu
tả đầy đủ nội dung của kênh logic đó bao gồm kiểu truyền thông (media type), thuật toán
sử dụng, các chức năng và mọi thông tin khác để bên thu có thể dịch được nội dung của
kênh logic.
• Các thủ tục kết nối nhanh : Có hai thủ tục để thiết lập kênh truyền thông là
H.245 và kết nối nhanh. Kết nối nhanh cho phép sự thiết lập kết nối truyền thông cho các
cuộc gọi cơ bản điểm tới điểm với chỉ một lần trao đổi bản tin vòng (bản tin đi từ đầu
cuối nguồn tới đầu cuối đích rồi lại trở về đầu cuối nguồn).
• H245 ngầm (Tuneling H.245) : Các bản tin H.245 có thể được đóng gói ở trong
kênh báo hiệu cuộc gọi H.225 thay vì tạo ra một kênh điều khiển H.245 riêng biệt.
Phuơng pháp này cải thiện được thời gian thiết lập cuộc gọi và thời gian định vị tài
nguyên. Đồng thời nó cho phép sự đồng bộ giữa báo hiệu cuộc gọi và điều khiển. Có thể
đóng gói nhiều bản tin H.245 vào bất kỳ bản tin H.225 nào. Vào một thời điểm bất kỳ,
mỗi đầu cuối có thể chuyển sang một kết nối H.245 riêng biệt.
1.3 .Quá trình thiết lập cuộc gọi H323.
Một cuộc gọi trải qua các bước như sau:
• Thiết lập cuộc gọi.
• Khởi tạo truyền thông và trao đổi khả năng.
• Thiết lập kênh truyền thông nghe nhìn.
• Dịch vụ cuộc gọi.
• Kết thúc cuộc gọi.
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 10 -
2. Giao thức khởi tạo phiên SIP
SIP (Session Initiation Protcol ) là giao thức báo hiệu điều khiển lớp ứng dụng
được dùng để thiết lập, duy trì, kết thúc các phiên truyền thông đa phương tiện
(multimedia). Các phiên multimedia bao gồm thoại Internet, hội nghị, và các ứng dụng
tương tự có liên quan đến các phương tiện truyền đạt (media) như âm thanh, hình ảnh, và
dữ liệu.
SIP sử dụng các bản tin mời (INVITE) để thiết lập các phiên và để mang các
thông tin mô tả phiên truyền dẫn. SIP hỗ trợ các phiên đơn bá (unicast) và quảng bá
(multicast) tương ứng các cuộc gọi điểm tới điểm và cuộc gọi đa điểm. Có thể sử dụng
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 11 -
năm chức năng của SIP để thiết lập và kết thúc truyền dẫn là : định vị thuê bao, khả năng
thuê bao, độ sẵn sàng của thuê bao, thiết lập cuộc gọi và xử lý cuộc gọi.
SIP được IETF đ−a ra trong RFC 2543. Nó là một giao thức dựa trên ý tưởng và
cấu trúc của HTTP(HyperText Transfer Protocol)-giao thức trao đổi thông tin của World
Wide Web- vμ lμ một phần trong kiến trúc multimedia của IETF. Các giao thức có liên
quan đến SIP bao gồm giao thức RSVP (Resource Reservation Protocol), giao thức
truyền vận thời gian thực (Real-time Transport Protocol), giao thức cảnh báo phiên SAP
(Session Announcement Protocol), giao thức miêu tả phiên SDP (Session Description
Protocol). Các chức năng của SIP độc lập, nên chúng không phụ thuộc vào bất kỳ giao
thức nào thuộc các giao thức trên. Mặt khác, SIP có thể hoạt động kết hợp với các giao
thức báo hiệu khác như H.323.
SIP là một giao thức theo thiết kế mở do đó nó có thể được mở rộng để phát triển
thêm các chức năng mới. Sự linh hoạt của các bản tin SIP cũng cho phép đáp ứng các
dịch vụ thoại tiên tiến bao gồm cả các dịch vụ di động.
2.1 Các thành phần trong hệ thống SIP
Redirect
Server
Location
Server
Registrar
Server
User Agent Gateway
SIP Components
Proxy
Server
Proxy
Server
PSTN
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 12 -
Hai phần tử cơ bản trong hệ thống SIP là tác nhân người sử dụng (user agent) và
các máy phục vụ mạng (network server). Bên chủ gọi và bị gọi được nhận dạng bằng các
địa chỉ SIP.
• User agent
- Client (UAC): Khởi tạo các yêu cầu SIP và đóng vai trò như tác nhân chủ gọi
của người dùng.
- Server (UAS): Nhận các yêu cầu và thay mặt cho người sử dụng gửi trả các đáp
ứng, đóng vai trò như tác nhân bị gọi.
• Network server
- Proxy server: xử lý các yêu cầu hoặc chuyển đổi nội dung rồi gửi cho các server khác
- Location server: định vị thuê bao và cung cấp thông tin cho proxy hoặc redirect server
- Redirect server: xác định server chặng tiếp theo rồi thông báo cho client để nó tự gửi
yêu cầu. Redirect server không tạo và gửi yêu cầu
- Registrar server: tiếp nhận và xử lý các yêu cầu REGISTER (vd, khi bật máy thuê bao),
thực hiện nhận thực thuê bao
2.2 . Các bản tin của SIP
SIP là một giao thức dựa trên ký tự văn bản với cú pháp bản in và các trường mào
đầu đồng nhất với giao thức truyền siêu văn bản HTTP (Hypper Text Transfer Protocol).
Các bản tin của SIP truyền trên cùng một kết nối TCP hoặc bó dữ liệu UDP.
--------------------------------------------------------------
SIP Header
--------------------------------------------------------------
INVITE sip:5120@192.168.36.180 SIP/2.0
Via: SIP/2.0/UDP 192.168.6.21:5060
From: sip:5121@192.168.6.21
To:
Call-ID: c2943000-e0563-2a1ce-2e323931@192.168.6.21
CSeq: 100 INVITE
Expires: 180
User-Agent: Cisco IP Phone/ Rev. 1/ SIP enabled
Accept: application/sdp
Contact: sip:5121@192.168.6.21:5060
Content-Type: application/sdp
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 13 -
Một số trường mào đầu đơn giản :
- INVITE : Để chỉ thị rằng thuê bao hoặc dịch vụ được mời tham gia vào một
phiên. Nó bao gồm một mô tả phiên và đối với các cuộc gọi song công thì bên chủ gọi chỉ
thị phương thức truyền thông (media) trong bản tin này. Theo phương pháp đơn giản này
các bên có thể xác định được các khả năng của bên kia và bắt đầu một phiên hội thoại .
- ACK : Những yêu cầu này tương ứng với một yêu cầu INVITE. Chúng là sự xác
nhận cuối cùng từ một hệ thống cuối và chấm dứt một giao dịch được khởi tạo bởi
INVITE.
- OPTIONS : Bản tin này cho phép truy vấn và tập hợp các khả năng của user
agent và network server. Tuy nhiên yêu cầu này không được dùng để thiết lập phiên.
- BYE: Bên chủ gọi và bị gọi sử dụng yêu cầu này để giải phóng cuộc gọi. Trước
khi thực sự giải phóng cuộc gọi, user agent gửi yêu cầu này tới server để cảnh báo rằng
nó muốn giải phóng phiên làm việc.
- CANCEL: Yêu cầu này cho phép user agent và network server xoá bỏ bất kỳ
một yêu cầu nào đang thi hành.
- REGISTER: yêu cầu này được client dùng để đăng ký thông tin với SIP server.
Các bản tin đáp ứng
- 1xx Informational (vd 100 Trying, 180 Ringing)
- 2xx Successful (vd 200 OK, 202 Accepted)
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 14 -
- 3xx Redirection (vd 302 Moved Temporarily)
- 4xx Request Failure (e.g. 404 Not Found, 482 Loop Detected)
- 5xx Server Failure (e.g. 501 Not Implemented)
- 6xx Global Failure (e.g. 603 Decline)
2.3 Quá trình thiết lập cuộc gọi .
- Theo kiểu Proxy :
Location
Server
Client
Proxy
Server UAS
1. INVITE 4. INVITE
7. ACK 8. ACK
6. OK 5. OK
2 3
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 15 -
(1) Client gửi bản tin INVITE chứa thông tin về bên bị gọi tới Proxy Server
(2) Proxy server xác định vị trí của bên bị gọi bằng cách sử dụng các địa chỉ được cung
cấp trong bản tin INVITE và location server .
(3) Location Server gửi trả lại Proxy Server thông tin đã yêu cầu
(4) Proxy server gửi yêu cầu INVITE tới địa chỉ mà nó vừa xác định được.
(5) Bên bị gọi (server) đáp ứng lại bằng bản tin thành công 200 OK.
(6) Proxy server lại đáp ứng lại bên Client bằng bản tin 200 OK.
(7)(8) Client xác nhận bằng bản tin ACK. Bản tin này được gửi qua Proxy server hoặc
được gửi trực tiếp tới bên bị gọi.
- Theo kiểu redirect :
(1) Client gửi bản tin INVITE chứa thông tin về bên bị gọi tới Redirect Server
(2 Redirect Server xác định vị trí của bên bị gọi bằng cách sử dụng các địa chỉ được cung
cấp trong bản tin INVITE và location server .
(3) Location Server gửi trả lại Proxy Server thông tin đã yêu cầu
(4) Sau khi đã xác định được vị trí của thuê bao thì Redirect server gửi trực tiếp địa chỉ
vừa nhận được cho phía Client.
(5) Client gửi bản tin ACK tới Redirect server để hoàn tất phiên giao dịch.
(6) Client gửi trực tiếp yêu cầu INVITE tới bên bị gọi.
(7)(8) Bên bị gọi đáp ứng bằng bản tin 200 OK và bên chủ gọi xác nhận bằng bản tin
ACK.
UAC
Client
UAS Redirect
server
Location
server
2 3
1. INVITE
4.
5. ACK
6. INVITE
7.OK
8. ACK
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 16 -
3.Real-time Transport Protocol (RTP)
RTP được coi như một giao thức truyền từ đầu cuối đến đầu cuối (end to end)
phục vụ truyền dữ liệu thời gian thực như audio và video. RTP thực hiện việc quản lý về
thời gian truyền dữ liệu và nhận dạng dữ liệu được truyền. Nhưng RTP không cung cấp
bất cứ một cơ chế nào đảm bảo thời gian truyền và cũng không cung cấp bất cứ một cơ
chế nào giám sát chất lượng dịch vụ. Sự giám sát và đảm bảo về thời gian truyền dẫn
cũng như chất lượng dịch vụ được thực hiện nhờ hai giao thức RTCP và RSVP.
Tương tự như các giao thứ truyền dẫn khác, gói tin RTP (RTP packet) bao gồm
hai phần là header (phần mào đầu) và data (dữ liệu). Nhưng không giống như các giao
thức truyền dẫn khác là sử dụng các trường trong header để thực hiện các chức năng điều
khiển, RTP sử dụng một cơ chế điều khiển độc lập trong định dạng của gói tin RTCP
để thực hiện các chức năng này.
Cấu trúc gói tin RTP
- Version (2 bit): version của RTP (hiện tại là version 2).
- Padding (1 bit): có vai trò như bit cờ được sử dụng để đánh dấu khi có một số
byte được chèn vào trong gói.
- Extension (1 bit): cũng có vai trò như một bit cờ được sử dụng để đánh dấu khi
có header mở rộng tiếp theo header cố định.
- CSRC count (4 bit): chỉ rõ số lượng của CSRC (contributing source)
- Marker (1 bit): có vai trò như một bit cờ, trạng thái của nó được phụ thuộc vào
trường payload type.
- Payload Type (7 bit): chỉ rõ loại thông tin được chứa trong các gói.
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 17 -
- Serquence Number (16 bit): cung cấp số thứ tự của các gói. Cách này như một
cơ chế giúp bên thu có thể thu đúng thứ tự các gói tin, nhận ra gói tin bị mất.
- Time-stamp (32 bit): là tham số đánh dấu thời điểm byte đầu tiên được lấy mẫu
trong gói RTP. Giá trị time-stamp khởi đầu là ngẫu nhiên, các gói RTP phát đi
liên tiếp có thể có cũng giá trị time-stemp nếu chúng cùng được phát đi một lúc.
- Syschronisation source (SSRC) identifier: số nhận dạng nguồn của gói dữ liệu.
Nếu ứng dụng muốn truyền dữ liệu có nhiều dạng khác nhau trong cùng một thời
điểm (ví dụ là tín hiệu audio và video) thì sẽ có những phiên truyền riêng cho mỗi
dạng dữ liệu. Sau đó ứng dụng sẽ tập hợp các gói tin có cùng nhận dạng SSRC.
Số nhận dạng này được gán một cách ngẫu nhiên.
- Contribute source (CSRC) identifer (độ dài thay đổi): tại một điểm đích nào đó
mà những tín hiệu audio đến đích cần trộn lại với nhau thì giá trị CSRC sẽ là tập
hợp tất cả các giá trị SSRC của các nguồn mà gửi tín hiệu đến điểm đích đó.
Trường CSRC có thể chứa tối đa là 15 số nhận dạng nguồn SSRC.
- Extension header (độ dài thay đổi): chứa các thông tin thểm của gói RTP.
4.Real-time Transport Control Protocol (RTCP)
Mặc dù RTP là một giao thức độc lập nhưng thường được hỗ trợ bởi giao thức
RTCP. RTCP trả về nguồn các thông tin về sự truyền thông và các thành phần đích. Giao
thức điều khiển này cho phép gửi về các thông số về bên thu và tự thích nghi với bên phát
cho phù hợp vời bên phát. Mỗi người tham gia một phiên truyền RTP phải gửi định kỳ
các gói RTCP tới tất cả những người khác cũng tham gia phiên truyền. Tuỳ theo mục
đích mà RTCP thực hiện 4 chức năng:
- RTCP cung cấp một sự phản hồi chất lượng của dữ liệu. Các thông tin đó giúp
cho ứng dụng thực hiện chức năng điều khiển luồng và quản lý tắc nghẽn.
- RTCP cung cấp sự nhận dạng mà được sử dụng để tập hợp các kiểu dữ liệu khác
nhau (ví dụ audio và video). Điều này là cần thiết vì khả năng này không được
RTP cung cấp.
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 18 -
- Nhờ việc định kỳ gửi các gói tin RTCP mà mỗi phiên truyền có thể theo dõi
được số người tham gia. RTP không thể sử dụng được cho mục đích này khi một
ai đó không gửi dữ liệu mà chỉ nhận từ những người khác.
- Cuối cùng là một chức năng lựa chọn cho phép có thêm thông tin về những
người tham gia vào phiên truyền.
Tuỳ thuộc vào giao thức RTP được sử dụng cho loại dữ liệu nào mà RTCP cung
cấp các thông báo điều khiển khác nhau. Có 4 loại thông báo điều khiển chính được giao
thức RTCP cung cấp là:
- Sender report (SR): thông báo này chứa các thông tin thống kê liên quan đến kết
quả truyền như tỷ lệ tổn hao, số gói dữ liệu bị mất, khoảng trễ. Các thông báo này
phát ra từ phía phát trong một phiên truyền thông.
- Receiver report (RR): thông báo này chứa các thông tin thống kê liên quan đến
kết quả nhận giữa các điểm cuối. Các thông báo này được phát ra từ phía thu
trong một phiên truyền thông.
- Source description (SDES): thông báo bao gồm các thông số mô tả nguồn như
tên, vị trí,...
- Application (APP): thông báo cho phép truyền các dữ liệu ứng dụng.
Cấu trúc gói tin RTCP
- Version (2 bit): version RTP hiện tại (version 2).
- Padding (1 bit): có chức năng như một bit cờ chỉ rõ xem trong gói có các byte
được chèn thêm hay không.
- Report counter (5 bit): số thông báo chứa trong gói
- Packet type (8 bit): xác định loại thông báo của gói (SR hoặc RR hoặc APP).
- Length (16 bit): chỉ rõ độ dài của gói.
- Report (độ dài thay đổi): chứa các thông báo chi tiết.
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 19 -
5. Resource Reservation Protocol (RSVP)
Giao thức RSVP được sử dụng như một giao thức báo hiệu hỗ trợ cho RTP. Mục
đích của RSVP là cung cấp một cơ chế đảm bảo băng thông cho các hoạt động của các
ứng dụng. RSVP gửi tham số chất lượng dịch vụ QoS kết hợp với các dữ liệu thời gian
thực được truyền trên mạng TCP/IP. Hỗ trợ giao thức RTP, giao thức RSVP có thể giải
quyết các lỗi xảy ra trên đường truyền để đảm bảo các tham số chất lượng. Thật vậy, giao
thức RTP chỉ hỗ trợ việc truyền thông điểm – điểm và không quản lý các tham số liên kết
trên mạng. RSVP không những tác động ở máy phát, máy thu mà còn tác động trên cả
các router trong mạng.
RSVP thiết lập và duy trì kết nối duy nhất cho một luồng dữ liệu, xác lập một hệ
thống quản lý thứ tự các gói và tạo modun điều khiển để quản lý các nguồn tài nguyên
của các nút mạng khác nhau. RSVP đưa ra một mô hình tối ưu để liên kết các dữ liệu từ
một nguồn tới nhiều đích. RSVP đóng vai trò quản lý một cách lập các host đích để tự
thích nghi các tham số chất lượng giữa khả năng cung cấp và nhu cầu đáp ứng.
Việc dành riêng các tài nguyên được yêu cầu bởi bên thu bằng cách phát một yêu
cầu chất lượng dưới dạng một bản tin RSVP tương thích với nhu cầu của chúng. Thực tế
sử dụng RSVP nhằm đảm bảo chất lượng trong việc truyền tin. Để đảm bảo đường truyền
thông suốt các điểm cuối phải hoạt động ở chế độ kết nối. Máy thu phải thường xuyên
gửi các bản tin RSVP đến các router để đảm bảo thông suốt đường truyền.
RSVP hoạt động trên cơ sở xử lý các gói tin theo một yêu cầu chất lượng dịch vụ
QoS. Hai thành phần chính thực hiện chức năng này là flowspec và filterspec. Flowspec
có chức năng kiểm tra luồng dữ liệu được truyền như một yêu cầu dịch vụ của các ứng
dụng mà kết quả là đưa ra một yêu cầu về chất lượng dịch vụ QoS. Flowspec đưa ra một
yêu cầu chất lượng dịch vụ còn filterspec có nhiệm vụ lọc bỏ các gói tin mà không đảm
bảo yêu cầu về chất lượng dịch vụ, những gói này sẽ được cung cấp một phương thức
truyền tốt nhất có thể đáp ứng yêu cầu chất lượng dịch vụ.
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 20 -
6. Giao thức SGCP (Simple Gateway Control Protocol)
Giao thức này cho phép các thành phần điều khiển cuộc gọi có thể điều khiển kết
nối giữa trung kế, các thiết bị đầu cuối với các gateway. Các thành phần điều khiển được
gọi là Call Agent. SGCP được sử dụng để thiết lập, duy trì và giải phóng các cuộc gọi
qua mạng IP. Call Agent thực hiện các chức năng báo hiệu cuộc gọi và gateway thực hiện
chức năng truyền tín hiệu âm thanh. SGCP cung cấp năm lệnh điều khiển chính như sau:
- Notification Request: yêu cầu gateway phát các tín hiệu nhấc đặt máy và các tín
hiệu quay số DTMF.
- Notify: gateway thông báo với Call Agent về các tín hiệu được phát hiện ở trên.
- Create Connection: Call Agent khởi tạo kết nối giữa các đầu cuối trong gateway.
- Modify Connection: Call Agent dùng lệnh này để thay đổi các thông số về kết
nối đã thiết lập. Lệnh này cũng có thể dùng để điều khiển luồng cho các gói tin
RTP đi từ gateway này sang gateway khác.
- Delete Connection: Call Agent giải phóng các kết nối đã thiết lập.
Năm lệnh trên đây điều khiển gateway và thông báo cho call agent về các sự kiện
xảy ra. Mỗi lệnh hay yêu cầu bao gồm các thông số cụ thể cần thiết để thực thi các phiên
làm việc.
7. Giao thức MGCP (Media Gateway Control Protocol)
Giao thức MGCP cho phép điều khiển các gateway thông qua các thành phần điều
khiển nằm bên ngoài mạng. MGCP sử dụng mô hình kết nối tương tự như SGCP dựa trên
các kết nối cơ bản giữa thiết bị đầu cuối và gateway. Các kết nối có thể là kết nối điểm-
điểm hoặc kết nối đa điểm. Ngoài chức năng điều khiển như SGCP, MGCP còn cung cấp
thêm các chức năng sau:
- Endpoint Configuration: Call Agent dùng lệnh này để yêu cầu gateway xác định
kiểu mã hoá ở phí đường dây kết nối đến thiết bị đầu cuối.
- AuditEndpoint và AuditConnection: Call Agent dùng lệnh này để kiểm tra trạng
thái và sự kết nối ở một thiết bị đầu cuối.
- RestartIn-Progress: Gateway dùng lệnh này để thông báo với Call Agent khi nào
các thiết bị đầu cuối ngừng sử dụng dịch vụ và khi nào quay lại sử dụng dịch vụ.
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 21 -
Phần II
Tổng quan về Asterisk
Asterisk là hệ thống chuyển mạch mềm, là phần mềm nguồn mở được viết bằng
ngôn ngữ C chạy trên hệ điều hành linux thực hiện tất cả các tính năng của tổng đài PBX
và hơn thế nữa. Asterisk ra đời vào năm 1999 bởi một sinh viên sinh năm 1977 tên là
Mark Spencer. Anh ta viết phần mềm này ban đầu với mục đích hỗ trợ cho công ty của
mình trong việc liên lạc đàm thoại.
Asterisk là một phần mềm mang tính cách mạng, tin cậy, mã nguồn mở và miễn
phí mà biến một PC rẻ tiền thông thường chạy Linux thành một hệ thống điện thoại
doanh nghiệp mạnh mẽ. Asterisk là một bộ công cụ mã nguồn mở cho các ứng dụng thoại
và là một server xử lý cuộc gọi đầy đủ chức năng. Asterisk là một nền tảng tích hợp điện
thoại vi tính hoá kiến trúcb mở. Nhiều hệ thống Asterisk đã được cài đặt thành công trên
khắp thế giới. Công nghệ Asterisk đang phục vụ cho nhiều doanh nghiệp. Asterisk đem
đến cho người sử dụng tất cả các tính năng và ứng dụng của hệ thống tổng đài PBX và
cung cấp nhiều tính năng mà tổng đài PBX thông thường không có được,
Hiện nay Asterisk trên đà phát triển nhanh được rất nhiều doanh nghiệp triển khai
ứng dụng cho công ty của mình. Đây là xu thế tất yếu của người sử dụng điện thoại, vì
các công ty đều có mạng máy tính và cần liên lạc với nhau trong công việc giữa các
phòng ban hoặc chi nhánh và cần một chi phí thấp thậm chí không phải tốn chi phí khi
thực hiện các cuộc gọi trên mạng nội bộ của công ty. Không gói gọn thông tin liên lạc
trong công ty mà các ứng dụng giao tiếp với mạng PSTN hoặc mạng VOIP cho phép gọi
ra bất cứ số điện thoại nào có trên mạng PSTN.
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 22 -
I. 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 cho VOIP như SIP, H323, IAX, MGCP... các công nghệ điện
thoại cho hệ thống chuyển mạch mạch TDM như T1, E1, ISDN và các giao tiếp đường
truyền thoại Analog.
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 API cũng được liên kết nạp vào hệ thống. Sau đó hệ thống
PBX Switching 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 tuỳ vào kế hoạch quay số (Dialplan)
được thực hiện cấu hình trong file extension.conf. Application Launchar để 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. 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. Hệ thống
cũng bao gồm 4 chức năng API chính: Codec translator API: các hàm thực thi, giải nén
các chuẩn như G711, G729… Asterisk Channel API : Giao tiếp với các kênh liên lạc khác
nhau . Asterisk file format API : xử lý các loại file có định dạng như Mp3, wav, gsm…
Asterisk Aplication API : Bao gồm tất cả các ứng dụng được thực thi trong hệ thống
Asterisk như voicemail, callerID…
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 23 -
II – Giao thức IAX ( Inter Asterisk eXchange)
IAX là giao thức chuẩn dành riêng cho Asterisk, được phát triển bởi tác giả của
phần mềm Asterisk để khắc phục những hạn chế trong giao thức SIP. Nó cung cấp hoạt
động liên kết trong suốt với tường lửa NAT và PAT. Nó hỗ trợ việc thiết lập, nhận,
chuyển cuộc gọi và đăng ký cuộc gọi. Không giống như giao thức SIP chuyển tải thoại và
báo hiệu trên hai kênh khác nhau (out of band), IAX chuyển tải thoại và báo hiệu trên
cùng một kênh(in band). IAX giải quyết được vấn đề NAT đề cập trên phần giao thức
SIP. Mặc khác IAX là giao thức tối ưu trong việc sử dụng băng thông, cho phép nhiều
gói dữ liệu thoại trên cùng một IP header, cơ chế chuyển tải nhiều cuộc gọi trên cùng một
gói IP được gọi là trung kế(Trunk).
Với IAX, các điện thoại hoàn toàn cơ động. Chỉ cần kết nối điện thoại với
Asterisk server bất cứ đâu trên mạng Internet, chúng sẽ đăng ký với PBX chủ và được
định tuyến cuộc gọi ngay tức thì. IAX có đoạn mào đầu rất nhỏ. Với bốn byte của mào
đầu, so sánh với 12 byte mào đầu của SIP hay H.323, bản tin IAX có thể nói là nhỏ hơn
rất nhiều.
III – Các tính năng cơ bản của tổng đài Asterisk
Ngoài những tính năng tương tự như tổng đài PBX, Asterisk còn có thêm nhiều
tính năng khác mà chỉ có thể có được ở những tổng đài rất đắt tiền.
Đó là các tính năng:
- Voicemail Services with Directory
- Conferencing Server
- Packet Voice Server
- Encryption of Telephone or Fax Calls
- Heterogeneous Voice over IP gateway (H.323, SIP, MGCP, IAX)
- Custom Interactive Voice Response (IVR) system
- Soft switch
- Number Translation
- Calling Card Server
- Predictive Dialer
- Call Queuing with Remote Agents
- Gateway and Aggregation for Legacy PBX systems
- Remote Office or User Telephone Services
- PBX long distance Gateway
- Telemarketing Block
- Standalone Voicemail System
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 24 -
Phần III
Triển khai hệ thống Asterisk
I- Mô hình triển khai hệ thống :
Các phần cứng sử dụng :
- 4 PC :
+ 2PC Asterisk Server ( Linux) : Cài đặt Asterisk
+ 2PC Client ( Windows ) : Cài đặt Softphone ( X-lite)
- 2 Router
- 1 Switch
- 1 Analog phone
- 1 SPA 3102
II- Cài đặt phần mềm
1. Cài đặt Asterisk Server
- Download các gói phần mềm :
Asterisk :
Lipri :
Zaptel :
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 25 -
Asterisk Addons :
- Giải nén chúng vào thư mục /usr/src :
tar -vxzf asterisk-1.4.12.tar.gz
tar -vxzf libpri-1.4.7.tar.gz
tar -vxzf zaptel-1.4.7.tar.gz
tar -vxzf asterisk-addons-1.4.2.tar.gz
- Kiểm tra các thư viện cần thiết cho việc cài đặt :
Các thư viện bao gồm : bison, bison-devel, ncurses, ncurses-devel, zlib,
zlib-devel, openssl, openssl-devel, gnutls-devel, gcc, gcc-c++
Kiểm tra bằng cách dùng lệnh : rpm –q tên_thư_viện
Nếu thư viện chưa được cài đặt , dùng lệnh : yum install tên_thư_viện để cài đặt
- Cài đặt gói Lipri :
cd /usr/src/libpri-1.4.7
make
make install
- Cài đặt gói Zaptel
cd /usr/src/zaptel-1.4.7
make
make install
- Cài đặt gói Asterisk
cd /usr/src/asterisk-1.4.12
./configure
make
make install
- Cài đặt gói Asterisk Addon :
cd /usr/src/asterisk-addons-1.4.2
make
make install
2. Cài đặt Softphone:
Softphone được sử dụng ở đây là phần mềm X-Lite
Tiến hành download X-Lite 3.0 tại www.counterpath.com và cài đặt
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 26 -
III - Cấu hình hệ thống Asterisk
1. Cấu hình Asterisk Server
Asterisk Server 1
Sip.conf
---------------------
[thanh]
Type=friend
Username=thanh
Secret=1234
Host=dynamic
Context = local1
-----------------------
[khanh]
Type=friend
Username=khanh
Secret=1234
Host=dynamic
Context = local1
------------------------
[spa3102]
Type=friend
Secret=1234
Host=dynamic
Context = local1
Extension.conf
------------------------
[local1]
Exten=101, 1, Dial(SIP/thanh)
Exten=thanh, 1, Dial(SIP/thanh)
Exten=102, 1, Dial(SIP/khanh)
Exten=khanh, 1, Dial(SIP/khanh)
Exten=103,1,Dial(SIP/spa3102)
Asterisk Server 2
Sip.conf
---------------------
[phuong]
Type=friend
Username=phuong
Secret=1234
Host=dynamic
Context = local2
-----------------------
[cuc]
Type=friend
Username=cuc
Secret=1234
Host=dynamic
Context = local2
Extension.conf
------------------------
[local2]
Exten=201, 1, Dial(SIP/phuong)
Exten= phuong, 1, Dial(SIP/phuong)
Exten=202, 1, Dial(SIP/cuc)
Exten=cuc, 1, Dial(SIP/cuc)
2. Cấu hình các Softphone : ( Sip Account Setting - Add )
Softphone 1 :
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 27 -
Softphone 2 :
3. Cấu hình SPA3102
Thiết bị SPA3102 dùng để kết nối điện thoại tương tự thông thường vào mạng IP.
SPA3102 có 4 cổng giao tiếp
- Cổng Ethernet nối với một máy tính, máy tính này được sử dụng để cấu hình các thông
số cho SPA3102 hoạt động.
- Cổng Internet nối với mạng LAN chứa Asterisk PBX và các máy tính có cài softphone.
- Cổng Line nối với đường dây điện thoại thông thường.
- Cổng Phone nối với điện thoại tương tự.
4. Cấu hình giao tiếp giữa 2 Asterisk Server :
Server 1 :
iax.conf
----------------------------
[general]
bindport = 4569
bindaddr = 0.0.0.0
[site2]
type=friend
secret=123
auth=plaintext
host=192.168.3.2
context=local2
Extensions.conf :
------------------------------
[local1]
Exten= 201,1,Dial(iax2/site2/201)
Exten= 202,1,Dial(iax2/site2/202)
Server 2
Iax.conf
------------------------------
[general]
bindport = 4569
bindaddr = 0.0.0.0
[site1]
type=friend
secret=123
auth=plaintext
host=192.168.1.2
context=local1
Extensions.conf
------------------------------
[local2]
Exten= 101,1,Dial(iax2/site1/101)
Exten= 102,1,Dial(iax2/site1/102)
Exten= 103,1,Dial(iax2/site1/103)
IV.Một số ứng dụng với Asterisk
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 28 -
1.Ứng dụng hộp thư thoại (Voicemail)
Asterisk cung cấp khả năng xây dựng ứng dụng VoiceMail, với khả năng này
giúp cho người sử dụng điện thoại không bỏ lỡ bất cứ cuộc gọi điện thoại nào. Một số
tính năng của hệ thống voiceMail:
- Khi người gọi không được trả lời, máy không được kết nối mạng hay máy điện
thoại đang bận, hệ thống đều có thông điệp riêng để thông báo tình trạng của máy thuê
bao được gọi và phát thông điệp mời để lại tin nhắn.
- Khi thông điệp được nhận, hệ thống VoiceMail có thể gửiemail để thông báo
- Có thể kiểm tra VoiceMail trực tiếp trên máy điện thoại.
- Những thông điệp Lời chào trong hệ thống hoàn toàn có thể thay đổi phù hợp
với ngữ cảnh sử dụng, không nhất thiết phải sử dụng thông điệp mặc định.
Các bước cấu hình thiết lập một hộp thư thoại :
- Cấu hình trong voicemail.conf : tạo ra người sử dụng và password của hòm thư
Cú pháp : extension của user = mật mã , tên đầy đủ , địa chỉ email
[mailbox]
tienthanh = 123456, Nguyen Tien Thanh, tienthanh852000@gmail.com
- Cấu hình trong extensions.conf : để chuyển các cuộc gọi vào hộp thư thoại
---------------------------------------------------
[voicemail]
exten=123,1,Answer()
exten=123,2,Dial(SIP/tienthanh,5)
exten=123,3,GoToIf($[${DIALSTATUS} = CHANUNAVAIL]?7)
exten=123,4,GoToIf($[${DIALSTATUS} = BUSY]?9)
exten=123,5,VoiceMail(tienthanh@mailbox)
exten=123,6,GoTo(123,10)
exten=123,7,VoiceMail(utienthanh@mailbox)
exten=123,8,GoTo(123,10)
exten=123,9,VoiceMail(btienthanh@mailbox)
exten=123,10,Hangup()
- Cấu hình trong sip.conf
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 29 -
---------------------
[tienthanh]
type = friend
username = tienthanh
secret = 123
host = dynamic
context = voicemail
mailbox=tienthanh@mailbox
----------------------
[phuong]
type = friend
username = phuong
secret = 123
host = dynamic
context = voicemail
Như vậy , nếu một người sử dụng [phuong] quay số 123 để gọi [tienthanh] thì nếu
bận , nội dung cuộc gọi sẽ được ghi vào hộp thư thoại.
2.Ứng dụng nhạc chờ ( MusicOnHold )
Tính năng Music On Hold của Asterisk có nhiều ứng dụng thực tế rất thiết thực
chẳng hạn như : trong khi chờ giữ máy để được gặp người khác chẳng hạn, thuê bao có
thể nghe âm nhạc giải trí để quên đi thời gian chờ đợi, khi chờ trả lời cuộc gọi thuê bao sẽ
nghe âm nhạc thay vì hồi âm chuông như điện thoại truyền thống.
Cấu hình :
- Tạo thư mục mới chẳng hạn là ‘mp3music’ trong thư mục var/lib/asterisk/moh.
- Copy tất cả các file nhạc mp3 vào thư mục đó.
- Cấu hình MusicOnHold.conf
-------------------------------------
[mymusic]
mode=files
directory=/var/lib/asterisk/moh/mp3music
random=yes
- Cấu hình extensions.conf :
-------------------------------------
exten => 123,1,Answer
exten => 123,n,SetMusicOnHold(mymusic)
exten => 123,n,WaitMusicOnHold(15)
exten => 123,n,Hangup
Như vậy, khi thuê bao quay số 123 hệ thống sẽ trả lời sau đó phát ra một bài nhạc
ngẫu nhiên trong thư mục mp3music trong vòng 15 giây sau đó gác máy.
3. Ứng dụng phân phối cuộc gọi tự động ACD ( Automatic Call Distrubution )
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 30 -
Hệ thống hàng đợi phân phối cuộc gọi tự động cho phép trả lời cuộc gọi một cách
hiệu quả hơn và có thể giúp giảm giá thành , tăng chất lượng phục vụ. Hệ thống hàng đợi
phân phối cuộc gọi tự động làm việc như sau :
- Các cuộc gọi được đưa vào hàng đợi
- Agent ( người trực điện thoại ) trả lời cuộc gọi theo theo các queuing strategy
như : Ringall, RoungRobin, Rrmemory...
- Trong khi chờ cuộc gọi, có thể cho người gọi nghe một bản nhạc nào đó.
- Có thể có các thông báo tới người gọi về thời gian người gọi phải đợi ...
Hệ thống hàng đợi này thường được ứng dụng cho các trung tâm cuộc gọi ( call
centers) hay các phòng dịch vụ khách hàng. Sử dụng hệ thống này, có thể :
- Tránh được tình trạng bỏ lỡ mất các cuộc gọi khi các agent đang bận nghe một
cuộc gọi khác . Nếu số lượng cuộc gọi trong hàng đợi tăng thì có thể thêm
agent trả lời cuộc gọi.
- Có thể thống kê được một số thông số như : tỉ lệ cuộc gọi bị bỏ lỡ, thời gian
gọi trung bình ... Việc thống kê này sẽ giúp ước lượng được số lượng agent trả
lời đồng thời giúp tăng chất lượng phục vụ khách hàng .
Kiến trúc hệ thống ACD
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 31 -
Các chiến lược phân phối cuộc gọi :
- ringall : phân phối đến tất cả các agent đang rỗi cho đến khi có ai đó trả lời .
- roundrobin : Phân phối một cách công bằng lần lượt đến các agent
- leastrecent : Phân phối cuộc gọi tới agent mới login vào
- fewest calls : Phân phối tới agent đã nghe ít cuộc gọi nhất
- random : Phân phối một cách ngẫu nhiên.
- rrmemory : như roundrobin nhưng ...
Các bước cấu hình:
- Tạo ra các hàng đợi : Cấu hình ở queue.conf
-------------------------------
[nhansu] ; Tạo hàng đợi nhansu
music = default ; Nhạc trong khi chờ cuộc gọi
timeout = 2
retry = 2
maxlen = 0 ; Không giới hạn dung lượng hàng đợi
member => Agent/100 ; Agent/AgentID
member => Agent/101
------------------------
[ke toan]
music = default
timeout = 15
retry = 5
maxlen = 0
member => Agent/200
member => Agent/201
---------------------
[taichinh]
music = default
timeout = 15
retry = 5
maxlen = 0
member => Agent/300
member => Agent/301
- Tạo ra các Agent : cấu hình trong agents.conf
Cú pháp : agent => AgentID, Mật khẩu , Tên
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 32 -
-----------------------------------------------------------------------
[Agents]
agent => 100, 123456, Nguyen Tien Thanh – Phong Nhan Su
agent => 101, 123456, Phạm Tran Khanh – Phong Nhan Su
agent => 200, 123456, Bui Hong Phuong – Phong Ke Toan
agent => 201, 123456, Le Thi Cuc – Phong Ke Toan
agent => 300, 123456, Tran Van Thang – Phong Tai Chinh
agent => 301, 123456, Pham Cong Dien – Phong Tai Chinh
- Tạo dialplan : extensions.conf
----------------------------------------------------------
[TestACD]
; Các Agent gọi đến số 900 để đăng ký
exten = 900,1,wait(1)
exten = 900,2, AgentLogin()
; User gọi đến 09481xxxxx thì phân phối vào hàng đợi nhansu và trong khi đợi để
được trả lời , user được nghe nhạc
exten = _09481xxxxx, 1, Answer
exten = _09481xxxxx, 2, SetMusicOnHold(default)
exten = _09481xxxxx, 3, queue(nhansu)
; User gọi đến 09482xxxxx thì phân phối vào hàng đợi ketoan
exten = _09482xxxxx, 1, Answer
exten = _09482xxxxx, 2, SetMusicOnHold(default)
exten = _09482xxxxx, 3, queue(ketoan)
; User gọi đến 09483xxxxx thì phân phối vào hàng đợi taichinh
exten = _09483xxxxx, 1, Answer
exten = _09483xxxxx, 2, SetMusicOnHold(default)
exten = _09483xxxxx, 3, queue(taichinh)
- Agent gọi đến số 900 để Login , sẽ có 1 thông báo nhập username : nhấn “AgentID #” (
ví dụ 100#) để nhập và nếu thành công sẽ có tiếp 1 thông báo nhập mật khẩu : nhấn “Mật
khẩu #” (123456#) để nhập. Nếu đăng nhập thành công thì Agent sẽ được nghe nhạc
trong khi chờ cuộc gọi. Và nếu có 1 cuộc gọi đến được phân phối đến Agent thì sẽ có 1
tiếng “bip” rồi cuộc gọi được kết nối tới agent.
- Agent có thể nhấn ‘*’ để kết thúc cuộc gọi (không logout ra khỏi hàng đợi)
- Agent có thể chuyển cuộc gọi qua hàng đợi khác bằng cách ấn số tương ứng của hàng
đợi đó .
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 33 -
4. Ứng dụng thời gian thực với MySQL ( Realtime Architecture )
Thông thường để cấu hình hệ thống Asterisk chúng ta thực hiện trên các tập tin
dạng text như sip.conf, iax.conf. extentions.conf... sau đó để tập tin cấu hình có hiệu lực
ta cần phải phải thực hiện lệnh reload. Một nhu cầu thực tế là khi cấu hình hệ thống
asterisk, chẳng hạn như cho người sử dụng khai báo một thuê bao online mà không cần
phải reload lại hệ thống asterisk thì thực hiện như thế nào?
Kiến trúc thời gian thực(Asterisk RealTime Architecture) ra đời nhằm đáp ứng
nhu cầu thực tế trên. Kiến trúc thời gian thực thay vì lưu tập tin cấu hình trên tập tin dạng
text thì được lưu vào database. Khi có một cuộc gọi tới( incoming call) một extension do
Asterisk quản lý được Asterisk tìm kiếm trong bảng( có chức năng tương tự SIP.conf)
của Database đã được định hướng trong file SIP.conf. Khi một trong 2 bên truyền thông
phát ra lệnh hangup thì Asterisk sẽ phát tín hiệu kết thúc kênh truyền thông giữa 2 thiết bị
đầu cuối và xóa Record đã nạp vào bộ nhớ. Như vậy, Asterisk tra cứu Extension theo
kiểu thời gian thực trái với trước kia là nó load tất cả các extension trong file SIP.conf
vào bộ nhớ
Các bước cài đặt :
- Download và cài đặt MySQL server và các thư viện kèm theo :libdbi-dbd-mysql,mysql-
connector-odbc-3.51.12-2.2, mysql-libs, mysql, mysql-server, mysql-devel
- Sau khi cài đặt xong mysql , khởi động mysql : /etc/rc.d/init.d/mysqld start
- SET lại password cho truy cập tới Mysql cho user root: SET PASSWORD FOR
root@localhost = ‘123’
- Đăng nhập vào mysql : mysql –u root –p 123
- Tạo cở sở dữ liệu mới : creat database asterisk_database; use asterisk_database;
- Tạo ra các bảng để chứa cơ sở dữ liệu : create tables tên_bảng;
Bảng sip_buddies :
Bảng extensions :
Bảng voicemail :
Bảng iax :
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 34 -
- Thêm dữ liệu vào các bảng :
INSERT INTO Sip_buddies (context,host,type,username,secret) VALUES ('test','dynamic',’friend’,'102','102')
INSERT INTO Sip_buddies ( context,host,type,username,secret) VALUES ( 'test','dynamic',’friend’,'103','103')
INSERT INTO extensions (context , exten , priority , app, appdata) VALUES ( ‘mycontext’,’102’,1,‘Dial’,’SIP/102’)
INSERT INTO extensions (context , exten , priority , app) VALUES (‘mycontext’,’102’, 2, ‘Hangup’)
INSERT INTO extensions (context , exten , priority , app, appdata) VALUES (‘mycontext’,’103’, 1, ‘Dial’,’SIP/103’)
INSERT INTO extensions (context , exten , priority , app) VALUES (‘mycontext’,’103’, 2, ‘Hangup’)
Kết quả bảng extensions : select * from extensions :
+----+---------+-------+----------+--------+---------+
| id | context | exten | priority | app | appdata |
+----+---------+-------+----------+--------+---------+
| 1 | default | 102 | 1 | Dial | SIP/102 |
| 2 | default | 102 | 2 | Hangup | |
| 3 | default | 103 | 1 | Dial | SIP/103 |
| 4 | default | 103 | 2 | Hangup | |
+----+---------+-------+----------+--------+---------+
- Cấu hình trong res_mysql.conf.
-------------------------------------------
[general]
dbhost = localhost
dbname = asterisk_database
dbuser = root
dbpass = 123
dbport = 3306
dbsock = /var/lib/mysql/mysql.sock
- Cấu hình trong extconfig.conf.
--------------------------------------------
sipusers => mysql,asterisk_database,sip_buddies
sippeers => mysql, asterisk_database,sip_buddies
extensions => mysql, asterisk_database,extensions
Báo cáo thực tập Hệ thống VoIP và tổng đài Asterisk
- 35 -
- Cấu hình trong sip.conf
[general]
rtcachefriends=yes
Cấu hình extensions.conf.
--------------------------------------------
[test]
switch => Realtime/mycontext@extensions
-Kiểm tra kết nối thành công:
*CLI> realtime mysql status
Connected to asterisk_database@localhost ...
- Thực hiện : sử dụng username 102 và 103 để kết nối tới tổng đài
Các file đính kèm theo tài liệu này:
- baocaothuctap_content_3919.pdf