Giao thức SCTP

Một phần của tài liệu nghiên cứu giao thức trong mạng voip (Trang 25 - 30)

Chương 2 Các giao thức truyền tải trong VoIP

2.4. Giao thức SCTP

Năm 1998, nhóm làm việc của IETF được tập hợp để thiết kế một cơ chế giao vận tin cậy để truyền báo hiệu điều khiển cuộc gọi trên mạng Internet. Kết quả là Sigtran đã được ra đời cho phép truyền các bản tin SS7 trên mạng IP. Vấn đề chính mà Sigtran cần giải quyết chính mà TCP chưa đáp ứng được đó là:

Head of line blocking: Vấn đề xảy ra khi gửi các bản tin độc lập trên kết nối

TCP đã được thiết lập thì các bản tin được nhận sau bị làm trễ và lưu trong bộ đệm của tầng giao vận của phía nhận tới khi các bản tin trước đó bị mất được truyền lại và tới đích. Mà ở đó, các bản tin sau thường thiết lập các cuộc gọi độc lập. Như vậy, trễ ở các bản tin sau là nguyên nhân sinh ra timeout trong điều khiển cuộc gọi gây ra lỗi không mong muốn trong quá trình điều khiển cuộc gọi.

Multihoming: Khi một trạm với nhiều đường truy cập Internet với mục đích dự

phịng, khơng muốn đợi để định tuyến trong khi mạng bị tắc nghẽn để truyền tin với trạm ngang hàng với nó. Với báo hiệu cuộc gọi, trễ này là không thể chấp nhận được khi có nhiều đường đã có. Do TCP chỉ gắn một đường kết nối giữa hai đầu cuối nên sẽ không thể giải quyết được vấn đề này.

Cân nhắc những vấn đề này, Sigtran được thiết kế như là một giao thức tầng giao vận mới cho phép mang báo hiệu cuộc gọi trên mạng IP. Đồng thời, IETF mở rộng phạm vi của nhóm thiết kế từ một nhóm nhỏ đến một nhóm chuyên trách để thiết kế

một giao thức giao vận có thể phục vụ nhiều mục đích và hoạt động tốt với nhiều ứng dụng. Và khi đó SCTP ra đời với các đặc tính sau:

Multistreaming: SCTP hỗ trợ đa luồng (stream) bản tin độc lập với nhau

trên một liên kết SCTP. Mỗi bản tin được gửi trên đó được gán cho một luồng riêng. Tất cả dữ liệu trong một luồng được nhận theo thứ tự với dữ liệu khác trong luồng. Dữ liệu trong các luồng khác nhau thì khơng có đặc tính này. Do vậy, SCTP cung cấp cơ chế cho phép việc nhận dữ liệu có thứ tự một cách cục bộ. Như vậy là nó đã giải quyết được vấn đề head-of-line blocking. Ứng dụng của đa luồng (multistreaming) có thể hỗ trợ các ứng dụng liên quan tới hợp kênh dữ liệu như thoại, văn bản, video trên một đường truyền giữa hai đầu cuối thay vì mở nhiều kết nối TCP cho mỗi luồng.

Multihoming: giữa hai đầu cuối trong q trình thiết lập liên kết có thể xác

định liên kết đa điểm. Việc có nhiều giao diện cho phép dữ liệu được tự động gửi theo nhiều địa chỉ khác nhau khi có lỗi xảy ra. Điều này là hồn tồn khơng thể thực hiện được ở TCP vì nó gắn kết một đầu cuối với một giao diện nhất định. Nếu như có lỗi xảy ra, tất cả các kết nối được gắn với giao diện đó vần có thời gian timeout và được hủy bỏ. Và sau đó, ứng dụng là phải thiết lập lại các kết nối khác.

Message Orientation: Trong TCP, dữ liệu được gửi giữa hai đầu cuối là

luồng các byte. Nếu cần thiết, ứng dụng phải làm chức năng định dạng khung (frame) cho bản tin. Ở SCTP, bản tin được giữ nguyên định dạng. Tức là nếu tầng ứng dụng phía phát gửi bản tin 100 byte đi thì phía thu cũng nhận được đúng 100 byte. UDP cũng cung cấp dịch vụ hướng bản tin nhưng khơng có độ tin cậy cao như SCTP.

Un-ordered Service: Đối với TCP, tất cả các bản tin được nhận tin cậy

đúng theo thứ tự được gửi. Còn với SCTP, giao thức này cung cấp cơ chế nhận tin khơng có thứ tự (giữa các luồng song song với nhau). Ở UDP cũng cấp dịch vụ này nhưng khơng có độ tin cậy như SCTP.

Extensibility: Gói TCP bị giới hạn bởi 40 byte trường Option. Trái lại, gói

SCTP được mở rộng thơng qua việc sử dụng trường TLV (Tag-Length- Value).

Heartbeat/Keep-alive: SCTP có một tùy chọn cho phép xác định thời gian

