1. Các vấn đề hiện đại
mạng máy tính và truyền
thông
Đề tài : Xây dựng hệ thống VOIP với opensips
Giảng viên : Dương Lê Minh
1
2. Danh sách nhóm
1. Trần Văn Thanh(cài đặt, cấu hình opensips, script &
routing basic)
2. Hoàng Đình Quyền(cài đặt opensips,SIP NAT traversal)
3. Phạm Hồng Sơn(tìm hiểu giao thức SIP)
4. Đặng Thị Huyền( xác thực với MYSQL)
5. Trần Thị Tươi (tìm hiểu Askterisk )
6. Vũ Viết Tùng (tìm hiểu opensips)
2
3. Nội dung
•
•
•
•
•
•
Giới thiệu về VoIP và SIP
Giới thiệu về opensips (các thành phần chính)
Config and routing script
Xác thực sử dụng MYSQL
NAT traversal
Asterisk
3
4. VoIP ?
• VoIP (Voice over Internet Protocol) là công nghệ truyền
giọng nói thông qua mạng sử dụng giao thức TCP/IP. Các
gói dữ liệu IP được trao đổi là mã hóa của tín hiệu đàm
thoại
4
5. Các giao thức được dùng trong VoIP
Các giao thức báo hiệu của VoIP cho phép thiết lập giao
tiếp cho các ứng dụng đa phương tiện như audio, video,..
Một số giao thức:
• SIP
• Mgcp
• H323
Trong đó SIP phổ biến hơn cả
5
7. Khái niệm
• SIP ( Session Initiation Protocol) là giao thức điều khiển
báo hiệu thuộc lớp ứng dụng trong mô hình OSI
• hỗ trợ các hoạt động chính sau:
• Định vị trí của người dùng
• Định media cho phiên làm việc
• Định sự sẵn sàng của người dùng để tham gia vào
một phiên làm việc
• Thiết lập cuộc gọi , chuyển cuộc gọi và kết thúc
7
8. Kiến trúc của SIP
• Gồm 5 thành phần chính:
•
•
•
•
•
User Agent(UA)
Proxy Server
Redirect Server
Location Server
Registrar Server
8
9. Hoạt động của SIP
• Hoạt động của máy chủ ủy quyền(Proxy Server)
9
10. Hoạt động của SIP
• Hoạt động của máy chủ chuyển đổi địa chỉ(Redirect
Server)
10
12. OpenSIPS ?
• Là một phiên bản mã nguồn mở hoàn chỉnh của một SIP
proxy server, thành phần cốt lõi của các giải pháp VoIP.
• OpenSIPS tích hợp voice, video ,IM (Instant Message) và
các dịch vụ trình chiếu
• Thiết lập module dễ dàng nâng cấp, mang lại hiệu quả
cao
• OpenSIPS kế thừa bởi dự án OpenSER
12
13. Opensips- Sip proxy Server
• Nhận, kiểm tra, phân loại yêu cầu SIP xem chúng có
đúng hay không rồi chuyển đến một đích thích hợp.
• Trước khi chuyển lại yêu cầu, Opensips có thể thay đổi,
thêm hoặc bỏ header và/hoặc thay đổi địa chỉ đích ban
đầu.
• Các yêu cầu không mong muốn sẽ được gửi lại cùng
với trả lời từ chối.
• Các yêu cầu được phép sẽ được chuyển tiếp đến một
đích hoặc qua một Proxy Server khác.
• Opensips có thể gửi và nhận nhiều yêu cầu đến nhiều
đích tại cùng một thời điểm.
13
14. Opensips- Sip proxy Server(cont.)
• Xử lý các câu trả lời gửi về server trước khi gửi lại cho
nguồn(có thể giữ nguyên hoặc sửa trả lời cho phù hợp)
• Chạy như một dịnh vụ nền để nghe các yêu cầu qua các
cổng.
• Có các kịch bản định tuyến được mô tả trong file config.
Trong file config có thể thay đổi theo người quản lí.
• Một số tính năng nổi trội của Opensips:
•
•
•
•
Xử lí đăng kí: Register Server.
An toàn thông tin: hỗ trợ TLS
Lưu trữ thông tin vào cơ sở dự liệu.
NAT traversal.
14
15. Hiệu suất cơ bản
• Chạy trên hệ thống nhúng, hiệu suất hàng trăm thiết lập
cuộc gọi/giây
• Với một hệ thống yếu vẫn có thể phục vụ số lượng thuê
bao trực tuyến lớn.
• Hệ thống dễ dàng mở rộng bằng việc thêm máy chủ.
• Opensips hộ trợ cả Ipv4 và Ipv6, phục vụ được multiple
Domain.
15
17. Cấu hình opensips
• Opensips được cấu hình mặc định trong file
opensips.cfg ,thực hiện điều khiển ,các modul, tham số,
routing script.
17
18. Thành phần file config opensips
• Tham số toàn cục (global parametter)
• Các modul& cấu hình modul
• Khối định tuyến
•
•
•
•
•
Khối định tuyến phản hồi
Khối định tuyến thất bại
Khối định tuyến nhánh
Khối định tuyến lỗi
...
• Script
18
19. Tham số toàn cục
• Protocol control
• disable_tcp=no
• disable_tls=no
• Listen interfaces
• listen=udp:192.168.2.2:5060
• listen=tcp:192.168.2.3:5066
• listen=tls:192.168.2.3:5061
• Logging
•
•
•
•
•
debug=3 #logging level
memlog=3 #log level for memory related debugging
log_stderror=no #use syslog and not standard error
log_facility=LOG_LOCAL0
log_name=”my-proxy” #default is argv[0]
19
20. Tham số toàn cục
• Number of processes
• fork = yes # fork ảnh hưởng công việc của hệ thống SIP
• children = 4 # sô tiến trình / giao diện UDP
• tcp_children = 6 # tổng số tiến trình SIP TCP hoạt động
20
21. Modules
• Loading a module
• loadmodule “/usr/lib/opensips/modules/tm.so”
hoặc
• mpath=”/usr/lib/opensips/modules/”
• loadmodule “tm.so”
• Setting module parameter
• modparam(“tm”, ”fr_inv_timer”, 20)
module name
parameter name
parameter value
• modparam(“tm”, ”fr_inv_timer_avp”, ”$avp(tm_timeout)”)
• Multi-module parameters
• modparam(“usrloc|auth_db”, ”db_url”,
“mysql:openser@localhost/openser”)
21
22. Định tuyến
• Định tuyến chứa các hành động định tuyến logic
• Có thể có nhiều định tuyến
• Có nhiều loại định tuyến:
•
•
•
•
•
request route : route[n] {...}
reply route: onreply_route[m] {...}
failure route: failure_route[x] {...}
branch route: branch_route[y] {...}
error_route: error_route {...}
• Trong định tuyến có thể sử dụng:
• Các hàm trích xuất từ module
• Từ khóa và các giá trị xác định từ lõi
• Biến giả trích xuất từ lõi hoặc các module
22
24. Script
• Các giá trị đã được định nghĩa trước
Vd: + TCP / TLS / UDP thiết lập dựa trên giao thức được sử
dụng
+ INET/ INET6 thiết lập theo giao thức IPv4 hoặc IPv6
• Từ khóa
•
•
•
•
•
af / proto
dst_ip / dst_port
src_ip / src_port
method / status / retcode
uri / from_uri / to_uri
• Ví dụ :
if (proto==UDP && af==INET) { log(“message received
use UDP and IPv4 ”)}
• if (method==”INVITE” && uri=~”sip:[0-9]+@”) {...}
•
24
25. Xác thực với MYSQL
Nội dung chính
1. Trình tự xác thực đăng ký
2. Trình tự xác thực mời
25
33. TỔNG QUAN
• Asterisk là phần mềm mã nguồn mở được viết bằng
ngôn ngữ C chạy trên HĐH 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 năm 1999 bởi Mark Spencer nhằm mục
đích hỗ trợ công ty của anh ta trong việc liên lạc đàm
thoại hỗ trợ cộng đồng người sử dụng và phát triển
Linux.
• 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
(như voice777) cho phép gọi ra bất cứ số điện thoại nào
có trên mạng PSTN.
37. Kiến trúc
Back to back User Agent
(B2BUA)
Session Initiation Protocol (SIP)
Proxy
Kết nối
với PSTN
Có nhiều thẻ giao diện để
kết nối với mạng PSTN. Dễ
dàng cài đặt thẻ điện thoại
và cấu hình trong các máy
chủ Asterisk
OpenSIP luôn cần một cổng SIP
để kết nối với mạng PSTN.
Không có khả năng cài đặt thẻ
điện thoại trong máy chủ
NAT
Traversal
Có thể giao dịch với NAT
traversal để cho phép bạn
gửi các bằng giọng nói
(hoặc dòng video) từ Điện
thoại IP hoặc các phần
mềm VoIP khách hàng của
bạn trực tiếp đến một nhà
cung cấp dịch vụ điện thoại
VoIP
OpenSIPS đề tốt hơn rất nhiều
với NAT traversal. Cho phép bạn
thao tác trực tiếp giao tiếp SIP
để xử lý trường hợp đặc biệt
như khi có 2 máy điện thoại
VoIP phía sau router NAT cùng
và muốn gửi phương tiện
truyền thông trực tiếp giữa
chúng.
38. Load
Balancing
Có thể được cấu hình để
cân bằng tải bởi "tên
người dùng", "Ruri",
"callid” và một số khác.
Một thế mạnh độc đáo của
OpenSIPS là khả năng cân bằng
tải các cuộc gọi VoIP với việc sử
dụng các hàm băm chuyên
dụng.
Truy cập
mức độ
thấp vào
Header và
giao dịch
IAX. Điều này làm cho nó
có thể chuyển tín hiệu
Header và Truyền thông
trong cùng một gói dữ
liệu và cùng một cổng!
Với OpenSIPS bạn có thể xử lý
dịch giữa hai phiên bản không
tương thích của SIP, xử lý trực
tiếp các tiêu đề SIP, yêu cầu, và
câu trả lời.
Kết Luận
Đơn giản để cấu hình và
có thể xử lý thấp với khối
lượng trung bình.
Khi có một số nhu cầu đặc biệt,
chẳng hạn như cân bằng tải
hoặc khi bạn có khối lượng lớn
người sử dụng đã đăng ký.
Editor's Notes
Kiến trúc Sip proxy nhanh hơn một B2BUA vì nó xử lý với tín hiệu. B2BUA kiến trúc phức tạp hơn nhưng nó có khả năng xử lý các phương tiện truyền thông(tiếng nói) và các dịch vụ liên quan như thư thoại, nhận dạng giọng nói…Đôi khi Asterisk sẽ được sử dụng như một cổng SIP để kết nối với mạng PSTN\Nat: Network Address Translation (NAT)là một chức năng của một bộ định tuyến mạng để lập bản đồ địa chỉ IP riêng đến các địa chỉ IP công cộng (internet) Chức năng này khá giống nhau nhưng OpenSIPS tốt hơn rất nhiều
Load Balancing OpenSIPS là "chuyển đổi dự phòng" và có thể làm cho một giải pháp bổ sung của Asterisk .Nó có thể sử dụng tin nhắn chuyển hướng tiêu thụ rất ít tài nguyên từ máy cân bằng tải. Truy cập mức độ thấp vào SIP Header và giao dịch Đây là một tính năng quan trọng khi bạn có việc thực hiện SIP từ các nhà sản xuất khác nhau, có thể không tương thích với nhau.