Tải bản đầy đủ (.pdf) (82 trang)

Tìm hiểu về SCTP và đánh giá thử nghiệm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.19 MB, 82 trang )

Tìm hiểu về SCTP và đánh giá, thử nghiệm

..

LỜI CẢM ƠN
Để hồn thành luận văn này, tơi đã nhận được sự tin tưởng và chỉ bảo rất nhiều từ
thầy PGS.TS Ngô Hồng Sơn, Bộ môn Truyền thông và Mạng máy tính – Viện Cơng
nghệ thơng tin và Truyền thơng – Đại học Bách Khoa Hà Nội.
Trước hết tôi xin gửi lời cảm ơn sâu sắc đến PGS.TS Ngô Hồng Sơn đã dành thời
gian và tâm huyết hướng dẫn, giúp đỡ tơi hồn thành Luận văn tốt nghiệp này.
Tơi cũng xin gửi lời cảm ơn đến gia đình và bạn bè đã động viên tôi rất nhiều trong
thời gian làm luận văn, cảm ơn ban lãnh đạo công ty Hyperlogy đã tạo điều kiện
thuận lợi trong việc cung cấp thiết bị và thực hiện các thí nghiệm trong luận văn.
Nhân đây tôi cũng xin gửi lời cảm ơn đến quý thầy cô Viện Công nghệ thông tin và
Truyền thông đã tạo rất nhiều điều kiện để tơi học tập và tích lũy kiến thức trong
thời gian theo đuổi khóa học tại trường.
Một lần nữa tôi gửi lời cảm ơn chân thành đến tất cả quý thầy cô Viện Công nghệ
thông tin và Truyền thông – Đại học Bách Khoa Hà Nội cùng gia đình, bạn bè và
ban lãnh đạo cơng ty Hyperlogy đã giúp đỡ tơi hồn thành luận văn này.

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

1


Tìm hiểu về SCTP và đánh giá, thử nghiệm

DANH MỤC CÁC TỪ VIẾT TẮT:

3GPP


ACK
API

3rd Generation Partnership

Dự án mạng thế hệ mới 3G

Project

Báo nhận

Acknowledgment
Application Programming

Giao diện lập trình ứng dụng

Interface

DoS

Deny of Service

Tấn cơng từ chối dịch vụ

HoL

Head of Line

Nghẽn đầu dịng


HTTP

Hyper Text Transfer Protocol

Giao thức truyền siêu văn bản

IETF

Internet Engineering Task Force Nhóm đặc trách kỹ thuật Internet

IP

Internet Protocol

Giao thức internet

MAC

Message Authentication Code

Mã xác thực thông điệp

MTU

Maximum Transmission Unit

CBR

Constan Bit Race


RFC

Resquest for Command

RTP

Real Time Protocol

RTT

Round-trip Time

Thời gian vòng khứ hồi

Advertised receiver window

Bộ đệm để nhận dữ liệu mà đầu

credit

thu quảng bá cho đầu gửi

Selective acknowledgement

Báo nhận có chọn lọc

Stream Control Transmission

Giao thức truyền thơng theo


Protocol

luồng có điều khiển

A_rwnd
SACK
SCTP

Học viên: Nơng Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

Đơn vị dữ liệu truyền lớn nhất
của đường truyền
Tốc độ Bit không đổi
Khuyến nghị duyệt thảo và bình
luận
Giao thức vận chuyển thời gian
thực

2


Tìm hiểu về SCTP và đánh giá, thử nghiệm

SCTPLIB

Siemens SCTP library

Thư viện SCTP của Siemens


SI

Stream Identifier

Nhận diện luồng

SSN

Stream Sequence Number

Số thứ tự luồn

SYN

Synchronization

Đồng bộ

SDP

Session Description Protocol

Giao thức mô tả phiên
Giá trị ngưỡng (đơn vị byte)
trong SCTP để xác định tắc

SSTHRESH Slow Start Threshold

nghẽn là ở giai đoạn “khởi đầu
chậm” hay “tránh tắc nghẽn”

Giao thức truyền thơng có điều

TCP

Transmission Control Protocol

TCB

Transport Control Block

TSN

Transmission Sequence Number Số thứ tự truyền

TLV

Type-Length-Value

UAC

User Agent Client

UAS

User Agent Server

UDP

User Datagram Protocol


URL

Uniform Resource Identifiers

VoIP

Voice over IP

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

khiển
Khối điều khiển giao vận

Kiểu-Độ dài-Giá trị
Đơn vị thực hiện các chức năng
client trong SIP
Đơn vị thực hiện các chức năng
server trong SIP
Giao thức truyền thông người
dùng
Dạng địa chỉ để tham chiếu đến
tài nguyên trên Internet
Giao thức truyền tiếng nói qua
Internet

3


Tìm hiểu về SCTP và đánh giá, thử nghiệm


DANH MỤC BẢNG:
Bảng 2-1: So sánh các đặc tính của SCTP với TCP và UDP ....................................31
Bảng 3-1: Số liệu thông lượng HTTP trong điều kiện thường và điều kiện mất gói
10%, với lớp transport là TCP và SCTP ...................................................................60
Bảng 3-2: So sánh hiệu quả của SIP với giao thức transport lần lượt là UDP và
SCTP trong điều kiện chỉ có một phiên kết nối mạng ở tình trạng bình thường ......68

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

4


Tìm hiểu về SCTP và đánh giá, thử nghiệm

