Giao thức SIP sử dụng trong VoIP

  • Giao thức SIP (Session Initiation Protocol)

    Giới thiệu về giao thức SIP: Session Initiation Protocol là một giao thức được sử dụng trong việc truyền thông đa phương tiện thông qua mạng IP.Cung cấp một khuôn khổ để thiết lập voice,video truyền theo kiểu point-to-point,hội nghị,và thông điệp văn bản.Đây là một chuẩn của IETF để thiết lập các kết nối VoIP.Nó là một giao thức điều khiển lớp ứng dụng để tạo mới,chỉnh sửa và kết thúc các session.

    Cấu trúc của SIP giống như HTTP(client-server protocol).Các request được tạo ra bởi các máy client và gởi tới server.Server xử lý các request và gởi một response lại cho client.Một request và response là một yêu cầu để tạo ra 1 giao tác.SIP có các thông điệp INVITE và ACK.SIP tạo ra sự giả định nhỏ nhất về cơ bản của giao thức truyền tải.Giao thức này chính nó cung cấp độ tin cậy và nó không phụ thuộc vào độ tin cậy của TCP.SIP phụ thuộc vào Session Description Protocol(SDP)trong việc mang ra ngoài các thỏa thuận để xác minh codec.SIP hỗ trợ việc mô tả các session mà cho phép các bên tham gia có thể đồng ý thiết lập các kiểu phương tiện tương thích.SIP cung cấp các dịch vụ như:

    User Location:Xác định hệ thống cuối cùng để sử dụng cho việc truyền thông.Call Setup:ringing và thiết lập các thông số cho call tại hai bên called và calling.User Availability:Xác định sự hài lòng của bên gọi để cam kết trong truyền thông.User Capabilities:Xác định phương tiện và các thông số của phương tiện được sử dụng.Call handling:Chuyển giao và kết thúc call.

    Chức năng và nét đặc trưng của giao thức SIP. Hai thành chính trong hệ thống SIP bao gồm:SIP User Agents và SIP Network Servers.

    SIP User Agent (UA):

    • Mục đích của SIP là làm cho các session có thể thiết lập giữa các UA.Một UA là một hệ thống cuối cùng hoạt động trên nhân danh của người dùng.Một UA phải có khả năng thiết lập một session của phương tiện này với các UA khác.
    • Một UA phải duy trì trạng thái trên các cuộc gọi mà nó khởi tạo hoặc tham gia vào.Một trạng thái nhỏ nhất của các cuộc gọi được thiết lập bao gồm:các thẻ local và remote,Call-ID,các trường local và remote cseq,cùng với việc thiết lập hướng và các thông tin cần thiết của các phương tiện.Remote Cseq thì lưu trữ các thông tin cần thiết để phân biệt giữa một re-INVITE và một retransmission.Một re-INVITE được sử dụng để thay đổi các tham số session của một cuộc gọi đã thực hiện hoặc chưa xử lý.Nó sử dụng như một Call-ID nhưng CSeq thì được gia tăng bởi vì nó là một request mới.Một INVITE được truyền lại chứa Call-ID và CSeq giống như INVITE trước.UA duy trì trạng thái của một cuộc gọi trong thời gian tối thiểu là 32 giây.
    • Một UA chứa một ứng dụng client và một ứng dụng server.Hai thành phần trên là một user agent client(UAC)và một user agent server(UAS).UAC bắt đầu các request trong khi UAS thì tạo ra các response.Trong một session, UA thường điều khiển cả UAC và UAS.
    • Một SIP user agent cũng phải hỗ trợ SDP để mô tả media.Một UA phải hiểu rõ danh sách các trường nhu cầu mở rộng trong một request.Nếu không biết các trường này có thể bị lờ đi bởi một UA.


    SIP server:
    SIP servers là các ứng dụng mà nó chấp nhận các SIP request và response đến chúng.Không nên lẫn lộn SIP server với một User Agent server hoặc client-server.Một SIP server là một kiểu khác biệt của thực thể.Bởi vì SIP server cung cấp các dịch vụ và chức năng với UA, chúng sẽ hỗ trợ cả TCP,TLS và UDP để truyền tải.Hình 2.2 thể hiện các liên kết hoạt động của user agents,servers và một location service.

     

     

    SIP user agents,servers và một location service.

    SIP server proxy:

    • Một SIP proxy server nhận một SiP request từ một user agent hoặc một proxy khác và hành động trên nhân danh của user agent trong forwarding hoặc responding tời request.Một proxy không phải là B2BUA vì nó chỉ cho phép chỉnh sửa các request và chấp nhận các response để thiết lập các qui tắc bên ngoài trong RFC 3261.Các qui tắc này thì duy trì theo khoảng cách end-to-end của tín hiệu SIP trong khi đó vẫn còn cho phép các proxy server thực hiện các dịch vụ và chức năng với user agent.
    • Một proxy server phải có truy xuất đến các database hoặc vị trí các dịch vụ để giúp đỡ nó trong quá trình xử lý các request.SIP protocol thì không xác định giao diện giữa proxy và vị trí dịch vụ.Proxy có thể sử dụng nhiều kiểu database trong quá trình xử lý các request.Database có thể chứa SIP registration,các thông tin hiện hữu,và nhiểu kiểu khác của thông tin về nơi mà user được chỉ định.
    • Một proxy server khác biệt với một user agent hoặc gateway ở ba điểm sau:
    • Một proxy server không đưa ra các request,nó chỉ đáp ứng các request từ một user agent(A CANCEL request là một ngoại lệ trong qui tắc này).
    • Một proxy server không có khả năng về media.
    • Một proxy server thì không phân tích các thông điệp,mà chỉ dựa vào các header field.Các bước cần thiết trong mô hình proxy để mang một cuộc gọi hai hướng.

     

    Mô hình Proxy của Operation
    (Source:Henning Schulzrinne, Columbia University)

    Proxy server chấp nhận INVITE request từ client:

    • Proxy server liên hệ với location server để yêu cầu địa chỉ của UA đã gọi.Location server xác định vị trí của UA đã gọi và cung cấp địa chỉ của server đích.INVITE request được tiếp tới một địa chỉ của vị trí mà nó được trở lại.Proxy phải thêm vào một Record-Route header tới thông điệp INVITE để chắc chắn rằng tất cả các thông điệp đến sau đều được định tuyến thông qua proxy.Điều này thì cần thiết để thống kê các mục đích hoặc các ứng dụng khác
    • Called UA cảnh giác các user.User trả lời cuộc gọi.
    • UAS trở về một 200 OK biểu thị tới yêu cầu proxy server.
    • 200 OK response được tiếp tới từ proxy server tới calling UA.
    • Calling UA xác nhận của 200 OK bằng cách đưa ra một ACK request được gởi tới proxy(khi mà proxy chèn vào đầu Record-Route trong thông điệp INVITE)hoặc gởi trực tiếp tới called UA.
    • Proxy forward ACK tới called UA.

     

     

    Tìm hiểu một ví dụ về forking proxy operation

    Redirect Servers: Một redirect server(hình 2.6)như là một kiểu của SIP server mà đáp ứng tới,nó không forward các request.

     

     

    Ví dụ với redirect server.

     

     

    Schroedinger thừa nhận response:

     

     

    Chú ý rằng ACK request sử dụng lại các nhánh ID giống nhau như là INVITE và response 302.Bởi vì một ACK đến một response non-2xx cuối cùng đều nghĩ tới các phần của các giao tác giống nhau như là INVITE.Chỉ một ACK gởi trong một response được đến một 200 OK được tính đến việc tách rời các giao tác với một nhánh ID độc nhất.Một ACK đến một response 200 OK cuối cùng là một hop-by-hop response,không phải là end-to-end response.

    Vì vậy một INVITE mới được tạo ra với một Call-ID mới và gởi trực tiếp tới các vị trí vẫn được sử dụng từ các trường Contact header trong một response 302,từ redirect server:

     

     

    Các bước trong mô hình redirect để mang đi một call two-way:

    • Redirect server chấp nhận INVITE request từ calling party UA.Redirect server liên hệ với location services để lấy địa chỉ của called party UA.Location services trở về địa chỉ của called party UA.
    • Sau khi user được chỉ định,redirect server trở lại địa chỉ trực tiếp tới calling party trong một thông điệp 3xx,với danh sách được cập nhật:vị trí đầu tới đích mới.Không giống như proxy server,redirect server không forward tới INVITE.
    • UAC gởi một ACK tới redirect server báo nhận response 3xx.
    • UAC gởi một request INVITE trực tiếp tới Contact:địa chỉ trở lại bởi redirect.
    • Called party UA cảnh báo các user,user trả lời cuộc gọi.Called party UA cung cấp một chỉ báo thành công(200 OK) tới UAC.
    • UAC gởi một ACK tới UAS báo đã nhận response 200 OK.Mô hình Redirect Server của Operation.
    • (Source:Henning Schulzrinne, Columbia University)

    Registration Servers:

    • Một registration server được biết như là một registrar,chấp nhận các request của SIP REGISTER,;tất cả các request nhận một response:501 Not Implemented.Thông tin liên quan từ request làm cho các SIP server có sẳn bên trong giống Administrator Domain, chẳng hạn như proxies và redirect server.Trong một resistration request,trường TO header chứa tên của tài nguyên bắt đầu registed,và trường Contact header chứa địa chỉ khác hoặc aliases.Registration server tạo ra một liên kết tạm giữa Address Of Record(AOR) URI trong TO và thiết bị URI trong Contact Courier.
    • Registration server thường yêu cầu các user agent đăng ký để xác thực,vì vậy các cuộc gọi đi vào không bị chiếm đoạt bởi các user không được xác thực.Phụ thuộc vào sự hiện diện của các trường,REGISTER request có thể được sử dụng bởi một user agent để lấy lại một danh sách của các registration hiện thời,làm sạch tất cả registrations,hoặc thêm vào một registration URI.
    • Để bảo vệ registration,TLS phải được sử dụng như HTTPDigest không cung cấp nhu cầu bảo vệ toàn vẹn.
    • SIP messages có thể được phân chia rộng rải trong SIP requests và responses,hơn nữa nó được xác định trong các session.

    SIP Request:
    • SIP requests là các thông điệp được gởi từ các máy client đến các server để cần khẩn một SIP operation.RFC 3261 xác định các SIP request hoặc method làm cho UA và proxy có thể tới vị trí của các user và khởi đầu,sửa đổi,tear-down các session.
    • INVITE: chỉ ra rằng các recipient user hoặc các service bị cuốn vào trong một session.Bạn có thể sử dụng method mày để sửa đổi cấu thành của các session được thiết lập trước.Thân của message INVITE phải bao gồm phần mô tả các media session được thiết lập hoặc chỉnh sửa,mã hóa trên SDP.Một response thành công(200 OK response)chỉ ra sự sẳn sàng của các called party khi tham gia vào kết quả của một session media.Nó bắt đầu một session.
    • ACK: xác nhận UAC đã nhận được response cuối cùng đến một request INVITE.ACK được sử dụng chỉ với các request INVITE.ACK gởi end-to-end cho một 200 OK response.Proxy trước hoặc UAC thì gởi các ACK cho các response cuối cùng khác.ACK request có thể bao gồm một thông điệp với phần mô tả các session cuối cùng nếu request INVITE không chứa phần mô tả các session này
    • OPTION: UA sử dụng request OPTION để truy vấn một UAS về khả năng của nó.Nếu UAS có khả năng truyền các session tới các user,nó đáp ứng khả năng thiết lập của UAS.BYE:sử dụng BYE để yêu kết thúc các session được thiết lập trước.
    • CANCEL: làm cho các UAC và network server có thể hủy một yêu cầu tiến trình bên trong,như INVITE.Điều này không ảnh hưởng đến việc hoàn thành các request mà UAS đã gởi đi các response cuối cùng.
    • REGISTE: client sử dụng REGISTE request để đăng ký với các thông tin tương ứng AOR của người dùng và SIP servers.
    • PRACK: đảm bảo độ tin cậy tạm thời của các response lớp 1xx.
    • UPDATE: cập nhật tạm thời các session.
    • REFER: Chuyển giao call đến bên thứ ba sử dụng các thông tin liên quan được cung cấp trong các request.
    • SUBSCRIBE: báo cáo một sự kiện vừa diễn ra,ví dụ như cập nhật sự hiện của các user.NOTIFY:sử dụng để thông báo sự kiện đã diễn ra.
    • MESSAGE: một phương thức để chỉ việc mang đi một message.
    • SIP Respone: Một server gởi SIP response tới một client để chỉ ra trạng thái của một SIP request mà client trước đó đã gởi tới server.UAS hoặc proxy thì tạo ra các SIP responses trong response đến một SIP request mà UAC khởi đầu.SIP response là các con số từ 100 đến 699.SIP responses là một nhóm giống như 1xx,2xx đến 6xx.SIP response được phân loại như provisional và final.
    • Một provisional response chỉ ra tiến trình bởi server nhưng nó không chỉ ra các kết quả cuối cùng giống như kết quả quá trình xử lý các SIP request.Lớp 1xx của SIP response chỉ ra trạng thái tạm thời.Response cuối cùng chỉ ra phần kết thúc và trạng thái cuối cùng của SIP request.Tất cả các lớp 2xx,3xx,4xx,5xx và 6xx đều là cuối cùng,riêng biệt:Lớp 1xx(Information)chỉ ra trạng thái của các call trước khi hoàn thành.
    • Lớp 2xx(Success)chỉ ra quá trình xử lý thành công của SIP request
    • Lớp 3xx(Redirection)chỉ ra SIP request cần phải gởi một lần nữa đến UAS khác để thực hiện tiến trình xử lý.
    • Lớp 4xx(Client-error)request bị hỏng bởi client.Client có thể thực hiện lại request.Lớp 5xx(server failure)request bị hỏng do server.Request có thể thử lại tại các server khác.Lớp 6xx(Global failure)request bị hỏng và không nên thử lại request tại server này hoặc server khác.

    SIP Message structure:
    • Một SIP message gồm có các phần sau:
    • Một start-line.
    • Một hoặc nhiều header field.
    • Một dòng rỗng để chỉ ra kết thúc header field.
    • Một tùy chọn phần thân của thông điệp.
    • Bạn phải kết thúc start-line,mổi dòng message-header,và một dòng rỗng bằng trình tự
    • Carriage return Line Feed(CRLF).
    • Start-line cho một SIP request là một Request-line.Start-line cho một SIP response là Status-line.Request-line chỉ rõ SIP method,Request-URI và phiên bản của SIP.Status-line thì mô tả phiên bản của SIP,mã của SIP response và một tùy chọn reason phrase.Reason phrase là một nguyên văn mô tả của mã 3 ký từ SIP response.

    Bảng thể hiện các thành phần của 1 SIP request message:

     

    Thông tin trong bảng được lấy từ RFC 3261

     

    Bảng thể hiện cấu trúc của một SIP respone message:

     

    Thông tin trong bảng được lấy từ RFC 3261

     

    SIP header:

    Một thông điệp SIP được soạn ra từ các header field mà nó truyền tín hiệu và thông tin routing đến các thực thể SIP network.SIP có hình thức giống như HTTP header(RFC 2616).Các header field được xác định kiểu như Header field.Mô tả chức năng của các SIP header:

    • From:chỉ ra sự giống nhau lúc bắt đầu của các SIP request.Từ header thường là AOR của bên gởi.Nó chứa một SIP hoặc các SIP URI và một tùy chọn hiển thị tên.To:Cho biết mong muốn có người nhận của một SIP request.Đi đến header là một AOR của người nhận.Nó cũng chứa SIP hoặc SIP URI và tùy chọn hiển thĩ tên.Call-ID:Trường này nhận ra một dãy serie của một message.Call_ID phải giống hệt nhau để tất cả các SIP request và SIP response gởi đi bằng các UA khác nhau với cùng một dialog.
    • Cseq: Được soạn ra của một giá trị số nguyên và tên method.Trường này nhận ra orders và tiếp tục các SIP request trong một dialog.Cseq cũng có sự khác biệt trong việc gởi lại một message và một message mới.
    • Via: Chỉ ra cách lấy đường dẫn bởi một request và xác định nơi mà response cần gởi đi.
    • Contact: Nhận biết một SIP hoặc SIP URI nơi mà UA muốn nhận một SIP request mới.
    • Allow: cho phép danh sách header của SIP method nhận hỗ trợ của UA mà tạo ra message.
    • Supported: Tất cả phần mở rộng của SIP hỗ trợ bởi UA.Phần mở rộng của SIP là các RFC khác và RFC 3261.Miêu tả các thẻ option giống như 100rel trong RFC 3262.Require:Về nghĩa nó giống như supported header,nhưng sự hỗ trợ của phần mở rộng SIP ở các UA từ xa phải đến các giao tác để được xử lý.
    • Content-type: Chỉ ra kiểu của thân message mà đính kèm với SIP request hoặc response phải được hiện ra nếu SIP message có một thân. Content-Length:Xác định kích thước của thân message. SIP request và SIP response cũng chứa các header field. Related Protocol. SIP là một phần của bộ giao thức, gồm có: SDP,RTP và RTCP.SDP-Session Description Protocol. SDP được định nghĩa bởi RFC 2327, được phát triển bởi IETF MMUSIC. Mục đích ban đầu là mô tả việc thiết lập các multicast session thông qua MBONE. Ứng dụng đầu tiên của SDP là giao thức Session Announcement Protocol(SAP)sử dụng các port và nhận các thông báo của các MBONE session. SDP chứa các thông tin về media session:IP Address(IPv4 address hoặc host name). Port Number(sử dụng UDP hoặc TCP để truyền tải). Media type(audio,video,tương tác whiteboard,…). Media Encoding scheme(PCM A-Law,MPEG II video,…). SDP còn chứa các thông tin: Chủ đề của các session. Bắt đầu và kết thúc mọi thời điểm. Liên hệ thông tin về các session. Giống như SIP,SDP dử dụng mã hóa văn bản. Một SDP message được soạn là một series của các dòng, các trường called, và nó yêu cầu order để dễ dàng phân tích. SDP thì không được gán đễ có thể mở rộng dễ dàng và phân tích các qui tắc một cách chính xác. Một người phân tích SDP không phải để ý tới các trường chua biết đến, các trường missing hoặc một dòng out-of-sequence. Ví dụ một SIP message chứa nhiều các fields tùy chọn được hiển thị ở đây:

     

     

    Biểu mẫu của một SIP message:X=parameter1 parameter2...arameter N.

     

     

    Danh sách các SDP field trong Required của chúng

    Dòng bắt đầu với một chữ thường ký tự x.Không có khoảng trống giữa các ký tự và dấu =, chính xác là có một khoảng trắng giữa mổi ký tự.Mổi trường có một xác định của các tham số.Mổi dòng kết thúc với một CRLF.RTP Audio Video ProfilesAudio voideo profiles được định nghĩa bởi RFC 3551 được liệt kê trong bảng:

     

    Audio voideo profiles

     

    Tài liệu hiện trạng nó đặc tả RTP:

    UDP được sử dụng để ưu tiên truyền tải.

    Số port của RTP luôn chẳn,tương ứng số port RTCP kế tiếp là lớn nhất,luôn luôn là số lẻ.Không có header mở rộng nào được sử dụng.

    Thông tin trong ba cột đầu tiên nó cũng chứa trong SDP a=rtpmap:field, thể hiện vì sao các thuộc tính được tùy chọn.

    PSTN Protocols: Ba kiểu giao thức truyền tín hiệu PSTN:Circuit Associate Signaling(CAS),Integrated Services Digital Network(ISDN),và ISDN User Part(ISU).Circuit Associate Signaling

    Đây là kiểu lâu nhất mà PSTN còn sử dụng.Thông tin sử dụng giống như chuyển mạch audio,như đường dẫn voice,với các ký số và ký từ trình bày bởi các tín hiệu số audio.Các tín hiệu số được gọi đến MT(Multifrequency Tone).Chúng giống như một tín hiệu số giữa một điện thoại và một trung tâm chuyển mạch,nó là tín hiệu số DTMF.Vì vậy CAS dễ bị gian lận,một tín hiệu không trung thực có thể được tạo ra bởi một caller để làm cho cuộc gọi được miễn phí.Kiểu truyền tín hiệu này phổ biến giữa các văn phòng trung tâm và trao đổi giữa các chi nhánh riêng của tập đoàn(PBX).

    ISUP Signaling.

    ISDN User Part là giao thức sử dụng giữa chuyển mạch điện thoại trong PSTN.Nó sử dụng thông qua một mạng packet-switched chuyên dụng mà sử dụng hệ thống Signaling System #7(SS7)để truyền tải.Phương thức này được phát triển để khắc phục sự trì hoãn và các vấn đề bảo mật trong CAS.

    SDN Signaling: ISDN được phát triển để tất cả các hệ thống điện thoại số kết nối với PSTN.Kiểu phổ biến nhất dựa trên BRI(Basic Rate Interface)và PRI(Primary Rate Interface).Một BRI có thể chứa hai kênh truyền B 64-Kbps đến các voice khác hoặc dữ liệu và một kênh D 16-Kbps.BRI có thể được sử dụng thông qua các đường dây điện thoại qui ước nhưng nó yêu cầu một ISDN telephone hoặc một bộ tích hợp cuối cùng. PRI sử dụng một liên kết 1.544Mbps gọi tới một T-1 hoặc một DS-1 được chia sẻ bên trong 23 kênh B và một kênh D,với mỗi kênh là 64Kbps.

Tư vấn DV miễn phí

Contact form submitted! We will be in touch soon.
Gửi thông tin

* Bắt buộc

Giải pháp tổng đài IP

Danh mục

Thông báo

Hệ thống đang xử lý, xin vui lòng đợi trong giây lát