Giao thức SIP trong VoIP Trước đây khi đề cập đến VoIP, 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 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, tập giao thức H.323 bao gồm rất nhiều giao thức con bên trong nó như H.245, H.225, Q.931...hoạt động dựa trên H.323 là rất chặt chẽ và phức tạp. Nhưng những năm trở lại đây thì giao thức SIP lại chiếm ưu thế và dần dần thay thế hẳn H.323, vì VoIP là một trong những dịch vụ sẽ rất phát triển trong tương lai. I-Tổng quan về SIP 1) SIP là gì: 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. SIP được sử dụng kết hợp với các chuẩn giao thức IETF khác như là SAP, SDP và MGCP (MEGACO) để cung cấp một lĩnh vực rộng hơn cho các dịch vụ VoIP. Nó bao gồm các yêu cầu được gởi đến từ người sử dụng SIP client đến SIP server. Server xử lý các yêu cầu và đáp ứng đến client. Một thông điệp yêu cầu, cùng với các thông điệp đáp ứng tạo nên sự thực thi SIP. 2) Các thành phần trong mạng SIP: SIP gồm 2 thành phần lớn là SIP client (là thiết bị hỗ trợ giao thức SIP như SIP phone), và SIP server (là thiết bị trong mạng xử lý các bản tin SIP). Trong SIP server có các thành phần quan trọng như: Proxy server, Redirect server, Location server, Registrar server...
+ Proxy Server: là thực thể trong mạng SIP làm nhiệm vụ chuyển tiếp các SIP request tới thực thể khác trong mạng. Như vậy, chức năng chính của nó trong mạng là định tuyến cho các bản tin đến đích. Proxy server cũng cung cấp các chức năng xác thực trước khi cho khai thác dịch vụ. Một proxy có thể lưu
(stateful) hoặc không lưu trạng thái (stateless) của bản tin trước đó. Thông thường, proxy có lưu trạng thái, chúng duy trì trạng thái trong suốt transaction (khoảng 32 giây). + Redirect Server: trả về bản tin lớp 300 để thông báo thiết bị là chuyển hướng bản tin tới địa chỉ khác – tự liên lạc thông qua địa chỉ trả về. + Registrar server: là server nhận bản tin SIP REGISTER yêu cầu và cập nhật thông tin từ bản tin request vào “location database” nằm trong Location Server + Location Server: lưu thông tin trạng thái hiện tại của người dùng trong mạng SIP
II-Các bản tin SIP, mào đầu và đánh số Dưới đây là các bản tin của SIP : INVITE : bắt đầu thiết lập cuộc gọi bằng cách gửi bản tin mời đầu cuối khác tham gia ACK : bản tin này khẳng định máy trạm đã nhận được bản tin trả lời bản tin INVITE BYE : bắt đầu kết thúc cuộc gọi CANCEL : hủy yêu cầu nằm trong hàng đợi REGISTER : đầu cuối SIP sử dụng bản tin này để đăng ký với máy chủ đăng ký OPTION : sử dụng để xác định năng lực của máy chủ INFO : sử dụng để tải các thông tin như âm báo DTMF Giao thức SIP có nhiều điểm trùng hợp với giao thức HTTP. Các bản tin trả lời các bản tin SIP nêu trên gồm có : 1xx – các bản tin chung 2xx – thành công 3xx - chuyển địa chỉ 4xx – yêu cầu không được đáp ứng
5xx - sự cố của máy chủ 6xx - sự cố toàn mạng Các bản tin SIP có khuôn dạng text, tương tự như HTTP. Mào đầu của bản tin SIP cũng tương tự như HTTP và SIP cũng hỗ trợ MIME (một số chuẩn về email) III-Thiết lập và hủy cuộc gọi SIP Trước tiên ta tìm hiểu hoạt động của máy chủ ủy quyền và máy chủ chuyển đổi + Hoạt động của máy chủ ủy quyền (Proxy Server)
Hoạt động của Proxy server được trình bày như trong hình ….Client SIP
[email protected] gửi bản tin INVITE cho
[email protected] để mời tham gia cuộc gọi. Các bước như sau: + Bước 1:
[email protected] gửi bản tin INVITE cho UserB ở miền hotmail.com, bản tin này đến proxy server SIP của miền hotmail.com (Bản tin INVITE có thể đi từ Proxy server SIP của miền yahoo.com và được Proxy này chuyển đến Proxy server của miền hotmail.com). + Bước 2: Proxy server của miền hotmail.com sẽ tham khảo server định vị (Location server) để quyết định vị trí hiện tại của UserB.// Từ proxy server của mien hotmail.com nó sẽ đến location server de dinh vi vị tri hien tại của userB + Bước 3: Server định vị trả lại vị trí hiện tại của UserB (giả sử là
[email protected]). + Bước 4: Proxy server gửi bản tin INVITE tới
[email protected]. Proxy server thêm địa chỉ của nó trong một trường của bản tin INVITE. + Bước 5: UAS của UserB đáp ứng cho server Proxy với bản tin 200 OK. + Bước 6: Proxy server gửi đáp ứng 200 OK trở về
[email protected]. + Bước 7:
[email protected] gửi bản tin ACK cho UserB thông qua proxy server. + Bước 8: Proxy server chuyển bản tin ACK cho
[email protected]
+ Bước 9: Sau khi cả hai bên đồng ý tham dự cuộc gọi, một kênh RTP/RTCP được mở giữa hai điểm cuối để truyền tín hiệu thoại. + Bước 10: Sau khi quá trình truyền dẫn hoàn tất, phiên làm việc bị xóa bằng cách sử dụng bản tin BYE và ACK giữa hai điểm cuối. + Hoạt động của máy chủ chuyển đổi địa chỉ (Redirect Server):
Hoạt động của Redirect Server được trình bày như hình . Các bước như sau: + Bước 1: Redirect server nhân được yêu cầu INVITE từ người gọi (Yêu cầu này có thể đi từ một proxy server khác). + Bước 2: Redirect server truy vấn server định vị địa chỉ của B. + Bước 3: Server định vị trả lại địa chỉ của B cho Redirect server. + Bước 4: Redirect server trả lại địa chỉ của B đến người gọi A. Nó không phát yêu cầu INVITE như proxy server. + Bước 5: User Agent bên A gửi lại bản tin ACK đến Redirect server để xác nhận sự trao đổi thành công. + Bước 6: Người gọi A gửi yêu cầu INVITE trực tiếp đến địa chỉ được trả lại bởi Redirect server (đến B). Người bị gọi B đáp ứng với chỉ thị thành công (200 OK), và người gọi đáp trả bản tin ACK xác nhận. Cuộc gọi được thiết lập. Ngoài ra SIP còn có các mô hình hoạt động liên mạng với SS7 (đến PSTN) hoặc là liên mạng với chồng giao thức H.323. IV-Tính năng của SIP Giao thức SIP được thiết kế với những chỉ tiêu sau: a) Tích hợp với các giao thức đã có của IETF Các giao thức khác của IETF có thể xây dựng để xây dựng những ứng dụng SIP. SIP có thể hoạt động cùng với nhìu giao thức như : - RSVP (Resource Reservation Protocol) : Giao thức giành trước tài nguyên mạng. - RTP (Real-time transport Protocol) : Giao thức truyền tải thời gian thực - RTSP (Real Time Streaming Protocol) : Giao thức tạo luồng thời gian thực
- SAP (Session Advertisement Protocol) : Giao thức thông báo trong phiên kết nối - SDP (Session Description Protocol) : Giao thức mô tả phiên kết nối đa phương tiện - MIME (Multipurpose Internet Mail Extension - Mở rộng thư tín Internet đa mục đích) : Giao thức thư điện tử - HTTP (Hypertext Transfer Protocol) : Giao thức truyền siêu văn bản - COPS (Common Open Policy Service) : Dịch vụ chính sách mở chung - OSP (Open Settlement Protocol) : Giao thức thỏa thuận mở b) Đơn giản và có khả năng mở rộng SIP có rất ít bản tin, không có các chức năng thừa nhưng SIP có thể sử dụng để thiết lập những phiên kết nối phức tạp như hội nghị… Đơn giản, gọn nhẹ, dựa trên khuôn dạng văn bản, SIP là giao thức ra đời sau và đã khắc phục được điểm yếu của nhiều giao thức trước đây. Các phần mềm của máy chủ ủy quyền, máy chủ đăng kí, máy chủ chuyển đổi địa chỉ, máy chủ định vị… có thể chạy trên các máy chủ khác nhau và việc cài đặt thêm máy chủ hoàn toàn không ảnh hưởng đến các máy chủ đã có. Chính vì thế hệ thống chuyển mạch SIP có thể dễ dàng nâng cấp. c) Hỗ trợ tối đa sự di động của đầu cuối Do có máy chủ ủy quyền, máy chủ đăng ký và máy chủ chuyển đổi địa chỉ hệ thống luôn nắm được địa điểm chính xác của thuê bao. Thí dụ thuê bao với địa chỉ
[email protected] có thể nhận được cuộc gọi thoại hay thông điệp ở bất cứ địa điểm nào qua bất cứ đầu cuối nào như máy tính để bàn, máy xách tay, điện thoại SIP… Với SIP rất nhiều dịch vụ di động mới được hỗ trợ. d) Dễ dàng tạo tính năng mới cho dịch vụ và dịch vụ mới. Là giao thức khởi tạo phiên trong mạng chuyển mạch gói SIP cho phép tạo ra những tính năng mới hay dịch vụ mới một cách nhanh chóng. Ngôn ngữ xử lý cuộc gọi (Call Processing Language) và Giao diện cổng kết nối chung (Common Gateway Interface) là một số công cụ để thực hiện điều này. SIP hỗ trợ các dịch vụ thoại như chờ cuộc gọi, chuyển tiếp cuộc gọi, khóa cuộc gọi… (call waiting, call forwarding, call blocking…), hỗ trợ thông điệp thống nhất… SIP là một công cụ hỗ trợ hấp dẫn đối với điện thoại IP vì các lý do sau: e) Nó có thể hoạt động vô trạng thái hoặc có trạng thái. Vì vậy, sự hoạt động vô trang thái cung cấp sự mở rộng tốt do các server không phải duy trì thông tin về trạng thái cuộc gọi một khi sự thực hiện (transaction) đã được xử lý. f) Nó có thể sử dụng nhiều dạng hoặc cú pháp giao thức chuyển siêu văn bản HTTP (Hypertext Transfer Protocol), vì vậy, nó cung cấp một các thuận lợi để hoạt động trên các trình duyệt. g) Bản tin SIP (nội dung bản tin) thì không rõ rang, nó có thể là bất cứ cú pháp nào. Vì vậy, nó có thể được mô tả theo nhiều cách. Chẳng hạn, nó có thể được mô tả với sự mở rộng thư Internet đa mục đích MINE (Multipurpose Internet Mail Extension) hoặc ngôn ngữ đánh dấu mở rộng XML (Extensible Markup Language). h) Nó nhận dạng một người dùng với bộ định vị tài nguyên đồng nhất URL (Uniform Resource Locator), vì vậy, nó cung cấp cho người dùng khả năng khởi tạo cuộc gọi bằng cách nhấp vào một liên kết trên
trang web. Nói chung, SIP 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.
Một ví dụ về cuộc gọi điện giữa hai điện thoại SIP Giao thức SIP đơn giản được mô tả như sau : 1- Đầu tiên : Máy gọi gửi một bản tin INVITE đến máy được gọi 2- Sau đó: Máy được gọi trả lời bản tin 100Trying để thử 3-Khi chuông của máy được gọi kêu, đồng thời máy được gọi gửi bản tin 180 Ringging về cho máy gọi, và ở máy gọi sẽ nghe thấy tiếng chuông kêu (dạng chuông được định dạng riêng, không hẳn giống tiếng chuông của máy được gọi kêu mà ta nghe thấy được) 4-Khi máy đựoc gọi có người nhấc máy thì máy được gọi sẽ trả lời bản tin 200 OK về cho máy gọi 5-Máy gọi đáp trả bằng bản tin ACK , đồng thời cuộc gọi được thiết lâp. Trong quá trình trao đổi thông tin giữa hai máy thực chất là trao đổi các bản tin RTP theo giao thức RTP. 6-Khi muốn kết thúc cuộc gọi . Bên được gọi dập máy, đồng thời bản tin BYE được gửi đến máy gọi, máy gọi đáp trả bằng bản tin 200 OK và cuộc gọi chính thức được kết thúc.
Liệt kê các phản hồi SIP được nhận biết: 1xx: Phản hồi thông tin : 2xx: Phản hồi thành công 3xx: Phản hồi chuyền hướng 4xx: Yêu câu thất bại 5xx: Lỗi máy chủ 6xx: Thất bại toàn cục cụ thể : 1xx: Phản hồi thông tin : 100: đang thử : máy đựợc gọi đã tiếp nhận được yêu cầu bên gọi và gửi bản tin này mang tính chất phản hồi để thử 180: đổ chuông : Máy được gọi đổ chuông, và gửi bản tin chuông về cho bên gọi. 181: cuộc gọi đang chuyển hướng: May được gọi lập trình chuyển hướng đến một máy khác trong khi nó đang bận hoặc không xử lý cuộc gọi của bên gọi. 182 : đang xếp hàng đợi : chờ đợi vì có nhiều yêu cầu đến cùng lúc 183: Phiên đang tiến hành: Có phiên cuộc gọi khác đang đựơc tiến hành với máy đựợc gọi 2xx: Phản hồi thành công 200 OK phản hồi thành công : được dùng khi bên được yêu cầu trả lời thành công yêu cầu của bên yêu
cầu: ỏ ví dụ trên ta dùng hai bản tin 200 ok. Trong đó bản tin đầu tiên do máy được gọi phản hồi lại máy gọi khi nó trả lời thành công bản tin chuông. Còn trong bản tin 200 OK thứ hai do máy gọi phản hồi đến máy được gọi khi nó đã gọi thành công cuộc gọi và chấp nhận kết thúc cuộc gọi. 3xx: Phản hồi chuyền hướng 300: có nhiều lựa chọn 301: đã dời đi vĩnh viễn 302: tạm thời dời đi 305: dùng proxy 380: dịch vụ thay thế 4xx: Yêu câu thất bại 400: yêu cầu sai 401: không được quyền: chỉ dùng với cơ quan đăng kiểm , các proxy phải dùng yêu cầu cấp phép cho proxy 407 402: yêu cầu trả tiền dự trữ để phòng trong tương lai: Ví dụ khi bạn dùng điện thoại di động, tiền trong tài khoản của bạn gần hết, trước khi thiết lập cuộc gọi theo yêu cầu của bạn thì tổng đài sẽ thêm một thông báo:"Tài khoản của bạn sắp hệt , xin vui lòng nạp thêm để có thê tiếp tục sử dụng"... 403: cấm 404: Không tìm thấy người dùng:"Thuê bao quý khách vừa gọi Không có, xin vui lòng thứ lại" 405: Phương thức không được phép 406: Không được chấp nhận 407: cần có sự cấp phép cho proxy 408: yêu cầu bị hết giờ : Không tìm thấy người dùng trong thời gian cho phép 410: đã không còn , người dùng đã từng tồn tại nhưng bây giờ không còn được sử dụng nữa:"Thuê bao quý khách vừa gọi hiện đang tạm khóa, mong quý khách vui lòng gọi lại sau" 413: Đơn vị yêu cầu quá lớn: "cuộc gọi không thể thực hiện được" 414: URI của yêu cầu quá tải :"mạng quá tải" 415: kiểu phương tiện không được hỗ trợ: ví dụ : tin nhắn đa phương tiện không thể gửi đến và nhận từ một số máy di động không hỗ trơn GPRS 416: giản đồ URI không được hỗ trợ 420: phần mở rộng không đúng: Sử dụng phần mở rộng của giao thức SIP không đúng nên máy chủ không hiểu được 421: Yêu cầu có phần mở rộng 423: Quãng quá ngắn 480: tạm thời không hoạt động 481: cuộc gọi/giao dịch không tồn tại 482: phát hiện thấy lặp 483: quá nhiều chặng trung tuyến 484:địa chỉ không hoàn chỉnh 485: tối nghĩa 486: đang bận 487: yêu cầu bị chấm dứt 488: Không được chấp nhận tại đây
491: yêu cầu đang chờ 493: không thể giải mã được : Không thể giải mã phần thân của S/MIME 5xx: Lỗi máy chủ 500: lỗi bên trong máy chủ 501: chưa khai báo: Phương thức yêu cầu SIP này chưa đựơc khai báo ở đây 502: gateway sai 503: dịch vụ không có 505: phiên bản không được hỗ trợ: Máy chủ không hỗ trợ giao thức SIP này 513: thông điệp quá lớn 6xx: Thất bại toàn cục 600: tất cả mọi nơi đều bận 603: từ chối 604: không tồn tại ở bất cứ đâu 606: Không được chấp nhận