DANH MỤC HÌNH VẼ VÀ ĐỒ THỊ:
Hình 2-1: Định dạng gói tin SCTP. Theo sau tiêu đề tổng quát là một hay nhiều các
chunk chứa đựng thông tin điều khiển hay thông tin dữ liệu ....................................14
Hình 2-2: Định dạng của một chunk SCTP ..............................................................15
Hình 2-3: Thiết lập và kết thúc một kết nối. SCTP sử dụng kĩ thuật cookie trong cơ
chế bắt tay 4 bước để thiết lập một kết nối. Giai đoạn kết thúc kết nối là cơ chế bắt
tay 3 bước. [15] .........................................................................................................18
Hình 2-4 : Các giai đoạn trong quá trình hoạt động của một kết nối SCTP .............21
Hình 2-5: Các host dạng multihomed. A1 và A2 là hai địa chỉ IP của đầu cuối A. B1
và B2 là hai địa chỉ IP của đầu cuối B ......................................................................23
Hình 2-6: Kỹ thuật heartbeat SCTP ..........................................................................25
Hình 2-7: Nhiều luồng trong kết nối SCTP. Các luồng ở đây là luồng dữ liệu logical
một chiều mà các đầu cuối đã thỏa thuận với nhau trong q trình thiết lập kết nối25
Hình 2-8: Mơ phỏng sự kiện nghẽn HoL của các luồng riêng rẽ bên đầu nhận .......26

Hình 2-9: Mơ phỏng multi-streaming. Gói tin mất trên một luồng khơng ảnh hưởng
đến luồng khác ..........................................................................................................27
Hình 3-1: Lab dùng để kiểm tra hiệu suất SCTP trong mạng thực tế .......................37
Hình 3-2: Mơ hình hoạt động của lksctp bên trong nhân Linux ...............................37
Hình 3-3: Lab hiển thị các chức năng cơ bản của SCTP ..........................................39
Hình 3-4 : Tiêu đề tổng quát của SCTP ....................................................................40
Hình 3-5: Định dạng các chunk dữ liệu SCTP ..........................................................41
Hình 3-6: Lab hiển thị chức năng tin cậy của SCTP khi mạng ở trạng thái quá tải .41
Hình 3-7: Các chunk SACK ......................................................................................43
Hình 3-8: Các chunk dữ liệu được truyền lại ............................................................43
Hình 3-9 : Lab hiển thị sự độc lập giữa các luồng SCTP .........................................44
Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

5


Tìm hiểu về SCTP và đánh giá, thử nghiệm

Hình 3-10 : Sự độc lập của các luồng SCTP .............................................................45
Hình 3-11: Lab thể hiện chức năng multi-homming.................................................47
Hình 3-12: Kết quả mơ phỏng multi-homming. .......................................................48
Hình 3-13: Lab thể hiện ưu điểm của SCTP so với TCP trong môi trường mạng
không ổn định ............................................................................................................49
Hình 3-14: Thời gian ứng dụng truyền dữ liệu với lớp transport là SCTP và TCP
trong điều kiện bình thường ......................................................................................51
Hình 3-15: Thời gian ứng dụng truyền dữ liệu với lớp transport là SCTP và TCP khi
tỉ lệ mất gói 10% .......................................................................................................52
Hình 3-16 : So sánh thời gian truyền cũng một lượng dữ liệu giữa TCP và SCTP ..52
Hình 3-17: So sánh TCP đa kết nối và SCTP đa luồng với tỉ lệ mất gói thay đổi từ

0% đến 5% ................................................................................................................53
Hình 3-18: Việc truyền nhiều luồng SCTP trong điều kiện khơng có mất gói .........54
Hình 3-19: Hạn chế được vấn đề HoL sử dụng nhiều luồng SCTP với tỉ lệ mất gói
10%............................................................................................................................55
Hình 3-20 : Trang web với 4 kết nối TCP từ client ..................................................56
Hình 3-21: Trang web với 10 kết nối TCP từ client .................................................56
Hình 3-22 : Kiến trúc Lab thí nghiệm HTTP với SCTP làm giao thức lớp transport
...................................................................................................................................57
Hình 3-23: Minh họa kết quả thu được với kết nối sctp 1 luồng từ httperf đến đến
thttpd để truyền tập tin có dung lượng 10K Byte và tỉ lệ mất gói là 10% ................60
Hình 3-24: So sánh thơng lượng http với lớp transport là TCP và SCTP trong điều
kiện thường................................................................................................................60
Hình 3-25: So sánh thông lượng http với lớp transport là TCP và SCTP trong điều
kiện tỉ lệ mất gói là 10% ...........................................................................................61

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

6


Tìm hiểu về SCTP và đánh giá, thử nghiệm

Hình 3-26: Chồng giao thức multimedia trên Internet. H323 hoạt động trên TCP,
SIP hoạt động trên TCP, UDP hay SCTP, còn RTP hoạt động trên UDP ................63
Hình 3-27: Kiến trúc chủ chốt của SIP bao gồm agent người dùng, server (server
proxy và server chuyển hướng) và dịch vụ xác định địa chỉ ....................................64
Hình 3-28: Server đăng kí SIP theo dõi vị trí hiện tại của người dùng SIP ..............65
Hình 3-29 : Lab thực nghiệm SIP với giao thức transport là SCTP và UDP ...........67
Hình 3-30: So sánh hiệu quả của SIP với giao thức transport lần lượt là UDP và

SCTP trong điều kiện có nhiều phiên kết nối mạng và mạng ở tình trạng mất gói .70

Học viên: Nơng Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

7


Tìm hiểu về SCTP và đánh giá, thử nghiệm