sống của bản tin. Nó cho phép ứng dụng truyền tin xác định khoảng thời gian mà bản tin cịn có ích. Nếu thời gian này hết hạn trước khi được truyền tin cậy tới phía nhận, thì thực thể SCTP gửi có thể dừng việc cố gửi bản tin

hay hủy bỏ bản tin. Kiểu tin cậy này gọi là “tin cậy cục bộ”. Điều này rất hữu ích như trong truyền tin di động hay ở các game online. Việc này sẽ giúp tiết kiệm băng thông đường truyền chống tắc nghẽn.

Syn cookie: SCTP sử dụng bắt tay bốn bước bới việc sử dụng cookie có dấu

hiệu định trước. Phía nhận của bản tin thiết lâpk liên kết SCTP mới duy trì trạng thái no-state (khơng được cấp tài nguyên) cho tới khi phía khởi tạo chứng thực được đó là IP của đối tượng yêu cầu kết nối. Cơ chế này cho phép chống lại tấn công từ chối dịch vụ bằng cách SYN flooding.

Stronger checksum: SCTP cung cấp 32 bit kiểm tra tổng với khả năng phát

hiện lỗi tốt hơn 16 bit ở TCP hay UDP.

Advanced TCP services: các dịch vụ mới của TCP như SACK (RFC

2018), Appropriate Byte Counting Byte Counting (RFC 3465) và Explicit Congestion Notificaion (RFC3168) đã được tích hợp sẵn trong SCTP.

Services/Features SCTP TCP UDP

Hướng liên kết Có Có Khơng

Song cơng Có Có Có

Tin cậy Có Có Khơng

Tin cậy cục bộ optional Khơng Khơng Nhận dữ liệu có thứ tự Có Có Khơng Nhận dữ liệu khơng có thứ tự Có no Có Điều khiển luồng Có Có Khơng Điều khiển tắc nghẽn Có Có Khơng Cơ chế ECN Có Có Khơng Selective ACKs Có Tùy chọn Khơng Hướng bản tin Có no Có Tìm lại đường MTU Có Có Khơng Phân mảnh PDU tầng ứng

dụng Có Có

Khơng Bọc các PDU tầng ứng dụng Có Có Khơng

Đa luồng Có Khơng Khơng Multihoming Có Khơng Khơng Chống tấn cơng tràn SYN Có Khơng Khơng Kêt nối half-closed Khơng Có Khơng Kiểm tra dữ liệu tới đích Có Có Khơng Giả tiều đề cho checksum Khơng

(sử dụng vtags) Có Có Trạng thái đợi vtags 4-tuple Không

SCTP là giao thức hướng kết nối giống như TCP và cũng có việc bắt tay để thiết lập và hủy kết nối. Tuy vậy, việc bắt tay của SCTP khác so với TCP.

Hình 10. Thiết lập kết nối SCTP

1) Server sẵn sàng chấp nhận một association đến. Việc này được thực hiện thông qua lời gọi hàm socket, bind, listen và được gọi là passive open.

2) Client thiết lập một active open bằng cách gọi hàm connect hay gửi một bản tin yêu cầu mở một association. Khi đó, SCTP client sẽ gửi bản tin INIT thông báo với server danh sách địa chỉ IP của nó, số hiệu thứ tự, tag thiết lập để xác định tất cả các gói là trong một association, số luồng mà client yêu cầu, số luồng vào mà nó hỗ trợ.

3) Server xác nhận bản tin INIT của client với bản tin INIT-ACK chứa danh sách địa chỉ IP, số thứ tự thiết lập, tag thiết lập, số luồng mà nó hỗ trợ và một cookie trạng thái. Cookie trạng thái chứa tất cả các trạng thái mà server xác nhận association là hợp lệ và được gán số để cho việc xác thực này.

4) Client gửi lại cookie trạng thái của server với bản tin COOKIE-ECHO. Bản tin này chứa dữ liệu người dùng gắn kèm.

5) Server xác nhận rằng cookie là hợp lệ và association được thiết lập với bản tin COOKIE-ACK. Bản tin này cũng chứa dữ liệu người dùng.

Hủy association

Không giống như TCP, SCTP không cho phép “half-closed” association. Khi một đầu cuối ngừng thì đầu cuối kia cũng phải dừng gửi dữ liệu mới. Phía nhận yêu cầu hủy kết nối gửi nốt dữ liệu đã được xếp hàng trước khi hủy kết nối. SCTP khơng có trạng thái TIME_WAIT như TCP mà sử dụng tag để làm việc này. Tất cả các chunk được tag hóa với tag gửi trong chunk INIT, một chunk từ một kết nối cũ sẽ được nhận với tag sai. Như vậy, SCTP sử dụng việc xác nhận giá trị tag trong TIME_WAIT.

Hình 11. Hủy kết nối SCTP

Các trạng thái trong kết nối SCTP được biểu diễn bằng lược đồ sau:

Một phần của tài liệu nghiên cứu giao thức trong mạng voip (Trang 25 - 30)

Tải bản đầy đủ (DOC)

(95 trang)
w