Để cho các thiết bị để giao tiếp với nhau, các nhà phát triển phải sử dụng các chuẩn định dạng được xác định rõ cho trao đổi thông điệp.. SIP viết tắt của Session Initiation Protocol là
Trang 11 Tìm hiểu tổng quan về giao thức SIP và hệ thống SIP
1.1 Giới thiệu
Trước hết cần nói giao thức là gì? Giao thức là một hệ thống các quy tắc để trao đổi tin nhắn trong hoặc giữa các máy tính, điện thoại hoặc các thiết bị kỹ thuật số khác Để cho các thiết bị để giao tiếp với nhau, các nhà phát triển phải sử dụng các chuẩn định dạng được xác định rõ cho trao đổi thông điệp Một giao thức định nghĩa
cú pháp, ngữ nghĩa, và đồng bộ hóa các thông tin liên lạc Các giao thức phải được thỏa thuận trước trước khi các thiết bị trao đổi với nhau Vì lý do này, các giao thức có
xu hướng phát triển thành tiêu chuẩn, làm cho các nhà cung cấp để tạo ra thiết bị đầu cuối có thể giao tiếp với nhau dễ dàng hơn
SIP (viết tắt của Session Initiation Protocol) là một giao thức dùng để quản lý một phiên truyền thông đa phương tiện như gọi thoại và gọi video Do đó SIP được sử dụng trong rất nhiều ứng dụng liên lạc trên môi trường mạng IP, giúp người dùng tiếp cận những dịch vụ liên lạc khác nhau, kết nối tới bạn bề khi biết địa chỉ liên lạc SIP là một trong những giao thức cụ thể mà cho phép thực hiện cuộc gọi VOIP trên đó, hơn nữa, có thể cài đặt các giao thức khác phục vụ hội nghị video call, nhắn tin và các ứng dụng khác
SIP là chuẩn được miêu tả trong RFC 3261 được IETF đưa ra, và được ứng dụng rất nhiều trong VoIP trong thời gian gần đây và vẫn đang tiếp tục được thay đổi và mở rộng Cần nói thêm rằng, SIP chỉ là một giao thức thiết lập, quản lý, hủy phiên (signaling protocol) chứ không có chức năng truyền dẫn (mã hóa, giải mã, truyền …)
dữ liệu, để truyền được dữ liệu trong quá trình thoại cần phải cài đặt một giao thức khác (như RTP/RTCP, SRVP, SDP…)
VOIP viết tắt của Voice Over Internet Protocol VOIP là một khái niệm rộng bao gồm bất kỳ cuộc gọi điện thoại qua Internet nào, phân biệt với đường dây điện thoại truyền thống, hay còn gọi là mạng PSTN (Public Switched Telephone Network) Các thuật ngữ như điện thoại IP, điện thoại Internet, truyền thông qua mạng IP đều gắn liền với VOIP và cho thấy rằng Internet đang được ứng dụng phổ biến kỹ thuật số truyền tín hiệu thoại đến các thiết bị đầu cuối, thậm chí là điện thoại qua mạng IP
Trang 21.2 Giao thức SIP và hệ thống SIP
1.2.1 Hệ thống SIP
SIP
SIP là một giao thức điểu khiển trên mạng IP, nằm trên tầng ứng dụng theo mô hình OSI dùng để:
Định vị đích (user location)
Xác định khả năng (user capability)
Xác định tính sẵn sàng và tham số (user availability)
Mở phiên gọi (call setup)
Quản lý phiên (session management)
Xử lý cuộc gọi (call handing)
Kết thúc phiên (session close)
Cần làm rõ rằng, SIP không định nghĩa toàn bộ giao thức truyền thông, nó chỉ là giao thức thiết lập phiên, cần được dùng kết hợp với các giao thức khác để thực hiện các ứng dụng cụ thể như gọi thoại, video hội nghị…
Hình 1: SIP và các giao thức truyền thông
Trang 3Như trên hình, một ứng dụng gọi thoại, video call… được xây dựng trên giao thức thiết lập phiên SIP, trong đó SIP có thể kết hợp với các giao thức khác như RSVP, RTP, RTCP, SAP, SDP nằm phía trên UDP/IP hoặc TCP/IP trong mô hình OSI
Kiến trúc hệ thống SIP
Trong SIP, các đối tượng tương tác với nhau gọi chung là User Agents (UA)
Có 2 kiểu UA:
User Agent Client (UAC): tạo các request và gửi tới các máy chủ (thường
là máy chủ proxy)
User Agent Server (UAS): nhận các request và tạo và gửi response
Một UA có thể có cả chức năng của UAC và UAS
Các clients:
- Các thiết bị người dùng sử dụng, như softphone chạy trên PC, điện thoại IP…
Các servers:
1 Proxy Server
Có nhiệm vụ chuyển tiếp yêu cầu
Cụ thể, khi một yêu cầu được gửi từ client, địa chỉ người nhận chưa biết trước, do
đó client sẽ gửi yêu cầu đến một máy chủ proxy mà nó biết, máy chủ này sẽ chuyển yêu cầu đến máy chủ proxy khác hoặc đến client đích
2 Redirect Server
Máy chủ chuyển hướng yêu cầu
Thường dùng khi người nhận đã chuyển vị trí trong mạng, redirect server sẽ khi địa chỉ URI mới của người nhận vào gói tin response gửi trả lại client gửi, sau đó client sẽ gửi lại yêu cầu tới URI mới
3 Registrar
Trang 4Máy chủ đăng ký vị trí người dùng
Khi người dùng thay đổi vị trí trong mạng, địa chỉ của người dùng phải được cập nhật về máy chủ registrar
4 Location Server
Máy chủ lưu trữ dữ liệu các địa chỉ người dùng được đăng ký qua registrar
1.2.2 Giao thức SIP
Cấu trúc gói tin SIP
Hoạt động của SIP dựa trên việc trao đổi các thông điệp bản tin giữa các thực thể trong hệ thống, các bản tin dưới dạng văn bản text tuân theo định dạng RFC 2822 tương tự HTTP
Địa chỉ SIP có dạng:
sip: user@domain Trong đó, user: Tên hoặc số điện thoại
domain: Tên miền hoặc địa chỉ IP
Ví dụ : SIP: dung@iptel.com
SIP message được chia làm hai kiểu:
Request: gửi từ client đến server và xác định các hoạt động từ client
Respone: gửi từ server cho client, và cung cấp các trạng thái của request đó
Sip request
Các request thường dùng
INVITE Được sử dụng để thiết lập một phiên SIP thông số phiên được
đàm phán
REGISTER Xác minh User Agent và cung cấp một vị trí hiện tại
Trang 5BYE Kết thúc một phiên mở cửa
ACK Xác nhận response thành công cho INVITE Bước thứ ba
trong bắt tay 3 bước
OPTIONS Truy vấn các khả năng của máy chủ
Bảng 1: Các loại SIP-request
Extension Methods
INFO Cung cấp giữa thông tin giữa cuộc gọi liên quan đến
phiên Nó Hiếm khi được sử dụng
MESSAGE Được sử dụng để chuyển tin nhắn tức thì
NOTIFY Công bố kết quả của các sự kiện Sử dụng kết hợp với
các yêu cầu đăng ký
PRACK Một tạm ứng ACKnowledgment tạm thời
PUBLISH Publish thông tin trạng thái Được sử dụng cho các
dịch vụ hiện diện Instant Messaging
REFER Cơ chế để chuyển một requestt đến một người nào đó
thích hợp hơn để nhận nó
SUBSCRIBE Được sử dụng để nhận request PUBLISH hoặc
NOTIFY trong tương lai
UPDATE Sửa đổi các thông số phiên vào giữa cuộc gọi
SIP Response
Trang 6SIP Response luôn gửi trả lời một request Nó truyền đạt thông tin cập nhật tình trạng, xác nhận, hướng dẫn, và các mã lỗi trở lại User Agent Client gửi yêu cầu Response được mô tả bằng một mã gồm 3 chữ số:
1xx Provisional Xác nhận nhận được request và chờ xử lý được tiếp tục
Phản ứng tạm thời tới INVITEs không bao giờ ACKed 2xx Success Các yêu cầu được nhận, xử lý, và được chấp nhận 3xx Redirection Cung cấp thông tin vị trí hoặc dịch vụ thay thế để thử 4xx Request Failure Các yêu cầu có lỗi hay không thể xử lý bởi máy chủ 5xx Server Failure Server là không thể thực hiện yêu cầu vì một lỗi nội bộ 6xx Global Failure Không tìm thấy dịch vụ có thể để thực hiện yêu cầu
Cụ thể:
100 Trying The next hop received the request
182 Queued Temporarily unavailable and request is
in a queue (not rejected)
301 Moved Permanently User is no longer available at the
address given in the Request URI
302 Moved Temporarily Retry the request at a new address given
in the Contact header
400 Bad Request Could not understand or process
correctly the request
401 Unauthorised The request either failed authentication
or needs more information
403 Forbidden The server is refusing to process the
Trang 7request Do not retry
404 Not Found The server cannot identify the user in its
domain
408 Request Timeout The server could not process the request
in a reasonable time
415 Unsupported Media The format is not supported by the
server
480 Temporarily Unavailable The called party is currently
unavailable
485 Ambiguous The Request URI is ambiguous
486 Busy Here The called party is currently not willing
or able to take the call
500 Server Internal Error The server encountered an unexpected
condition
513 Message Too Large The message length exceeded a
determined limit
603 Decline The user explicitly refused to accept the
request
Bảng 2: Các loại SIP-response
Cấu trúc một gói tin SIP
SIP được xây dựng trên tầng ứng dụng, nằm trên TCP/IP và UDP/IP, nên một thông điệp SIP được đóng gói vào một gói IP và truyền qua mạng Cấu trúc thông điệp như sau
Mỗi thông điệp SIP bắt đầu với một Start-Line, theo sau là một chuỗi headers, và tách ra khỏi body thông qua một chuỗi carriage-return line-feed
Trang 8Hình 1: Cấu trúc gói tin SIP
Giải thích:
Start Line
Với SIP Request sẽ là Request-Line, bao gồm: Method, URI, và kết thúc với phiên
bản giao thức ("SIP / 2.0") Ví dụ: INVITE hoangnightstar@ippi.fr SIP/2.0
Với SIP Response sẽ là Status-Line, bắt đầu với phiên bản của giao thức, theo sau
là một mã Response, cuối cùng sẽ là tên của mã Response Ví dụ: SIP/2.0 200 OK
Header
Mỗi tiêu đề có thể có một hoặc nhiều tham số dấu chấm phẩy tách nối vào giá trị Format:
header-name: header-value(;parameter-name=parameter-value)*[CRLF]
Mỗi tiêu đề có thể được tách ra trên các dòng khác nhau bằng cách sử dụng chuỗi [CRLF] (xuống dòng) Đặc biệt, nhiều tiêu đề có cùng header-name (ví dụ: Contact)
có thể xuất hiện trên các dòng riêng biệt, hoặc, có thể được đặt trên cùng một dòng
cách nhau bởi dấu phẩy Header bao gồm:
- Via:
Ví dụ: Via: SIP/2.0/UDP pc33.server1.com;branch=z9hG4bK776asdhds Max-Forwards: 70
Trang 9Gồm địa chỉ trung gian và Max-Forwards: Dùng để hạn chế số lượng hop rằng request này có thể mất trước khi đến người nhận
- To:
Ví dụ: To: user2 <sip:user2@server2.com>
Chứa địa chỉ người nhận
- From:
From: user1 <sip:user1@server1.com>;tag=1928301774
Tag mà là một chuỗi giả ngẫu nhiên chèn vào bởi các ứng dụng SIP Tác dụng như một định danh của người gọi trong hộp thoại
- Call-ID:
Call-ID: a84b4c76e66710@pc33.server1.com
Nó là một ID global của cuộc gọi tạo ra như là sự kết hợp của một chuỗi giả ngẫu nhiên và địa chỉ IP của phần mềm thoại
- CSeq:
CSeq: 314159 INVITE
Chứa một số nguyên và tên của method Khi transaction bắt đầu, thông điệp đầu tiên được đưa ra một số CSeq ngẫu nhiên Sau đó nó được tăng bởi một với mỗi tin nhắn mới Nó được sử dụng để phát hiện một tin nhắn không được cung cấp hoặc sự chuyển tin không theo thứ tự
- Contact:
Contact: sip:user1@pc33.server1.com
Nó chứa tên SIP hoặc SIP URI là 1 direct route để tới user1 Nó chứa tên người dùng và miền đầy đủ và cũng có thể có địa chỉ IP
Trường Via sử dụng để gửi các đáp ứng 1 yêu cầu Trường Contact được sử dụng
để gửi các yêu cầu trong tương lai Đó là lý do tại sao response 200 OK từ user2 tới user1 thông qua proxy Nhưng khi user2 tạo ra một request BYE (một request mới và không phải là một response cho INVITE), nó đi trực tiếp để User1 bỏ qua proxy
Trang 10- Content-Type:
Content-Type: application/sdp
Mô tả kiểu body, có nhiều loại như text, audio, application, …
- Content-Length:
Content-Length: 142 Số byte có trong nội dung body
SDP là viết tắt của Session Description Protocol Nó được sử dụng để mô tả multimedia sessions dưới một định dạng được hiểu bởi những người tham gia qua mạng Tùy thuộc vào mô tả này mà các phe quyết định có tham gia một cuộc họp hoặc khi nào tham gia hoặc làm thế nào để tham gia một hội nghị
Separator:
Chuỗi CRLF= Carriage Return + Line Feed để phân tách Header và Body
Ví dụ gói tin SIP
Trang 11Hình 3: Gói tin SIP ví dụ
(1) (2) là địa chỉ IP/Port gửi và nhận của gói tin IP
Phần header đã được giải thích bên trên, sau đây ta chú ý đến phần body của thông điệp
(7) Định nghĩa cấu trúc SDP (Session Description Protocol)
(8) Địa chỉ IP của SIP client tạo message
(9) Địa chỉ IP mà SIP client cần kết nối đến để tạo phiên RTP để thực hiện gọi thoại,…
(10) Quy định các tham số như port, codecs… để thiết lập RTP Thông tin quan trọng nhất là audio 33428 RTP/AVP
audio quy định đây là cuộc gọi âm thanh (audio)
33438 là port kết nối RTP
RTP/AVP là giao thức được lựa chọn
1.2.3 Truyền dữ liệu âm thanh
SIP có thể dùng kết hợp với nhiều giao thức khác nhau để truyền tín hiệu âm thanh, trong khuôn khổ báo cáo này chỉ xét giao thức RTP
RTP là một giao thức tầng ứng dụng dùng để truyền dữ liệu thời gian thực giữa hai bên, hỗ trợ tạo dựng lại dữ liệu gốc kể cả khi packets đến không theo thứ tự hoặc bị trễ Do đó, RTP rất phù hợp truyền dữ liệu theo thời gian thực, điển hình là các dữ liệu
đa phương tiên như audio, video, cho nên cũng rất phù hợp kết hợp với SIP để truyền tiếng nói thoại RTP thường sử dụng UDP/IP
Hoạt động của IP phone trong truyền dữ liệu âm thanh:
Giả sử IP phone đã sử dụng giao thức SIP để kết nối và biết các tham số để thiết lập RTP (như trình bày phần trước)
(1) Âm thanh được microphone được lấy mẫu, sau đó được xử lý, nén và đóng gói vào các gói RTP Thông thường âm thanh được đóng gói 20ms/RTP packet
Trang 12(2) Mỗi gói RTP được đóng gói vào một gói UDP và được truyền tới đích qua mạng
Hình 4: SIP và RTP server Hình 5: SIP, SDP và RTP
Có thể thấy RTP server có thể nắm ngoài các SIP server, địa chỉ IP và port để kết nối tới RTP server được quy định trong thông điệp SIP, và các SIP client sau khi thiết lập phiên thì trao đổi thông điệp qua RTP server
Tóm lại, SIP thiết lập phiên gọi, và gói tin SIP chứ SDP định nghĩa các thông tin
để thiết lập phiên truyền dòng RTP giữa các client
1.2.4 Thiết lập phiên và thực hiện cuộc gọi
Để hiểu rõ hơn về hoạt động của SIP, ta xét trường hợp cụ thể như sau
Hai thiết bị IP phone A và B muốn gọi thoại trên mạng Internet, A và B đều đã được đăng ký với tổng đài SIP như hình vẽ, gồm các Proxy Server, RedirectServer và Location Server
Để tiện theo dõi, kí hiệu người dùng A, B là A và B, Proxy server A, B là PA, PB
Trang 13Hình 6: Cấu trúc hệ thống SIP và thiết lập kết nối
(1) A muốn liên lạc với B qua IP Phone Để kết nối qua mạng Internet, A cần biết địa chỉ IP của B, nhưng nhờ giao thức SIP, A chỉ cần biết ID của B A gửi request INVITE, do chưa biết địa chỉ IP của B, nên A gửi request tới PA
(2) Server PA chưa biết thông tin của B, nó chuyển request tới Redirect Server, và gửi message Trying cho A thông báo thông báo được chuyển tiếp
(3) Server RS tra thông tin địa chỉ IP của B trên Location Server bằng ID của B, sau đó Location Server gửi trả kết quả cho Redirect Server
(4) Redirect Server gửi trả lại thông tin của B cho PA
(5) PA khi biết thông tin trao đổi với B cần đi qua PB, đóng gói và gửi request tới
PB yêu cầu kết nối tới B
(6) PB nhận được yêu cầu, chuyển tiếp yêu cầu tới B
Khi đó, máy bên B đổ chuông Lúc này B đã biết địa chỉ IP của A, gửi response Ringing về A Nếu B nhấc máy, B gửi lại response 200 OK cho A A nhận được thì gửi lại response ACK cho B và kết nối giữa A và B được thiết lập
Trang 14Sau bước thiết lập phiên, A và B gọi thoại với nhau bằng giao thức truyền thông khác như RTP/RTCP Để hủy cuộc gọi, A hoặc B gửi request BYE tới bên còn lại, và gửi lại response 200 OK để xác nhận
Như hình dưới mô tả trực quan tên các request và response cụ thể như giải thích trên
Hình 7: Thiết lập kết nối trong SIP
1.2.5 Đăng ký tài khoản mới
Việc đăng ký tài khoản mới thông qua Registrar server
Xét hệ thống gồm Location Server và Registrar server
(1) Một máy IP phone vừa kết nối vào mạng Internet và muốn kết nối tới tổng đài, điều đầu tiên nó cần biết địa chỉ IP của Registrar Server
(2) IP phone gửi request tới Registrar Server để đăng ký địa chỉ IP và ID của nó (3) Registrar server gửi request tới Location Server, tại đây địa chỉ IP của IP phone được lưu vào cơ sở dữ liệu