MỤC LỤC:
LỜI CẢM ƠN .............................................................................................................1
DANH MỤC CÁC TỪ VIẾT TẮT: ...........................................................................2
DANH MỤC BẢNG: ..................................................................................................4
DANH MỤC HÌNH VẼ VÀ ĐỒ THỊ: .......................................................................5
DANH MỤC HÌNH VẼ VÀ ĐỒ THỊ: .......................................................................5
LỜI NĨI ĐẦU ..........................................................................................................11
I.

MỞ ĐẦU ............................................................................................................12
1.1.

Giới thiệu về SCTP ....................................................................................12

1.2.

Các vấn đề quan trọng được giải quyết trong luận văn ..............................13

II. TỔNG QUAN ....................................................................................................14
2.1.


Cơ bản về SCTP .........................................................................................14

2.2.

Các giai đoạn (pha) trong một kết nối SCTP .............................................15

2.2.1 Thiết lập kết nối ..........................................................................................15
2.2.2 Truyền dữ liệu ............................................................................................18
2.2.3 Kết thúc kết nối ..........................................................................................19
2.2.3.1. Kết thúc kết nối đúng qui trình ...............................................................19
2.2.3.2. Hủy kết nối nữa chừng ...........................................................................20
2.3.

Các đặc tính nổi bật của SCTP so với TCP ................................................22

2.3.1.

Những đặc tính chung .............................................................................22

2.3.2.

Multi-homing ..........................................................................................23

2.3.3.

Multi-streaming ......................................................................................25

2.3.4.


Điều khiển luồng.....................................................................................28

2.3.5.

Điều khiển tắc nghẽn ..............................................................................29

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

8


Tìm hiểu về SCTP và đánh giá, thử nghiệm

2.3.6.

Bảo mật ...................................................................................................30

2.3.7.

So sánh giữa SCTP với TCP/UDP .........................................................31
Các vấn đề còn tồn tại trong SCTP ............................................................32

2.4.
2.4.1.

Phù hợp với các yêu cầu về độ tin cậy của báo hiệu SS7 .......................32

2.4.2.


Hiệu suất SCTP trong mơi trường khơng dây ........................................32

2.4.3.

Cấu hình lại địa chỉ tự động ....................................................................32
Giới thiệu về LKSCTP và tình trạng hiện tại .............................................33

2.5.
2.5.1.

Giới thiệu về dự án LKSCTP .................................................................33

2.5.2.

Tình trạng hiện tại của LKSCTP [16], [19], [20] ...................................34
Kết luận ......................................................................................................34

2.6.
III.

THIẾT KẾ VÀ THỰC THI CÁC MƠ PHỎNG.............................................36

3.1.

Các đặc tính cơ bản của SCTP ...................................................................38

3.1.1.

Trường hợp một: định dạng gói tin SCTP ..............................................39


3.1.2.

Trường hợp hai: các chunk thứ tự bên trong một luồng SCTP ..............41

3.1.3.

Trường hợp ba: sự độc lập của các luồng SCTP ....................................44

3.1.4.

Trường hợp bốn: khả năng chịu lỗi với multi-homming ........................45

3.2.

Đánh giá SCTP so với TCP và UDP ..........................................................49

3.2.1.

Trường hợp 1: So sánh hiệu suất giữa SCTP và TCP với một kết nối

TCP

................................................................................................................49

3.2.2.

Trường hợp 2: So sánh hiệu suất giữa SCTP và TCP với nhiều kết nối

TCP


................................................................................................................53

3.2.3.

Trường hợp 3: giải quyết vấn đề HOL gặp phải ở TCP .........................53

3.3.
3.3.1.

Đánh giá các ứng dụng với SCTP đóng vai trị lớp transport ....................55
Ứng dụng HTTP với SCTP ....................................................................56

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

9


Tìm hiểu về SCTP và đánh giá, thử nghiệm

3.3.2.

Ứng dụng SIP với SCTP.........................................................................61

3.3.2.1. Giới thiệu về SIP.....................................................................................61
3.3.2.2. Kiến trúc SIP [17] ...................................................................................63
3.3.2.3. Thực hiện Lab .........................................................................................65
IV.

KẾT LUẬN .....................................................................................................71


TÀI LIỆU THAM KHẢO........................................................................................73
PHỤ LỤC .................................................................................................................75

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

10


Tìm hiểu về SCTP và đánh giá, thử nghiệm

LỜI NĨI ĐẦU
Hiện nay nhu cầu truyền dữ liệu thời gian thực và đảm bảo các yếu tố an toàn đang
rất được quan tâm. Các giao thức đang hoạt động ở lớp ứng dụng như TCP và UDP
ngày càng bộc lộ những nhược điểm về khả năng an toàn, giám sát tắc nghẽn, khả
năng chịu lỗi… Hiện tại tổ chức IETF đang phát triển giao thức vận chuyển đa mục
đích thế hệ mới, gọi là SCTP (streaming control transport protocol).
Giao thức này còn mới, đang được cộng đồng khoa học phát triển và hoàn thiện về
hoạt động, ứng dụng, hiệu suất…Việc nghiên cứu, đánh giá và ứng dụng giao thức
này đang trở thành nhu cầu bức thiết, nhất là cho Internet thế hệ sau.
Mục tiêu của luận văn này là nghiên cứu, đánh giá và phân tích thực nghiệm tính
hiệu quả khi áp dụng giao thức lớp transport mới - SCTP trong việc truyền dữ liệu
so với các giao thức TCP, UDP, đặc biệt là trong các ứng dụng dữ liệu thời gian
thực như SIP.

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

