voip with opensips
DESCRIPTION
Build VOIP system with opensipsTRANSCRIPT
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 opensipsGiảng viên : Dương Lê Minh
1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
• modparam(“tm”, ”fr_inv_timer_avp”, ”$avp(tm_timeout)”)
• Multi-module parameters• modparam(“usrloc|auth_db”, ”db_url”,
“mysql:openser@localhost/openser”)
parameter name
parameter valuemodule name
21
Đ 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
Đ nh tuy nị ế• Ví dụ route { lookup("location"); t_on_failure("1"); if(!t_relay()) { sl_send_reply("500", "relaying failed"); } } failure_route[1] { if(is_method("INVITE")) { # call failed - relay to voice mail t_relay_to_udp("voicemail.server.com","5060"); } }
23
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
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.
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.
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ý.