voip with opensips

38
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

Upload: tran-thanh

Post on 25-May-2015

687 views

Category:

Documents


3 download

DESCRIPTION

Build VOIP system with opensips

TRANSCRIPT

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

Giao th c SIPứ

6

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

Ho t đ ng c a SIPạ ộ ủ• Hoạt động của máy chủ ủy quyền(Proxy Server)

9

Ho t đ ng c a SIPạ ộ ủ• Hoạt động của máy chủ chuyển đổi địa

chỉ(Redirect Server)

10

M t phiên h i tho i SIPộ ộ ạ

11

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

H th ng th c hànhệ ố ự

16

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

Xác th c v i MYSQLự ớNội dung chính1. Trình tự xác thực đăng ký2. Trình tự xác thực mời

25

1. TRÌNH T XÁC TH C ĐĂNG KÝỰ Ự Mô hình xác thực đăng ký

26

2. TRÌNH T XÁC TH C M IỰ Ự Ờ Mô hình xác thực mời

27

Nat Traversal

28

Gi i pháp TURNả• Xử lý gói tin SIP• Xử lý gói tin RTP

29

X lý gói tin SIPử

30

X lý gói tin RTPử

31

ASTERISK

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.

C u hình t ng đài asteriskấ ổ

M t s ng d ng v i Asteriskộ ốứ ụ ớ

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ý.