11



Tìm hiểu về SCTP và đánh giá, thử nghiệm

MỞ ĐẦU

I.
1.1.

Giới thiệu về SCTP

Stream Control Transport Protocol (SCTP) được IETF phát triển với mục đích ban
đầu là giao thức truyền thơng tin cậy thuộc lớp transport để truyền dữ liệu báo hiệu
SS7 trên mạng IP. Bên cạnh đó SCTP cịn có các đặc tính tiên tiến mà TCP hay
UDP khơng cung cấp, cho phép nó có thể được sử dụng rộng rãi hơn là chỉ trong
các ứng dụng báo hiệu [4].
Như với TCP, SCTP là giao thức truyền thông tin cậy với các cơ chế điều khiển tắc
nghẽn và điều khiển luồng. Nó cũng là giao thức hướng kết nối với việc thiết lập
phiên làm việc trước khi truyền dữ liệu và cơ chế ACK. SCTP cịn cải thiện một
cách tồn diện khả năng bảo mật với cơ chế bắt tay 4 bước, giảm thiểu các nguy cơ
bị tấn công từ chối dịch vụ DoS. Bên cạnh đó để tăng tốc độ truyền dữ liệu, nó có
cơ chế truyền tin mà khơng quan tâm đến thứ tự gói tin như UDP. Nó cũng bao gồm
kĩ thuật heartbeat để theo dõi trạng thái của các đầu cuối và các sự cố kết nối một
cách nhanh chóng.
Đặc biệt tính năng multi-homing của SCTP giúp đầu cuối tăng cường khả năng chịu
lỗi. Tính năng đa luồng (multi-streaming) hay còn gọi là “thứ tự từng phần” cung
cấp khả năng truyền dữ liệu tốc độ cao, giảm được trì hỗn trên đường truyền, giải
quyết được vấn đề nghẽn HoL (Head-of-Blocking) mà giao thức TCP gặp phải. [4]
Nhiều tổ chức và dự án khác nhau đang nghiên cứu và phát triển SCTP như dự án
KAME SCTP với mục đích phát triển các plug-in SCTP cho Apple MAC, dự án

SCTP Kernel Implementation phát triển các phiên bản ứng dụng web apache2 và
Mozilla có hỗ trợ SCTP nên nền tảng FreeBSD. Dự án của Salvatore Loreto cũng
cung cấp tài liệu và mã nguồn để chạy SIP với lớp transport là SCTP. Còn các nhà
nghiên cứu tại PEL (Protocol Engineer Laboratory) cũng đang tập trung phát triển
và cải thiện SCTP. Trên site của họ chúng ta có thể tìm thấy nhiều cơng cụ
GNU/Linux được tích hợp SCTP như firefox, modun ns2-sctp hay tcpdum hỗ trợ
SCTP. Tất cả các phiên bản còn đang trong giai đoạn nghiên cứu, phát triển, do đó
Học viên: Nơng Anh Đức
Người hướng dẫn: PGS.TS Ngơ Hồng Sơn

12


Tìm hiểu về SCTP và đánh giá, thử nghiệm

SCTP cần phải được tìm hiểu sâu sắc, cải tiến hơn nữa để có thể áp dụng phổ biến
vào thực tế [16]
1.2.

Các vấn đề quan trọng được giải quyết trong luận văn

Luận văn này đề cập đến đặc tính kĩ thuật của SCTP, đánh giá và phân tích hiệu quả
của SCTP ở lớp transport.
 Trước hết luận văn sẽ trình bày các đặc tính quan trọng và những ưu điểm
của SCTP so với TCP/UDP, giải thích tại sao SCTP có thể thay thể được
TCP/UDP
 Định nghĩa kiến trúc và kịch bản các thí nghiệm để thể hiện và chứng minh
các đặc tính nổi bật của SCTP
 Định nghĩa các thông số để đánh giá hiệu suất và các tham số mô tả môi
trường mạng thực tế để đo đạc và thấy được các ưu điểm của SCTP so với

TCP/UDP
 Triển khai các thực nghiệm sử dụng Ubuntu, lskctp và NS2
 Thực hiện các kịch bản kiểm tra và phân tích kết quả
 Đề xuất các công việc cần nghiên cứu hơn nữa trong tương lai

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

13


Tìm hiểu về SCTP và đánh giá, thử nghiệm

TỔNG QUAN

II.

Trong phần này chúng ta sẽ phân tích chi tiết về SCTP bao gồm định dạng gói tin,
các giai đoạn cần thiết trong một kết nối (gọi là một association), các đặc tính cũng
như ưu điểm của SCTP so với TCP. Chúng ta cũng giải thích tính cần thiết của
SCTP so với TCP/UDP và nguyên nhân cộng đồng mạng hiện đang rất quan tâm
đến nó (cả trong nghiên cứu và phát triển). Cuối cùng, chúng ta giới thiệu sơ lược
tình hình phát triển SCTP hiện tại để hiểu rõ vấn đề hơn và dự án lksctp, dự án này
cho phép kernel Linux hỗ trợ SCTP ở lớp transport.[1]
2.1.

Cơ bản về SCTP

Phần này đề cấp đến định dạng gói tin SCTP và các giai đoạn trong vòng đời một
kết nối SCTP (associatioin). [2], [15]


Hình 2-1: Định dạng gói tin SCTP. Theo sau tiêu đề tổng quát là một hay nhiều các chunk chứa đựng
thông tin điều khiển hay thông tin dữ liệu

