1.8.4.a SIP - giao thức thiết lập phiên
SIP là một chuẩn IETF mở, được định nghĩa rõ ràng trong RFC 3261. Hầu hết các nhà cung cấp dịch vụ VoIP hiện tại sử dụng SIP và nó trở thành một chuẩn VoIP phổ dụng nhất. Sức mạnh của SIP là trở thành một chuẩn dựa vào IETF. SIP thì nhỏ gọn nếu đem so sánh với giao thức H.323. Điểm yếu chính của SIP là NAT tranversal, một khó khăn cho hầu hết các nhà cung cấp dịch vụ VoIP.
1.8.4.b IAX - Inter Asterisk eXchange
IAX là một giao thức mở được định nghĩa bởi Digium và nó hiện tại là một bản nháp. Bạn có thể download nó từ www.ietf.org/internet-drafts/drafts-guy-iax00.txt. IAX là một giao thức tất cả trong một vì nó truyền tải báo hiệu và đa phương tiện thông qua một cổng UDP 4569. Mark Spencer đã phát triển IAX như một giao thức nhị phân để làm giảm băng thông. Sức mạnh chính của IAX là làm giảm băng thông sử dụng (nó không sử dụng RTP) trong khi cùng thời điểm rất dễ dàng sử dụng cho NAT và firewall tranversal vì nó chỉ sử dụng port UDP 4569. Trong một vài tình huống IAX dạng trung kế có thể làm giảm băng thông thoại sử dụng đi 1/3.
1.8.4.c Giao thức điều khiển cổng phương tiện MGCP
MGCP là một giao thức được sử dụng chung với H.323, SIP và IAX. Nó có ưu điểm lớn là tính mềm dẻo. Nó được cấu hình trong cuộc gọi tác nhân thay vì các gateway. Điều này làm đơn giản tiến trình cấu hình và cho phép quản lý tập trung. Tính thực thi của Asterisk thì không toàn diện và nó dường như không có nhiều người dùng nó.
1.8.4.d H.323
H.323 được sử dụng nhiều trong VoIP. Nó là một trong những giao thức VoIP đầu tiên và cơ bản cho việc thiết lập kết nối cho những hệ thống hạ tầng VoIP cũ dựa trên các gateway. H.323 vẫn chuẩn trong thị trường gateway, mặc dù thị trường đang chuyển dịch chậm qua SIP. Sức mạnh của H.323 bao gồm sự chấp thuận lớn của thị trường và tính tự nhiên. Các điểm yếu của H.323 liên quan đến sự phức tạp trong việc thực hiện và các chi phí kết hợp chuẩn.
1.8.4.e Bảng so sách các giao thức
Giao thức Chuẩn Được sử dụng
IAX2 IETF nháp
Các trung kế Asterisk. Điện thoại IAX2.
Kết nối giữa IAX với nhà cung cấp dịch vụ. SIP IETF chuẩn Điện thoại SIP.
Kết nối giữa SIP với nhà cung cấp dịch vụ.
MGCP IETF/ITU
chuẩn
Điện thoại MGCP.
Hiện tại không được hỗ trợ trong kết nối giữa MGCP với nhà cung cấp dịch vụ.
H.323 ITU chuẩn
Điện thoại H.323. H.323 gateway.
Hiện tại không được hỗ trợ để trở thành một gatekeeper nhưng có thể kết nối đến 1 gatekeeper bên ngoài.
SCCP Thuộc Cisco Điện thoại của Cisco.
Bảng 1: Bảng so sách các giao thức 1.8.5 User, Peer và Friend
Có 3 loại client của SIP và IAX: “User”, “Peer” và “Friend” “User” chỉ tạo được kết nối đến server Asterisk.
“Peer” chỉ nhận được cuộc gọi từ server Asterisk.
“Friend” làm được cả hai. Thông thường một server hay một thiết bị sẽ yêu cầu cả hai khái niệm này cùng một lúc. Một “friend” là một shortcut đến một “user” + “peer”. Một điện thoại sẽ có thể rơi vào loại này, vì nó cần tạo và nhận các cuộc gọi.
1.8.6 Các codec và chuyển đổi codec
Ta sẽ sử dụng một codec để chuyển đổi tín hiệu thoại từ dạng tương tự sang dạng số. Các bộ codec thì khác nhau tuỳ thuộc vào chất lượng thoại, tỷ lệ nén, băng thông và các yêu cầu tính toán. Các dịch vụ, phone và các gateway thường hỗ trợ nhiều loại, codec G.729 là một codec rất thông dụng và yêu cầu bản quyền.
Asterisk hỗ trợ các loại codec sau: • GSM: 13 Kbps • iLBC: 13.3 Kbps • ITU G.711: 64 Kbps • ITU G.723.1: 5.3/6.3 Kbps • ITU G.726: 16/24/32/40 Kbps • ITU G.729: 8 Kbps • Speex - 2.15 to 44.2 Kbps • LPC10 - 2.5 Kbps
Asterisk cho phép chuyển dịch giữa các codec. Nhiều trường hợp không thể chuyển đổi như trường hợp G.723 chỉ được hỗ trợ trong dạng pass-through. Chuyển từ một kiểu codec này sang một kiểu khác làm tiêu tốn nhiều tài nguyên từ CPU. Vì vậy nên tránh việc chuyển đổi này nếu có thể.
1.8.7 Làm sao để chọn một codec phù hợp
Việc chọn lựa loại codec tùy thuộc vào nhiều khía cạnh khác nhau: + Chất lượng thoại.
+ Chi phí nghe.
+ Mức độ tiêu tốn xử lý của CPU. + Băng thông yêu cầu.
+ Khả năng khắc phục mất gói.
+ Tính sẵn sàng cho Asterisk và thiết bị điện thoại.
1.8.8 Phần mào đầu do phần Header của giao thức
Mặc dù các codec sử dụng ít băng thông nhưng chúng ta phải phải bàn luận về mào đầu (overhead) do phần header của giao thức tạo ra giống như Ethernet, IP, UDP và RTP. Quan sát điều này chúng ta có thể nói rằng băng thông phụ thuộc vào phần header sử dụng. Nếu chúng ta là một mạng Ethernet, băng thông yêu cầu là cao hơn khi sử dụng một mạng PPP vì PPP header ngắn hơn trong mạng Ethernet. Chúng ta hãy xem qua một vài ví dụ: Codec g.711 (64 Kbps) • Ethernet (Ethernet+IP+UDP+RTP+G.711) = 95.2 Kbps • PPP (PPP+IP+UDP+RTP+G.711) = 82.4 Kbps • Frame-Relay (FR+IP+UDP+RTP+G.711) = 82.8 Kbps Codec G.729 (8 Kbps) • Ethernet (Ethernet+IP+UDP+RTP+G.729) = 31.2 Kbps • PPP (PPP+IP+UDP+RTP+G.729) = 26.4 Kbps
• Frame-Relay (FR+IP+UDP+RTP+G.729) = 26.8 Kbps
1.8.9 Kỹ thuật lưu lượng
Vấn đề chính trong thiết kế các mạng VoIP là kích thước số đường line và băng thông được yêu cầu cho từng kích thước cụ thể như văn phòng từ xa hay một nhà cung cấp dịch vụ, số cuộc gọi đồng thời trong Asterisk cũng quan trọng (thông số chính quyết định kích thuớc của Asterisk).
1.8.9.a Sự đơn giản hoá
Điều đầu tiên và được sử dụng rộng rãi là tính đơn giản hoá để giảm số cuộc gọi bởi kiểu user. Ví dụ:
Các tổng đài PBX thương mại (một cuộc gọi đồng thời cho mỗi 5 extension) Người sử dụng gia đình (một cuộc gọi đồng thời cho 16 user)
Ví dụ: Công ty có một văn phòng chính với 120 extension và 2 chi nhánh, chi nhánh đầu tiên có 30 extension và chi nhánh thứ 2 với 15 extension. Mục tiêu của chúng tôi là định kích thước số đường trung kế E1 trong văn phòng chính và băng thông được yêu cầu cho mạng Fram-Relay:
1.a Số đường T1
Tổng số extension sử dụng đường T1: 120+30+15=165 lines
Việc sử dụng 1 đường trung kế cho mỗi 5 extension cho thương mại sử dụng tổng số đường line = 33 và xấp xỉ 2xT1 lines
1.b Băng thông yêu cầu
Chúng ta chọn G.729 codec vì băng thông yêu cầu, chất lượng thoại và môi trường tiêu tốn CPU.
Với một đường trung kế cho mỗi 5 extension:
Băng thông yêu cầu cho chi nhánh số 1 (Frame-relay): 26.8*6=160.8 Kbps Băng thông yêu cầu cho chi nhánh số 2 (Frame-relay): 26.8*3= 80.4 Kbps
1.8.9.b Phương pháp Erlang B
1.a Số cuộc gọi đồng thời trong VoIP
Đôi khi, tính đơn giản không phải là phưong pháp tốt nhất. Khi bạn có dữ liệu phía trước, bạn có thể yêu cầu lên nhiều đặc tính khác. Agner Karup Erlang (công ty điện thoại Copenhagen, 1909) đã phát triển một công thức để tính toán số đường line trong một nhóm trung kế giữa hai thành phố. Chúng ta sẽ sử dụng công thức này. Erlang là một đơn vị đo đạc lưu lượng thường được sử dụng trong viễn thông, nó được sử dụng để miêu tả độ lớn của lưu lượng trong một giờ.
Ví dụ: 20 cuộc gọi trong một giờ với 5 phút trung bình cho mỗi cuộc gọi. Bạn tính số erlang như sau:
Lưu lượng tính theo phút trong một giờ là: 20x5=100 phút Giờ lưu lượng trong một giờ: 100/60=1,66 Erlangs
Bạn có thể tính được con số này từ một cuộc gọi đã được ghi nhật ký vào hệ thống và sử dụng nó để thiết kế ra mạng của bạn để tính toán số đường line yêu cầu. Mỗi đường line được biết đến có thể tính cho băng thông yêu cầu.
Erlang B là phương pháp được sử dụng nhiều nhất để tính số đường line trong một nhóm trung kế. Nó giả sử các cuộc gọi đến một cách ngẫu nhiên (dạng phân bố Poisson) và các cuộc gọi bị khoá ngay lập tức được giải toả. Phương pháp này yêu cầu bạn phải biết về lưu lượng giờ cao điểm Busy Hour Traffic (BHT). Bạn có thể có được BHT này từ nhật ký cuộc gọi hay một cách đơn giản là BHT =17% số cuộc gọi phút trong một ngày.
Một biến số quan trọng khác là cấp độ dịch vụ GoS (Grade of Service). GoS định nghĩa số cuộc gọi có thể bị khoá trong nhóm đường line. Bạn có thể điều chỉnh thông số này. Nó thường nằm ở 0.05 (5% các cuộc gọi bị mất) hay 0.01 (1% cuộc gọi bị mất).
Ví dụ: Sử dụng cùng ví dụ trên chúng ta cho một vài dữ liệu trong thành phần lưu lượng. Từ nhật ký cuộc gọi hệ thống chúng ta khám phá ra dữ liệu này.
Dữ liệu từ cuộc gọi ghi nhật ký (phút cuộc gọi và BHT)
Chi nhánh chính đến chi nhánh con 1 = 2000 phút, BHT= 300 phút Chi nhánh chính đến chi nhánh con 2 = 1000 phút, BHT = 170 phút Chi nhánh 1 đến chi nhánh 2 = 0, BHT = 0, GoS=0.01
Chi nhánh chính đến chi nhánh con 1 - BHT = 300phút/60 = 5 Erlangs Chi nhánh chính đến chi nhánh con 2 - BHT = 170phút/60 = 2.83 Erlangs Sử dụng bảng tính Erlang tại www.erlang.com
1.b Băng thông yêu cầu
Chúng ta sử dụng một mạng WAN nơi mà gói mất hiếm khi xảy ra. Chúng ta sẽ chọn G.729 codec vì chất lượng thoại tốt của nó và dữ liệu được nén (8Kbps).
Chọn codec: G.729
Lớp Datalink: Frame-relay
Ước lượng băng thông cho chi nhánh 1: 28.8x11 = 294.8 Kbps Ước lượng băng thông cho chi nhánh 2: 26.8x8 = 214.40 Kbps
1.8.10 Giảm băng thông yêu cầu cho VoIP
Có 3 phương pháp để làm giảm băng thông được yêu cầu cho các cuộc gọi VoIP: + Nén RTP header
+ IAX trunked
+ VoIP tải (payload)
1.8.10.a Nén RTP Header
Trong mạng Frame-relay và PPP, ta có thể sử dụng nén RTP header, nén RTP header được định nghĩa trong RFC 2508. Nó là một chuẩn IETF cho nhiều router. Tuy nhiên chú ý rằng một vài loại router yêu cầu một tập đặc tính khác cho tài nguyên này được sẵn sàng.
Sự ảnh hưởng của việc sử dụng nén RTP header này là không có cơ sở. Nó giảm băng thông được yêu cầu trong ví dụ của chúng ta từ 26.8 Kbps cho mỗi cuộc đàm thoại xuống 11.2 Kbps, giảm được 58.2%.
1.8.10.b IAX2 trunk mode
Nếu đang kết nối 2 server Asterisk, ta có thể sử dụng giao thức IAX2 trong dạng trunk mode. Công nghệ tiên phong này không yêu cầu bất kỳ một router cụ thể nào và nó có thể áp dụng cho bất kỳ loại datalink nào. IAX2 trunk mode sử dụng lại cùng phần header từ các cuộc gọi thứ 2 và các cuộc gọi sau đó. Sử dụng G.729 và một đường PPP link, cuộc gọi đầu tiên tốn 30 Kbps băng thông, nhưng cuộc gọi thứ hai sử dụng cùng phần header như cuộc gọi thứ nhất nên đã giảm mức băng thông cần thiết cho cuộc gọi này xuống 9.6 Kbps.
1.8.10.c Giảm VoIP tải
Thật không may phương pháp này không có trong Asterisk. Nó thường sử dụng lược đồ trong các gateway trên Internet. Việc sử dụng phần tải (payload) lớn làm tăng độ trễ của hệ thống.
CHƯƠNG 2: CÀI ĐẶT TỔNG ĐÀI IP PBX ASTERISK
2.1 Cái đặt từng phần
Để cài đặt thành công một tổng đài IP PBX Asterisk ta tiến hành cài đặt các phần sau:
Cài đặt 1 hệ điều hành Linux. Ở đây ta chọn hệ điều hành CentOS 5.2
Cài đặt các gói trong tổng đài Asterisk.
Cài đặt Asterisk-GUI để hỗ trợ việc thiết lập và quản lý tổng đài bằng WEB một cách nhanh, dễ sử dụng.
2.1.1 Cài đặt hệ điều hành CentOS
Download CentOS DVD tại địa chỉ:
http://mirror.nsc.liu.se/CentOS/5.2/isos/i386/CentOS-5.2-i386-bin-DVD.iso
Các bước cài đặt chính:
Hình 14: Cài đặt CentOS - Khởi động việc cài đặt
Hình 16: Cài đặt CentOS - Chọn ngôn ngữ
Hình 17: Cài đặt CentOS - Chọn kiểu bàn phím
Hình 19: Cài đặt CentOS - Phân vùng ổ cứng cho CentOS
Trong kỹ thuật phân vùng trong Linux hay CentOS thì người ta thường chia ra làm 4 phần chính:
Phân vùng /boot: khoảng 100MB dùng để lưu dữ liệu khởi động hệ thống.
Phân vùng swap: tốt nhất là dung lượng gấp 2 lần RAM, đối với hệ thống >4GB RAM thì ta chọn bằng với dung lượng RAM. Phần vùng swap sẽ là một phân vùng giúp cho hệ điều hành hoạt động nhanh hơn, tương tự như vùng nhớ Virtual Memory trong Windows.
Phân vùng /home: dung lượng khoảng một nửa dung lượng còn lại chứa dữ liệu cho user. Phân vùng / : đây là phân vùng root chiếm phần dung lượng còn lại.
Hình 20: Cài đặt CentOS - Thiết lập địa chỉ IP
Phần thiết lập địa chỉ IP: ta có thể sử dụng Dynamic cấp địa chỉ IP tự động hoặc tự thiết lập địa chỉ IP bằng tay. Phần thiết lập địa chỉ IPv6 có thể bỏ qua vì không sử dụng.
Hình 21: Cài đặt CentOS - Chọn múi giờ
Hình 22: Cài đặt CentOS - Nhập password Console cho hệ thống
Phần thiết lập cách cài đặt: để đơn giản ta chỉ cần cài theo kiểu server. Không cần cài những kiểu có giao diện như Gnome hay KDE vì sau này ta sẽ cấu hình trực tiếp qua Console hoặc bằng phần mềm Putty.
Chọn Customize now để cài đặt thêm các gói hỗ trợ cho Asterisk.
Hình 24: Cài đặt CentOS - Chọn các gói hỗ trợ cho Asterisk
Phần chọn các gói hỗ trợ cho Asterisk: ta cần chọn Development Tools, chi tiết các gói trong này ta có thể bấm nút Optional packages để tìm hiểu chi tiết hơn. Các gói này sẽ hỗ trợ các chương trình và thư viện đủ để ta cài đặt và vận hành thành công Asterisk sau này.
Hình 26: Cài đặt CentOS - Chuẩn bị cài đặt
Hình 27: Cài đặt CentOS - Quá trình cài đặt
Quá trình cài đặt CentOS diễn ra khoảng 20 phút sau đó ta khởi động lại hệ thống và tiến trình cài đặt CentOS thành công, tiếp theo là cài đặt các gói thực hiện chức năng tổng đài IP PBX Asterisk.
2.1.2 Cài đặt các gói trong tổng đài Asterisk2.1.2.a Chuẩn bị các tập tin trước khi cài đặt 2.1.2.a Chuẩn bị các tập tin trước khi cài đặt
+ Tạo thư mục lưu trữ các tập tin cài đặt Asterisk
# cd /usr/src # mkdir asterisk # cd asterisk
+ Dùng lệnh wget để tải các gói cài đặt Asterisk. Các gói này được lấy từ trang web chính của Asterisk http://www.asterisk.org/downloads bằng các click chuột phải vào dòng download của các gói cài đặt và chọn Copy Link Location.
Asterisk-1.4.21.2 Zaptel-1.4.21.1 Libpri-1.4.7 Addons-1.4.7 + Ta sử dụng các lệnh sau: # wget http://downloads.digium.com/pub/asterisk/releases/asterisk-1.4.21.2.tar.gz # wget http://downloads.digium.com/pub/zaptel/releases/zaptel-1.4.12.1.tar.gz # wget http://downloads.digium.com/pub/libpri/releases/libpri-1.4.7.tar.gz # wget http://downloads.digium.com/pub/asterisk/releases/asterisk-addons-1.4.7.tar.gz
Hình 28: Tải các gói cài đặt Asterisk
+ Vì các gói tin download về dưới dạng tập tin nén nên ta phải giải nén trước khi compile vào trong hệ thống. Ta sử dụng các câu lệnh sau để giải nén các gói cài đặt:
# tar -xzvf asterisk-1.4.21.2.tar.gz # tar -xzvf zaptel-1.4.12.1.tar.gz # tar -xzvf libpri-1.4.7.tar.gz
# tar -xzvf asterisk-addons-1.4.7.tar.gz
Khi giải nén xong trong thư mục /usr/src/asterisk ta có 4 thư mục con:
asterisk-1.4.21.2
zaptel-1.4.12.1
libpri-1.4.7
asterisk-addons-1.4.7
2.1.2.b Compiling và cài đặt các gói
+ Cài đặt Zaptel
Gói Zaptel nên cài đặt trước tiên. Ta dùng lần lượt các lệnh sau để cài đặt:
# cd zaptel-1.4.12.1 # ./configure
# make # make install + Cài đặt libpri # cd ../ libpri-1.4.7 # make # make install + Cài đặt Asterisk # cd ../asterisk-1.4.21.2 # ./configure
Hình 29: Khi chạy configure cho compile