Chuẩn SIP (Session Initiation Protocol)
SIP (Session Initiation Protocol – Giao thức khởi tạo phiên) là một giao thức điều khiển lớp ứng dụng mà có thể thiết lập, chuyển đổi và kết thúc các phiên đa phương tiện như các cuộc gọi điện thoại Internet. SIP cũng có thể mời các thành ...
SIP (Session Initiation Protocol – Giao thức khởi tạo phiên) là một giao thức điều khiển lớp ứng dụng mà có thể thiết lập, chuyển đổi và kết thúc các phiên đa phương tiện như các cuộc gọi điện thoại Internet. SIP cũng có thể mời các thành phần tham gia tới các phiên đang tồn tại, như các cuộc hội thảo multicast. SIP hỗ trợ trong suốt việc ánh xạ tên và tái định hướng các dịch vụ, mà hỗ trợ tính di động của con người. SIP được phát triển bởi IETF, được coi là 1 phần của cấu trúc hội thảo đa phương tiên Internet, được thiết kế để tương thích với các giao thức khác như TCP, UDP, IP, DNS…
Giao thức báo hiệu cho phép hai hay nhiều đầu cuối thiết lập các phiên truyền đa phương tiện. Chức năng chính của giao thức báo hiệu:
- Xác định điểm thiết bị hay ứng dụng đầu cuối
- Liên lạc tới điểm đầu cuối xác định sự sẵn sàng để thiết lập phiên kết nối
- Trao đổi các thông tin media để cho phép phiên kết nối được thành lập
- Thay đổi các phiên đã tồn tại
SIP cũng có khả năng mở rộng các dịch vụ và cung cấp các thông tin về trạng thái online hoặc offline. Các chức năng đó bao gồm:
- Công khai và upload trạng thái xuất hiện
- Phân phát các yêu cầu về thông tin trạng thái xuất hiện
- Truyền các instant messages
Chúng ta có thể thấy được rõ hơn về SIP thông các mô hình kết nối sử dụng giao thức báo hiệu SIP.
Giữa hai thiết bị SIP
Hai thiết bị này có thể là SIPphone, cellphone,…, cả hai thiết bị này sẽ kết nối tới 1 mạng IP như Internet và các thiết bị sẽ biết được địa chỉ IP của nhau
Mô hình giữa hai thiết bị SIPTheo mô hình, Tesla sẽ bắt đầu kết nối bằng việc gửi bản tin SIP INVITE tới Marconi. Bản tin này chứa các thông tin chi tiết về loại phiên và cuộc gọi. Đó có thể là một phiên thoại bình thường, hoặc một phiên đa phương tiện như video conference, gaming conference.
INVITEsip:marconi@radio.orgSIP/2.0
Via:SIP/2.0/UDPlab.high-voltage.org:5060;branch=z9hG4bKfw19
Max-Forwards:70
To:G.Marconi<sip:Marconi@radio.org>
From:NikolaTesla<sip:n.tesla@high-voltage.org>;tag=76341
Call-ID:123456789@lab.high-voltage.org
CSeq:1INVITE
Subject:AboutThatPowerOutage...
Contact:<sip:n.tesla@lab.high-voltage.org>
Content-Type:application/sdp
Content-Length:158
v=0
o=Tesla28908445262890844526INIP4lab.high-voltage.org
s=PhoneCall
c=INIP4100.101.102.103
t=00
m=audio49170RTP/AVP0
a=rtpmap:0PCMU/8000
Các tham số SDPGiữa hai thiết bị SIP thông qua proxy Server
Cuộc gọi SIP với Proxy ServerNhư trong mô hình trước, các thiết bị hay ứng dụng phải biết địa chỉ IP của bên mình muốn thiết lập cuộc gọi. Nhưng trên thực tế không phải khi nào cũng biết được địa chỉ IP các thiết bị khác. Địa chỉ IP cũng không thể trở thành số điện thoại và địa chỉ IP của một thiết bị luôn luôn biến đổi, trong một phiên gọi thì địa chỉ IP không thay đổi nhưng trong phiên khác địa chỉ IP sẽ khác. Và nếu dùng địa chỉ IP thì chúng ta cũng không thể liên lạc khi ngồi ở một máy khác.
Trong mô hình này, việc thiết lập phiên của cuộc gọi thông qua Proxy Server. Nó sẽ đóng vai trò như một thiết bị trung gian để thiết lập cuộc gọi. Sau khi cuộc gọi được thiết lập, sẽ tạo ra được một phiên media giữa hai thiết bị SIP, như hình vẽ.
SIP được thiết kế phục vụ cho mục đích lâu dài của điện thoại Internet và hội nghị đa phương tiện. Rất nhiều sự quan tâm được tập trung vào việc phát triển SIP để đảm bảo giao thức này trở thành cơ sở cho thông tin trên Internet. Dưới đây là một số đặc điểm nổi bật tổng quát của SIP.
Simplicity (Đơn giản) không giống như các giao thưc khác cho Internet và thoại, SIP sử dụng các bản tin dạng text nên có thể dễ dàng đọc được. Thêm vào đó các giao thức vốn có vẫn được sử dụng ví dụ như HTTP 1.1. Điều này làm cho giao thức này trở nên rất dễ khắc phục sự cố và tích hợp với các ứng dụng khác.
Efficiency (Hiệu quả) giao thức ở phía trên SIP có ảnh hưởng nhỏ đến hiệu suất truyền thông, bởi vì các chức năng báo hiệu sử dụng một phần nhỏ băng thông so với các luồn truyền thông.
Scalability (Khả năng co dãn): Server không cần duy trì các thông tin trạng thái về các phiên truyền thông SIP trên UDP. Do đó 1 server có thể điều khiển 1 cách hiệu quả nhiều client. Vòng lặp bản tin định tuyến có thể sử dụng tài nguyên mạng rộng khắp, trở nên phổ biến khi mạng được mở rộng. SIP sẽ phát hiện và ngăn chặn vòng lặp bản tin định tuyến, điều này cải thiện hoạt động của mạng lớn.
Flexibility (Mềm dẻo): Do SIP sử dụng SDP để thỏa thuận việc codec, bất kỳ codec nào có thể được sử dụng đều được đăng ký với IANA. So sánh điều này với H.323, ta thấy được sự khác biệt. Bởi vì trong H.323 các chuẩn codec được định nghĩa rõ ràng và ít thay đổi, còn các chuẩn khác cùng chia sẻ trường dành cho chuẩn không được sử dụng thường xuyên.
Support for Mobility (Hỗ trợ sự di động): Mô hình SIP cho phép người sử dụng có thể di chuyển từ thiết bị đầu cuối này sang thiết bị đầu cuối khác mà không nhất thiết phải cùng loại. Giao thức này đưa ra sự hỗ trợ rất mạnh cho việc ủy nhiệm, tái định hướng, do đó người sử dụng có thể tùy ý lựa chọn việc che dấu hay không vị trí thực tế của họ.
User programmability (khả năng lập trình của người sử dụng): Ngoài việc hỗ trợ cho điện thoại truyền thống. SIP có thể khai thác tốt ngôn ngữ xử lý cuộc gọi (CPL). Điều này cho phép người sử dụng đưa ra những quy luật phức tạp cho server mà không cần quan tâm xem ai liên lạc với họ, vị trí, thời điểm, và loại phương tiện truyền dẫn.
Extensibility (Khả năng mở rộng): Người thiết kế giao thức không thể đoán trước được tất cả các yêu cầu cho giao thức. Điều này cho phép việc cải tiến và mở rộng giao thức trong khi vẫn đảm bảo hoạt động nhịp nhàng với phiên bản cũ. Thêm vào đó, các tùy chọn không được sử dụng sẽ bị loại bỏ để giao thức không bị cồng kềnh.
Tuy rằng trong cấu hình đơn giản nhất có thể chỉ sử dụng 2 tác nhân users để gửi thông tin SIP một cách trực tiếp tới nhau, nhưng 1 mạng SIP đặc trưng thì sẽ mang nhiều hơn một loại phần tử SIP. Các phần tử SIP cơ bản là các tác nhân user, proxies, registrars, và redirect servers.
Các tác nhân người sử dụng UA (User agents)
Các điểm cuối internet mà sử dụng SIP để tìm kiếm lẫn nhau và để điều chỉnh các đặc trưng tính chất phiên được gọi là user agents (UA). UA thông thường nhưng không nhất thiết tồn tại trên các máy user dưới dạng các ứng dụng- điều này đang là phương pháp được sử dụng rộng rãi nhất nhưng UA cũng có thể là các điện thoại tế bào, các cổng PSTN, PDA, ….
User Agents thường được đề cập đến như là User Agent server (UAS) và User Agent Client (UAC). UAS và UAC chỉ là các thực thể logic, mỗi một User Agent bao gồm một UAC và một UAS. UAC là 1 phần của User Agent mà gửi yêu cầu và nhận các đáp ứng nhận. UAS là một phần của User Agent mà nhận yêu cầu và gửi các đáp ứng.
UAS và UACProxy Server
SIP cho phép sự cấu thành của cơ sở hạ tầng của các host mạng gọi là proxy servers. User Agents có thể gửi các thông tin tới một proxy server. Proxy servers là các thực thể rất quan trọng trong cơ sở hạ tầng SIP. Chúng cho phép trong việc định tuyến các lời mời session phụ thuộc vào vị trị hiện thời của người được mời, sự nhận thực, sự tính toán và một vài chức năng quan trọng nữa.
Nhiệm vụ quan trọng nhất của Proxy server là định tuyến các lời mời phiên tới người được gọi. Lời mời phiên này thường sẽ để ý rất kỹ sự thiết lập các proxy cho đến khi mà nó tìm được 1 proxy mà biết được vị trí thực sự của người được gọi.. Proxy sẽ forward lời mời phiên một cách trực tiếp tới người được gọi mà người được gọi đó sau đó sẽ hoặc chấp nhận hoặc khước từ lời mời phiên.
Có 2 loại SIP Proxy servers cơ bản là stateless và stateful
Stateless Servers
Stateless server đơn giản được xem như là những người chuyển tiếp thông tin. Họ chuyển tiếp thông tin một cách độc lập với nhau. Mặc dù các thông tin được sắp xếp theo kiểu giao dịch nhưng stateless proxies không quan tâm tới vấn đề này.
Chúng đơn giản nhưng nhanh hơn stateful Proxy servers. Chúng có thể được sử dụng như các load balancer đơn giản, các người dịch thông tin, và các bộ định tuyến. Một trong những hạn chế của stateless proxies là chúng không có khả năng truyền lại các thông tin và thực hiện công việc định tuyến cao cấp.
Stateful servers
Chúng phức tạp hơn. Trong lúc nhận yêu cầu, stateful proxies tạo ra một trạng thái và giữ nó cho đến khi sự giao dịch là kết thúc. Vì stateful proxies phải đảm bảo trạng thái này trong suốt quá trình giao dịch, nên sự hoạt động của chúng là giới hạn.
Khả năng kết hợp các thông tin SIP thành các phiên giao dịch đưa ra cho stateful proxies một vài đặc điểm thú vị. Stateful proxies có thể thực hiện chia nhánh, nghĩa là trong khi nhận một tin thì 2 hoặc nhiều hơn các tin khác sẽ được gửi đi.
Stateful proxies có thể “hấp thụ” việc truyền lại bởi vì chúng biết, từ trạng thái của các phiên giao dịch, nếu chúng đã nhận được cùng một thông tin rồi. Stateful proxies có thể thực hiện các phương pháp phức tạp hơn để tìm ra các user.
Hầu hết các SIP proxies ngày nay là stateful vì cấu hình của chúng thường là rất phức tạp. Chúng thường thực hiện việc tính toán, chia nhánh, và tất cả những đặc trưng đó đòi hỏi một stateful proxy.
Registrar
Chúng ta đã đề cập đến SIP proxy tại proxy.b.com biết vị trí hiện thời của Bob nhưng không đề cập đến làm thế nào để có thể học được vị trí hiện thời của user. User agent của Bob (điện thoại SIP) phải đăng ký với một một bộ phận gọi là Registrar. Registrar này là một thực thể SIP đặc biệt, chúng nhận những đăng ký từ các users, trích ra những thông tin về vị trí như địa chỉ IP, cổng, hay username… và lưu trữ những thông tin này vào trong 1 vùng cơ sở dữ liệu. Mục đích của vùng cơ sở dữ liệu này là ánh xạ sip:bob@b.com thành những thứ tương tự như sip:bob@1.2.3.4:5060. Vùng cơ sở dữ liệu sau đó được sử dụng bởi proxy server của B. Khi Proxy này nhận được một lời mời cho sip:bob@b.com, nó sẽ tìm kiếm vùng cơ sở dữ liệu. Nó tìm ra sip:bob@1.2.3.4:5060 và gửi lời mời tới đó. Registrar thực chất chỉ là một thực thể logic
Hình 4.4 chỉ ra một sự đăng ký SIP điển hình. Một thông tin đăng ký mang theo địa chỉ của bản ghi sip:jan@iptel.org và liên hệ với địa chỉ jan@1.2.3.4:5060 mà ở đó 1.2.3.4 là địa chỉ IP của điện thoại, được gửi tới Registrar. Registrar trích thông tin này ra và lưu trữ nó vào trong vùng cơ sở dữ liệu. Nếu mọi chuyện đều thuận lợi thì Registrar gửi một đáp ứng là 200 OK tới điện thoại và quá trình đăng ký được kết thúc.
Tổng quan về đăng ký
Mỗi sự đăng ký đều có một vòng đời giới hạn. Sự kết thúc của trường header hoặc kết thúc của các tham số có liên quan đến trường header xác định trong bao lâu thì sự đăng ký có hiệu lực. Tác nhân user phải refresh lại sự đăng ký của nó.
Redirect Server
Thực thể mà nhận yêu cầu và gửi trả lại câu trả lời với 1 danh sách vị trí hiện tại của một user đặc biệt được gọi là redirect server. Một Redirect server nhận yêu cầu và tìm kiếm người nhận trong vùng cơ sở dữ liệu, sau đó nó tạo ra một danh sách các vị trí hiện thời của user và gửi chúng tới người tạo yêu cầu.
Người tạo yêu cầu sau đó trích một danh sách các đích và gửi các yêu cầu khác một cách trực tiếp đến chúng.
Chuyển hướng SIP
Khi một user agent hay một proxy server nhận được 1 request nó sẽ gửi đáp ứng response. Mỗi một request phải có một đáp ứng ngoài trừ các request ACK.
Các responses là giống với các request ngoại trừ dòng đầu tiên. Dòng đầu tiên của response mang theo version của giao thức (SIP/2.0), mã reply (reply code)và cụm từ reason. Reply code là một số nguyên từ 100 đến 699 và để phân ra các loại response