TCP cung cấp dịch vụ truyền dữ liệu là các luồng byte (byte-stream), trong khi đó
SCTP truyền dữ liệu theo hướng thơng điệp (message-oriented). Các gói tin SCTP
ln bắt đầu với một tiêu đề chung, có dung lượng 12 byte, kiến trúc tối thiểu phải
cung cấp ba chức năng sau:

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

14


Tìm hiểu về SCTP và đánh giá, thử nghiệm

 Port nguồn và port đích: cùng với địa chỉ IP trong tiêu đề IP, số port là giá trị
16 bit, được dùng để xác định một kết nối mà một gói tin thuộc vào.
 Các thẻ kiểm tra (verification tag-Vtags): Trường Vtags 32 bit đảm bảo gói
tin thuộc vào một kết nối hiện thời, giá trị này được trao đổi giữa các đầu
cuối khi thiết lập kết nối. Đây cũng là cơ chế bảo vệ chống lại các tấn công
của hacker
 Kiểm lỗi (checksum): giá trị 32 bit này dùng để đảm bảo tính tồn vẹn của
tồn bộ gói tin, nó sẽ bảo vệ gói tin tốt hơn so với trường checksum 16 bit
của TCP hay UDP
Phần còn lại của một gói SCTP bao gồm một hay nhiều chunk, chunk ở đây là một
hay nhiều khối chứa đựng thông tin điều khiển hay dữ liệu. Định dạng này khác với
các gói tin TCP và UDP, chúng chỉ chứa đựng thông tin điều khiển trong phần tiêu
đề và chỉ có duy nhất một trường dữ liệu tùy chọn


Hình 2-2: Định dạng của một chunk SCTP

2.2.

Các giai đoạn (pha) trong một kết nối SCTP

Giống như TCP, SCTP là một giao thức hướng kết nối (connection-oriented) và một
kết nối SCTP có ba giai đoạn: thiết lập kết nối, truyền dữ liệu và kết thúc kết nối.
2.2.1 Thiết lập kết nối
SCTP sử dụng bắt tay 4 bước (4-way handshake), trong đó sử dụng kỹ thuật cookie
để thiết lập một kết nối nhằm ngăn ngừa các tấn công SYN. Nếu một host A khởi
tạo một kết nối với host B, các tiến trình theo thứ tự sau đây sẽ phải xảy ra: [2],[8]
Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

15


Tìm hiểu về SCTP và đánh giá, thử nghiệm

 Khi một ứng dụng trên host A muốn bắt đầu một kết nối với host B, nó gọi
thủ tục ASSOCIATE (SCTP API) và tất cả các cấu trúc dữ liệu cần thiết
được khởi tạo để hình thành nên chunk INIT. Chunk INIT này được gửi đến
một địa chỉ lớp transport (là tổ hợp giữa địa chỉ IP và port dịch vụ) của host
B. Cùng lúc này một bộ đếm thời gian cũng được kích hoạt để host A lặp lại
việc gửi chunk INIT này khi hết hạn thời gian chờ để nhận chunk INT-ACK
từ host B. Nếu sau một số lần gửi đã thiết lập trước các chunk INIT mà
khơng có chunk INT-ACK nào được nhận thì một lỗi được thơng báo đến
ứng dụng bên trên là host B không thể kết nối được. Sau khi host A gửi

chunk INIT đầu tiên, nó chuyển sang trạng thái COOKIE-WAIT.
 Thơng thường khi host B nhận được thông điệp yêu cầu thiết lập (chunk
INIT), nó đang ở trạng thái CLOSED. Nó sẽ phân tích dữ liệu chứa trong
chunk đó, từ đó sinh ra tất cả các giá trị cần thiết cho việc hình thành một kết
nối, đồng thời nó cũng tạo ra một mã băm an toàn từ những giá trị này và
một khóa bí mật (theo thuật tốn MD5 hay SHA1). Sau đó những giá trị này
được đặt trong một cái gọi là COOKIE cùng với mã chứng thực nguồn gốc
thông điệp (MAC – Message Authentication Code) và được trả về cho host
A thơng qua chunk INIT-ACK. Chỉ có host B mới có thể kiểm tra được
thơng tin trong COOKIE này. Cookie này giúp kiểm tra host A là hợp pháp
hay không. Tại thời điểm này, host B vẫn trong trạng thái CLOSE và khơng
phân bổ bất kì tài ngun bộ nhớ hay CPU để duy trì tình trạng hiện thời của
yêu cầu kết nối từ host A. Chúng ta chú ý một điều rằng trong giai đoạn thiết
lập kết nối của TCP, tại thời điểm này, nó vẫn dành tài nguyên để duy trì
trạng thái này, làm cho nó dễ bị tấn công dạng SYN
 Khi host A nhận được thông điệp INIT-ACK ở trạng thái COOKIE-WAIT,
nó sẽ dừng bộ đếm thời gian của mình lại và tạo ra chunk COOKIE-ECHO.
Nó sẽ đặt vào chunk này COOKIE của host B từ chunk INIT-ACK nhận
được và phản hồi trở lại host A. Cùng lúc này nó cũng bật bộ đếm thời gian
để lặp lại việc gửi chunk COOKIE-ECHO cho đến khi nhận được một chunk
Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

16


Tìm hiểu về SCTP và đánh giá, thử nghiệm

COOKIE-ACK từ host B. Sau khi gửi chunk COOKIE-ECHO đầu tiên, nó
chuyển sang trạng thái COOKIE-ECHOED. Nếu sau khi gửi một số lần đã

được thiết lập trước các chunk COOKIE-ECHO mà không nhận được chunk
COOKIE-ACK nào thì một thơng báo được gửi đến ứng dụng bên trên là
host B không thể kết nối được. Như tên gọi của nó, chunk này dùng để phúc
đáp lại các COOKIE mà host B đã gửi. Chunk này có thể bắt đầu mang dữ
liệu cho host A và ứng dụng ở host B có thể chấp nhận dữ liệu hay hủy nó.
Sau khi nhận được một chunk COOKIE-ACK từ host B, host A chuyển sang
trạng thái “đã thiết lập kết nối” (ESTABLISHED).
 Khi host B nhận được chunk COOKIE-ECHO (có chứa một tham số là cấu
trúc dữ liệu COOKIE). Host B sẽ mở dữ liệu được chứa trong COOKIE này
và sử dụng lại MAC để kiểm tra xem có phải nó là nơi xuất phát của
COOKIE này. Nếu MAC tính tốn đúng thì đó là một COOKIE mà host B
đã tạo ra trước đây và các giá trị dữ liệu chứa trong COOKIE được sử dụng
để khởi tạo một kết nối SCTP. Host B sẽ gửi một chunk COOKIE-ACK đến
host A (có thể gửi kèm chunk dữ liệu trong chunk COOKIE-ACK này) và
chuyển sang trạng thái “đã thiết lập” (ESTABLISHED).
 Sau khi host A nhận được chunk COOKIE-ACK , host A chuyển sang trạng
thái “đã thiết lập” (ESTABLISHED). Chú ý là chunk COOKIE-ECHO có
thể kết hợp với chunk dữ liệu.

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

17


Tìm hiểu về SCTP và đánh giá, thử nghiệm

Hình 2-3: Thiết lập và kết thúc một kết nối. SCTP sử dụng kĩ thuật cookie trong cơ chế bắt tay 4 bước để
thiết lập một kết nối. Giai đoạn kết thúc kết nối là cơ chế bắt tay 3 bước. *15+


2.2.2 Truyền dữ liệu
SCTP gán cho mỗi chunk một số thứ tự truyền – Transmission sequence number
(TSN). Trong một kết nối thì một TSN là duy nhất và khơng phụ thuộc vào luồng
mà chunk đang được truyền trên đó. TSN dùng để liên kết với các chunk dữ liệu.
Mỗi chunk dữ liệu có một số TSN khác nhau, được gán tăng dần để duy trì sự tin
cậy và chính xác của luồng dữ liệu cũng như các thuật toán điều khiển tắc nghẽn.
Không giống như các dịch vụ kiểu luồng các byte (byte-stream) ở TCP. SCTP bảo
tồn được tính tồn vẹn của các thông điệp từ lớp ứng dụng. Điều này cũng tương
tự cho UDP. Khi một ứng dụng có một thông điệp lớn hơn giá trị MTU của đường
đi đến đích, SCTP sẽ phân mảnh thơng điệp thành nhiều chunk dữ liệu để có thể gửi
được trong các gói tin riêng rẽ.
Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

18


Tìm hiểu về SCTP và đánh giá, thử nghiệm

SCTP gán cùng một số thứ tự luồng - Stream Sequence Number (SSN) cho tất cả
các chunk dữ liệu thuộc cùng một thông điệp từ một ứng dụng đưa xuống dưới.
Điều này giúp bên nhận trong q trình lắp ráp thơng điệp trở lại
2.2.3 Kết thúc kết nối
Vì một vài nguyên nhân nào đó, cả hai phía (host A hay host B) có thể quyết định
chấm dứt một kết nối SCTP tại bất kì thời điểm nào trong thực tế (miễn là chúng
khơng đang ở trạng thái CLOSE). Có hai khả năng là chấm dứt kết nối một cách
đúng qui trình để đảm bảo không mất mát dữ liệu hay chấm dứt kết nối nửa chừng
mà không quan tâm đến bên đối tác đang kết nối tới.
2.2.3.1.


Kết thúc kết nối đúng qui trình

Như mơ tả ở hình 2-3, giai đoạn kết thúc một kết nối theo cơ chế bắt tay ba bước,
cơ chế này khơng cho phép đóng kết nối nửa chừng - tức là một đầu cuối kết thúc
kết nối trong khi đầu còn lại tiếp tục gửi dữ liệu
Khi nhận được thủ tục SHUTDOWN từ một tiến trình ứng dụng người dùng, kết
nối SCTP sẽ không chấp nhận dữ liệu từ tiến trình này nữa và bắt đầu gửi một
chunk SHUTDOWN ngay khi xác nhận tất cả dữ liệu đã được nhận hồn chỉnh.
Q trình này được đảm bảo với một bộ đếm thời gian để lặp lại việc gửi chunk
SHUTDOWN vì chunk này có thể bị mất trên đường truyền.
Khi đầu cuối bên kia nhận được chunk SHUTDOWN, nó sẽ phản hồi bằng chunk
SHUTDOWN-ACK ngay sau khi tất cả dữ liệu của nó được xác nhận (cũng được
bảo đảm với bộ đếm thời gian)
Khi đầu cuối bên này (bên khởi tạo tiến trình chấm dứt kết nối) nhận được chunk
SHUTDOWN-ACK, nó sẽ ngừng bộ đếm thời gian, gửi đi một

chunk

SHUTDOWN COMPLETE và tất cả dữ liệu vẫn còn thuộc kết nối này sẽ bị loại bỏ,
nó chuyển sang trạng thái CLOSED.
Đầu cuối bên kia khi nhận được chunk SHUTDOWN COMPLETE sẽ loại bỏ tất cả
dữ liệu liên quan đến kết nối này và chuyển sang trạng thái CLOSED. Nếu chunk
Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

19


Tìm hiểu về SCTP và đánh giá, thử nghiệm


SHUTDOWN COMPLETE bị mất trên đường truyền thì nó sẽ lặp lại việc gửi
chunk SHUTDOWN-ACK cho đến khi bộ đếm lỗi vượt qua giới hạn đã cấu hình
trước, khi đó một lỗi về đầu cuố bên kia không thể kết nối được thơng báo
2.2.3.2.

Hủy kết nối nữa chừng

Một đầu cuối cũng có thể quyết định chấm dứt kết nối hiện có mà khơng quan tâm
đến dữ liệu cịn đang trên đường truyền có được xác nhận hay chưa. Nó sẽ gửi một
chunk ABORT đến đầu cuối bên kia. Chú ý là trong gói tin gửi đi, bên gửi phải điền
vào trường Verification Tag của phía đầu cuối nhận và khơng được đính kèm bất kì
chunk dữ liệu nào trong chunk ABORT này. Sau khi gửi chunk ABORT, nó sẽ
chấm dứt kết nối ngay lập trúc
Tại phía đầu nhận chunk ABORT, nếu chunk này chứa giá trị tag chính xác, nó sẽ
khơng phản hồi cho chunk này nhưng sẽ đánh giá tính hợp lệ của chunk và loại bỏ
kết nối hiện có. Nó cũng thông báo việc hủy kết nối lên các lớp ứng dụng phía trên.
Hình 2.4 mơ tả các giai đoạn và trạng thái của SCTP khi được dùng làm lớp
transport trong các ứng dụng mạng

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

20


Tìm hiểu về SCTP và đánh giá, thử nghiệm

Hình 2-4 : Các giai đoạn trong quá trình hoạt động của một kết nối SCTP

Học viên: Nông Anh Đức

Người hướng dẫn: PGS.TS Ngô Hồng Sơn

21


Tìm hiểu về SCTP và đánh giá, thử nghiệm

2.3.

Các đặc tính nổi bật của SCTP so với TCP

2.3.1. Những đặc tính chung
Như với TCP, SCTP là giao thức truyền thơng tin cậy với kỹ thuật điều khiển tắc
nghẽn và điều khiển luồng, nó cũng là giao thức hướng kết nối với cơ chế báo nhận
ACK có chọn lọc. Phần này đề cập đến hai chức năng vượt trội của SCTP mà khơng
chúng ta khơng thể tìm thấy trong TCP, đó là multihoming và multi-streaming. Hơn
nữa cơ chế điều khiển tắc nghẽn của SCTP cũng có một số khác biệt so với TCP, vốn
dựa trên kỹ thuật “cửa sổ trượt”, kỹ thuật mà TCP đã ứng dụng từ lâu. Tính năng bảo
mật cũng được cung cấp trong SCTP qua kỹ thuật thiết lập kết nối bắt tay bốn bước.
[8]
SCTP hoạt động ở hai cấp độ
-

Bên trong một kết nối, việc truyền tin cậy các đơn vị dữ liệu được đảm bảo
bằng một mã tổng kiểm (checksum), số thứ tự và kỹ thuật truyền lại có chọn
lọc.

-

Cấp độ thứ hai đề cập đến kĩ thuật phân phối dữ liệu linh hoạt dựa trên một

khái niệm mới là các luồng dữ liệu độc lập bên trong một kết nối. Các chunk
thuộc một hay nhiều luồng có thể được đóng gói và truyền đi trong cùng một
gói SCTP nhưng khơng được lớn hơn giá trị MTU của đường đi hiện tại

SCTP đánh số tất cả các chunk dữ liệu tại đầu gửi bằng các TSN (Transport
Sequence Nunber) để giúp ích cho việc phát hiện lỗi và trùng lắp dữ liệụ. Các thông
báo xác nhận được phát đi từ đầu cuối nhận đến đầu cuối phát cũng dựa trên những
số thứ tự này.
Việc truyền lại được điều khiển bằng bộ đếm thời gian. Chu kì của bộ đếm là kết
quả của việc liên tục đo đạc giá trị RTT (round trip time). Khi thời hạn của một bộ
đếm thời gian (tại thời diểm này cơ chế điều khiển tắc nghẽn vẫn cho phép truyền
dữ liệu) hết hiệu lực thì tất cả các chunk dữ liệu chưa được xác nhận sẽ được truyền
lại và thời hạn của bộ đếm được khởi tạo lại với giá trị gấp đôi ban đầu

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

22


Tìm hiểu về SCTP và đánh giá, thử nghiệm

Khi đầu cuối nhận phát hiện sự thiếu hụt một hay nhiều chunk trong chuỗi các
chunk dữ liệu thì nó xác nhận mỗi gói tin SCTP nhận được bằng cách gởi chunk
điều khiển SACK để thơng báo tất cả các chunk cịn thiếu. Khi đầu gửi liên tục
nhận được bốn chunk SACK để thơng báo thiếu sót cho cùng một chunk dữ liệu thì
chunk dữ liệu này được truyền lại ngay lập tức (gọi là cơ chế truyền lại nhanh). Hầu
hết các hệ điều hành hiện đại đều hỗ trợ kỹ thuật tương tự như thế này trong TCP.
2.3.2. Multi-homing
Các hệ thống quan trọng ln có khả năng dự phịng tài ngun ở nhiều cấp độ khác

nhau để đảm bảo cung cấp các dịch vụ liên tục, cho dù có sự cố xảy ra hay khơng.
Như mơ tả trong hình 2-5, một host multi-homing có thể được truy xuất bằng nhiều
địa chỉ IP. Đây chính là khả năng dự phịng mà lớp mạng cung cấp, khi kết nối ở địa
chỉ IP chính bị sự cố, host đích vẫn có thể nhận dữ liệu thơng qua giao diện thay
thế. [15]

Hình 2-5: Các host dạng multihomed. A1 và A2 là hai địa chỉ IP của đầu cuối A. B1 và B2 là hai địa chỉ IP
của đầu cuối B

SCTP đã tận dụng ưu điểm này để cung cấp khả năng dự phòng cho lớp transport.
Một đầu cuối SCTP multi-homing có thể liên kết với nhiều địa chỉ IP khi nó khởi
tạo một kết nối. Hiện tại SCTP chỉ mới sử dụng tính năng multi-homing cho mục
đích dự phịng, chưa áp dụng để cân bằng tải.
Nếu một client là multi-homing thì nó sẽ thơng báo cho server tất cả các địa chỉ IP
của nó trong phần tham số địa chỉ của chunk INIT. Như thế client cũng chỉ cẩn biết
một địa chỉ IP của server bởi vì server cũng cung cấp tất cả các địa chỉ IP của nó
cho client qua chunk INIT-ACK. SCTP có khả năng xử lý cả địa chỉ IPv4 và IPv6.
Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

23


Tìm hiểu về SCTP và đánh giá, thử nghiệm

Mỗi tiến trình SCTP xem mỗi địa chỉ IP của đối tác của nó như một “đường đi”
hướng đến đầu cuối đó.
Nếu khơng có địa chỉ IP rõ ràng nào chứa trong chunk INT hay INIT-ACK thì địa
chỉ IP nguồn của gói tin IP mang dữ liệu SCTP được sử dụng. Điều này giúp cho
các ứng dụng SCTP dễ dàng hơn khi NAT được sử dụng ở các biên mạng. Để thuận

lợi hơn nữa, có một tính năng khơng bắt buộc được giới thiệu trong RFC2960, cho
phép sử dụng tên máy thay cho địa chỉ IP.
SCTP theo dõi khả năng truy xuất của mỗi địa chỉ IP tại host đích qua hai cơ chế :
ACKs của các chunk dữ liệu và các chunk heartbeat, hertbeat là chunk điều khiển
được dùng để truy vấn theo chu kì trạng thái của host đích. Trong một kết nối, mỗi
tiến trình SCTP sẽ giám sát tất cả các đường đi đến phía đối tác của nó, các chunk
hearbeat được gửi qua tất cả các đường mạng mà hiện tại chưa được dùng để truyền
các chunk dữ liệu. Đầu nhận thông điệp heartbeat sẽ báo nhận bằng thơng điệp
heartbeat_ack như ở hình 2.6. [8]
Mỗi đường đi được gán một trạng thái là “kích hoạt” hay “khơng kích hoạt”. Một
đường đi ở trạng thái kích hoạt nếu nó được sử dụng gần đây để truyền ít nhất một
gói tin SCTP và gói tin này được xác nhận từ phía đầu cuối bên kia. Nếu việc
truyền dẫn trên một đường nào đó bị thất bại liên tục thì đường đó được chuyển
thành trạng thái “khơng kích hoạt”. Nếu số lần các chunk heartbeat không được
phản hồi trong một khoản thời gian nào đó hay số lần truyền lại trên một kết nối
vượt quá một giới hạn đã được cấu hình trước thì đầu cuối bên kia bị coi là không
thể kết nối đến được và kết nối sẽ được chấm dứt.
Theo RFC2960, nếu chunk dữ liệu hay chunk heartbeat bị trễ hạn (timeout) sáu lần
liên tiếp thì bên gửi kết luận rằng đích tới là khơng thể truy xuất được nữa và nó tự
động chọn một địa chỉ IP đích khác để thay thế.
Tại thời điểm thiết lập kết nối, một địa chỉ IP trong danh sách địa chỉ trả về được
lựa chọn như là đường mạng chính. Mặc định, các chunk dữ liệu được truyền trên
đường mạng chính này. Tuy nhiên việc truyền lại có thể xảy ra ở một đường mạng

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

24



Tìm hiểu về SCTP và đánh giá, thử nghiệm

khác nếu nó sẵn sàng. Để hỗ trợ việc đo đạc độ trễ của một chu trình đường đi
(round trip), các chunk SACK nên được gửi đến địa chỉ nguồn của gói tin IP đã
mang chunk dữ liệu.
Người sử dụng SCTP có thể được thơng báo về tình trạng của các đường truyền
(tình trạng và các thơng số) theo có nhu cầu hay đường mạng chính thay đổi. Họ
cũng có thể can thiệp một tiến trình SCTP để sử dụng một đường mạng mới.

Hình 2-6: Kỹ thuật heartbeat SCTP

2.3.3. Multi-streaming

Hình 2-7: Nhiều luồng trong kết nối SCTP. Các luồng ở đây là luồng dữ liệu logical một chiều mà các đầu
cuối đã thỏa thuận với nhau trong quá trình thiết lập kết nối

Học viên: Nông Anh Đức
Người hướng dẫn: PGS.TS Ngô Hồng Sơn

25


×