Tải bản đầy đủ (.doc) (77 trang)

đồ án: Giao thức điều khiển tốc độ tránh nghẽn TFRC

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 (1.68 MB, 77 trang )

Đồ án tốt nghiệp đại học Mục lục
MỤC LỤC
MỤC LỤC i
DANH MỤC HÌNH VẼ VÀ BẢNG BIỂU iv
THUẬT NGỮ VIẾT TẮT vi
LỜI NÓI ĐẦU 1
CHƯƠNG I: TỔNG QUAN VỀ TCP/IP VÀ ĐIỀU KHIỂN NGHẼN 3
1.1 Giới thiệu chung về TCP/IP 3
1.1.1 Mô hình TCP/IP 3
1.1.2 Giao thức TCP 5
1.1.3 Giao thức UDP 13
1.2 Điều khiển luồng và tránh tắc nghẽn trong mạng 14
1.2.1 Điều khiển tránh nghẽn của TCP 15
1.2.2 Giao thức điều khiển tốc độ tránh nghẽn TFRC (TCP-Friendly Rate Control)
17
CHUƠNG II: GIAO THỨC ĐIỀU KHIỂN TỐC ĐỘ TRÁNH NGHẼN TFRC 20
2.1 Cơ chế của giao thức TFRC 20
2.1.1 Biểu thức thông lượng 20
2.1.2 Các loại gói tin 22
2.2 Giao thức tại máy gửi 23
2.2.1 Đo kích thước gói 24
2.2.2 Khởi tạo tại máy gửi 24
2.2.3 Hoạt động của máy phát khi nhận được một gói phản hồi 24
2.2.4 Kết thúc thời gian không phản hồi 25
2.2.5 Chống các dao động 26
2.2.6 Kế hoạch truyền gói 27
2.3 Tính tỉ lệ sự kiện mất gói 27
2.3.1 Phát hiện các gói bị mất hoặc bị đánh dấu 28
Lã Lệ Thủy – D04VT2 i
Đồ án tốt nghiệp đại học Mục lục
2.3.2 Quá trình dịch từ hồ sơ mất gói sang các sự kiện mất gói 28


2.3.3 Khoảng thời gian mất gói trung bình 30
2.3.4 Cơ chế history Discounting 31
2.4 Giao thức tại máy thu dữ liệu 34
2.4.1 Hoạt động tại máy thu khi nhận được một gói dữ liệu 34
2.4.2 Kết thúc thời gian phản hồi 35
2.4.3 Khởi tạo tại máy thu 35
2.5 Các vấn đề khác 36
2.5.1 Những thay đổi phía phát 36
2.5.2 Vấn đề bảo mật 36
CHƯƠNG III: MỘT SỐ ĐÁNH GIÁ VÀ CÁC CẢI TIẾN CỦA TFRC 38
3.1 Một số đánh giá về giao thức TFRC 38
3.1.1 Cải thiện tính ổn định 38
3.1.2 Tăng tốc độ truyền 39
3.1.3 Giảm tốc độ truyền tương ứng với nghẽn kéo dài 40
3.2 Các tham số đánh giá giao thức và kết quả thực nghiệm 40
3.2.1 Các tham số đánh giá giao thức 40
3.2.2 Các kết quả thực nghiệm 41
3.3 Các cải tiến của TFRC đối với môi trường không dây 46
3.3.1 Những thách thức đối với TFRC trong môi trường không dây 46
3.3.2 TFRC-Jr 48
3.3.3 TFRC Veno 52
3.3.4 Một số phương pháp cải tiến khác của TFRC 56
CHƯƠNG IV: CHƯƠNG TRÌNH MÔ PHỎNG 59
4.1 Giới thiệu công cụ mô phỏng NS-2 59
4.2 Giao diện chương trình mô phỏng 61
4.3 Thiết lập topo hệ thống mạng 62
Lã Lệ Thủy – D04VT2 ii
Đồ án tốt nghiệp đại học Mục lục
KẾT LUẬN 69
TÀI LIỆU THAM KHẢO viii

Lã Lệ Thủy – D04VT2 iii
Đồ án tốt nghiệp đại học Danh mục hình
vẽ
DANH MỤC HÌNH VẼ VÀ BẢNG BIỂU
Hình 1.1 Mô hình phân lớp TCP/IP 3
Hình 1.2: Mô hình tham chiếu OSI 4
Hình 1.3 Định dạng của TCP datagram 10
Hình 1.4 Định dạng Option 11
Hình 1.5 Tùy chọn Maximum Segment Size 12
Hình 1.6 Tùy chọn Window Scale Factor 12
Hình 1.7 Tùy chọn SACK 13
Hình 1.8 Tùy chọn Timestamp 13
Hình 1.9 Định dạng của UDP datagram 14
Hình 2.1 Cơ chế của giao thức TFRC 20
Hình 2.2 Ví dụ về các sự kiện mất gói 29
Hình 3.1 Cấu hình mạng 41
Hình 3.2 Tốc độ gửi luồng TCP khi có các luồng TFRC 42
Hình 3.3 TCP hoạt động cùng TFRC với hàng đợi RED 43
Hình 3.4 Hệ số biến đổi của thông lượng giữa các luồng 43
Hình 3.5 Các luồng TFRC và TCP phân tích theo kết quả hình 3.2 44
Hình 3.6 40 luồng TCP (a) và TFRC (b) với quản lý hàng đợi Drop-Tail 45
Hình 3.7 Mô hình có dây-không dây đơn giản 46
Hình 3.8 Sự giảm hiệu suất của TCP và TFRC khi có lỗi liên kết vô tuyến trong môi
trường ở hình 3.7 47
Hình 3.9 Thông lượng của các luồng TFRC qua các mạng có dây và không dây 47
Hình 3.10 Cấu hình mạng lai có dây-không dây với N luồng 50
Hình 3.11 So sánh TCP và TFRC-Jr trong mạng có dây-không dây với các tỉ lệ lỗi liên
kết vô tuyến khác nhau (1 luồng) 50
Lã Lệ Thủy – D04VT2 iv
Đồ án tốt nghiệp đại học Danh mục hình

vẽ
Hình 3.12 Hiệu suất của nhiều luồng trong môi trường có dây-không dây với tỉ lệ lỗi
là 0,005 51
Hình 3.13 TFRC và tỉ lệ goodput TFRC-Jr với các luồng TCP 52
Hình 3.14 Cấu hình mô phỏng 54
Hình 3.15 So sánh thông lượng của các luồng đơn với Wb = 5Mbps, Delayb=80ms, tỉ
lệ lỗi ngẫu nhiên là 0,01 54
Hình 3.16 So sánh thông lượng khi có nhiều luồng với Wb=5Mbps, Delayb=80ms, tỉ
lệ lỗi ngẫu nhiên là 0,01 55
Hình 3.17 Tính thân thiện của TFRC Veno với 56
Hình 4.2 Luồng các sự kiện cho file Tcl chạy trong NS 60
Hình 4.3 Giao diện chương trình mô phỏng: (a) cửa sổ lệnh, (b) cửa sổ Nam, (c) cửa
sổ xgraph, (d) cửa sổ hiện thị Nam 61
Hình 4.4 Topo mạng thực hiện mô phỏng 62
Bảng 4.1 Tham số của các liên kết trong mạng 62
Bảng 4.2 Các loại gói tin 63
Bảng 4.3 Thời gian các sự kiện xảy ra trong quá trình mô phỏng 63
Hình 4.5 Thời gian các sự kiện xảy ra trong quá trình mô phỏng 64
Hình 4.6 Thông lượng của TCP tại nút 2 khi không có lưu lượng TFRC 64
Hình 4.7 Thông lượng TCP tại nút 2 khi có lưu lượng TFRC 65
Hình 4.8 Thông lượng của TFRC tại nút 2 khi không có lưu lượng TCP 65
Hình 4.9 Thông lượng của TFRC và TCP khi hoạt động cùng nhau 66
Bảng 4.4 Độ fairness giữa TCP và TFRC 67
Hình 4.10 Thông lượng của TFRC và TCP khi thay đổi băng thông cổ chai lên 1Mbps
và thời gian mô phỏng là 41s 67

Lã Lệ Thủy – D04VT2 v
Đồ án tốt nghiệp đại học Thuật ngữ viết tắt
THUẬT NGỮ VIẾT TẮT
ACK acknowlegment Gói xác nhận

AIMD Additive Increase Multiplicative
Decrease
Tăng theo cấp số cộng, giảm theo
cấp số nhân
ARP Address Resolution Protocol Giao thức phân giải địa chỉ
ARPA Advance Research Projects
Agency
Trung tâm nghiên cứu cấp cao
CBR Constant Bit Rate Tốc độ bít cố định
CoV Coefficient of variation Hệ số biến đổi
CRC Cyclic Redundancy Check Kiểm tra dư chu trình
CT Congestion threshold Ngưỡng nghẽn
DCCP Datagram congestion control
Protocol
Giao thức điều khiển nghẽn
datagram
DF Discount Factor Hệ số khấu trừ
ECN Explicit congestion notification Thông báo nghẽn cụ thể
EWMA Exponential Weighted Moving
Average
Trung bình dịch chuyển có trọng số
tăng theo hàm mũ
FIFO Frist in frist out Vào trước ra trước
FTP File transfer protocol Giao thức truyền file
HTTP Hyper Text Transfer Protocol Giao thức truyền siêu văn bản
ICMP Internet Control Message Protocol Giao thức tín hiệu điều khiển
Internet
IP Internet protocol Giao thức Internet
LAN Local Area Network Mạng cục bộ
MSS Maximum Segment Size Kích cỡ đoạn lớn nhất

MTU Maximum Transfer Unit Đơn vị truyền tối đa
NS Network simulation Phần mềm mô phỏng mạng
OSI Open Systems Interconection Mô hình tham chiếu liên kết hệ
Lã Lệ Thủy – D04VT2 vi
Đồ án tốt nghiệp đại học Thuật ngữ viết tắt
thống mở
RARP Reverse Address Resolution
Protocol
Giao thức phân giải địa chỉ ngược
RED Random Early Detection Phát hiện sớm ngẫu nhiên
RTP Realtime Protocol Giao thức thời gian thực
RTT Round-trip Time
SACK Selective acknowledgement Xác nhận có lựa chọn
SCTP Stream Control Transmission
Protocol
Giao thức truyền dẫn điều khiển
luồng
SNMP Simple Mail Transfer Protocol Giao thức truyền thư điện tử đơn
giản
TCP Tranmission Control Protocol Giao thức điều khiển truyền dẫn
Telnet Terminal Network Mạng đầu cuối
TFRC TCP-Friendly Rate Control Giao thức điều khiển tốc độ thân
thiện TCP
TFRC ctl TFRC control Gói điều khiển TFRC
TFRC-Jr TFRC-Jitter TFRC dựa vào biến động trễ
UDP User Datagram Protocol Giao thức dữ liệu người dùng
Wc Window congestion Cửa sổ nghẽn
Lã Lệ Thủy – D04VT2 vii
Đồ án tốt nghiệp đại học Lời nói đầu
LỜI NÓI ĐẦU

Với sự phát triển nhanh chóng của các mạng băng thông rộng và các máy tính
hiệu suất cao, ngày càng nhiều ứng dụng đa phương tiện thời gian thực xuất hiện trên
mạng Internet như điện thoại, hội nghị truyền hình, thoại theo yêu cầu (VoD),…Các
ứng dụng thời gian thực này khác với các ứng dụng truyền thống trên Internet như
web, FTP, TELNET ở chỗ chúng nhạy với trễ và jitter nhưng có thể chấp nhận một số
gói mất. Hiện nay băng thông mạng vẫn chưa đáp ứng được yêu cầu của các dịch vụ
kiểu này và vấn đề nghẽn mạng xảy ra thường xuyên. Điều khiển tốc độ để tránh
nghẽn là một trong những vấn đề được quan tâm và nghiên cứu rộng rãi.
TCP không thích hợp với các luồng thời gian thực do có sự thay đổi lớn về tốc độ
gửi vì vậy giao thức truyền tải phi kết nối UDP được sử dụng để truyền tải các ứng
dụng thời gian thực này. Nhưng có một vài vấn đề mới nổi lên: UDP là cơ chế best
effort không có điều khiển nghẽn, có thể phù hợp với yêu cầu của các luồng thời gian
thực nhưng không bình đẳng với các luồng TCP. Nói cách khác, khi cùng yêu cầu
băng thông với các luồng TCP, các luồng UDP có thể đạt được băng thông lớn hơn
một cách không bình đẳng làm giảm hiệu suất của TCP cũng như làm cho vấn đề tắc
nghẽn mạng thêm nghiêm trọng thậm chí dẫn đến sập mạng vì nghẽn.
Để giải quyết vấn đề này, ban đầu S.Floyd đề xuất điều khiển nghẽn được thêm
vào giao thức truyền tải cho các ứng dụng đa phương tiện thời gian thực để làm cho
chúng thân thiện hơn với các luồng TCP. Điều đó có nghĩa là khi nghẽn xuất hiện,
luồng thời gian thực có thể giành băng thông với các luồng TCP một cách công bằng.
Phương pháp này được gọi là điều khiển tốc độ thân thiện TCP (TFRC). Trong đồ án
này, em sẽ nghiên cứu cơ chế cơ bản, các hoạt động, các đánh giá và các cải tiến của
TFRC.
Đồ án Giao thức điều khiển tốc độ tránh nghẽn TFRC bao gồm các nội dung
chính như sau:
Chương I: Giới thiệu tổng quan về mô hình TCP/IP và vấn đề điều khiển nghẽn
trên mạng
Chương II: Tìm hiểu cơ chế hoạt động của giao thức TFRC
Chương III: Đưa ra một số ưu nhược điểm của TFRC và một số phương pháp cải
tiến giao thức TFRC trong môi trường không dây.

Chương IV: Chương trình mô phỏng bằng NS-2.
Trong quá trình học tập tại Học viện công nghệ Bưu Chính Viễn Thông và thực
hiện đồ án, em xin chân thành cảm ơn các thầy cô đã giúp đỡ em hoàn thành tốt
Lã Lệ Thủy – D04VT2 1
Đồ án tốt nghiệp đại học Lời nói đầu
chương trình học tập. Đặc biệt em xin chân thành cảm ơn cô giáo, Ths.Nguyễn Thị
Thu Hằng đã tận tình hướng dẫn, tạo điều kiện giúp đỡ em hoàn thành đồ án này.
Hà Nội, ngày 10 tháng 11 năm 2008
Sinh viên
Lã Lệ Thủy
Lã Lệ Thủy – D04VT2 2
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
CHƯƠNG I: TỔNG QUAN VỀ TCP/IP VÀ ĐIỀU KHIỂN
NGHẼN
Chương này bao gồm các nội dung chính sau: giới thiệu chung về mô hình TCP/IP
và hai giao thức truyền tải TCP và UDP; các cơ chế điều khiển nghẽn trên mạng hiện
nay: điều khiển nghẽn theo cơ chế AIMD – tăng theo cấp số cộng giảm theo cấp số
nhân của TCP và điều khiển nghẽn dựa trên biểu thức – TFRC.
1.1 Giới thiệu chung về TCP/IP
1.1.1 Mô hình TCP/IP
TCP/IP là một bộ giao thức được phát triển bởi cục các dự án nghiên cứu cấp cao
(ARPA) của bộ quốc phòng Mỹ [6]. Ban đầu mô hình này được sử dụng trong mạng
ARPANET. Khi công nghệ mạng cục bộ phát triển, TCP/IP được tích hợp vào môi
trường điều hành UNIX và sử dụng chuẩn Ethernet để kết nối các trạm làm việc với
nhau. Đến khi xuất hiện các máy PC, TCP/IP lại được chuyển sang môi trường PC,
cho phép các máy PC chạy DOS và các trạm làm việc chạy UNIX có thể liên tác trên
cùng một mạng. Phiên bản hiện hành của TCP/IP được tiêu chuẩn hóa vào tháng 9
năm 1981. Hiện nay TCP/IP được sử dụng rất phổ biến trong mạng máy tính mà điển
hình là mạng Internet. Bộ giao thức TCP/IP là sự kết hợp của các giao thức khác nhau
ở các lớp khác nhau và không chỉ có giao thức TCP/IP. Mô hình TCP/IP được chia

thành 4 lớp: lớp ứng dụng, lớp truyền tải, lớp Internet và lớp truy cập mạng như trên
hình 1.1
Hình 1.1 Mô hình phân lớp TCP/IP
Lã Lệ Thủy – D04VT2 3
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
Tham chiếu qua mô hình OSI, lớp ứng dụng của mô hình TCP/IP tương ứng với
ba lớp trong mô hình OSI là lớp ứng dụng, lớp trình diễn và lớp phiên; lớp giao vận
tương ứng với lớp giao vận; lớp liên mạng tương ứng với lớp mạng; lớp truy nhập
mạng tương ứng với lớp liên kết dữ liệu và lớp vật lý .
Hình 1.2: Mô hình tham chiếu OSI
• Lớp ứng dụng (Application layer): Lớp này cung cấp và điều khiển các giao
thức ứng dụng người dùng bao gồm các giao thức mức cao, mã hóa, điều khiển hội
thoại,.… Các dịch vụ ứng dụng tiêu biểu như FTP (File Transfer Protocol), Telnet
(TERminal NETwork), HTTP (Hyper Text Transfer Protocol), …
• Lớp giao vận (Transfer Protocol): Còn gọi là lớp vận chuyển có nhiệm vụ
tryền dẫn dữ liệu từ trạm nguồn tới các trạm đích. Lớp này thiết lập kết nối từ hai
điểm đầu cuối của mạng gửi và nhận. Nhiều kết nối có thể được thực hiện đồng thời.
Tại lớp này có hai giao thức chính là TCP và UDP. Phần lớn các dịch vụ ứng dụng
người dùng trong lớp giao vận sử dụng giao thức TCP - là giao thức hướng kết nối tin
cậy có khả năng điều khiển luồng và chống tắc nghẽn theo cơ chế sử dụng cửa sổ
trượt. Một số ứng dụng khác sử dụng giao thức UDP - là giao thức phi kết nối, không
tin cậy và là dịch vụ nỗ lực tối đa (best effort). Thông thường UDP được sử dụng cho
các dịch vụ có cơ chế truyền dẫn nhanh và có thể cho phép mất gói. Cả TCP và UDP
đều thực hiện phân mảnh dữ liệu của các ứng dụng tầng trên, gửi các phân đoạn dữ
liệu từ thiết bị đầu cuối này tới thiết bị đầu cuối kia.
• Lớp Internet (Internet layer): Lớp này cung cấp chức năng đánh địa chỉ để
thực hiện chức năng chọn đường tốt nhất qua mạng cho một gói tin. IP là giao thức
quan trọng nhất trong lớp này, nó chỉ cung cấp dịch vụ truyền dẫn dữ liệu nỗ lực tối
đa và phi kết nối. IP không cung cấp tính tin cậy, điều khiển luồng cũng như phục hồi
lỗi, các yếu tố này chỉ được cung cấp bởi các giao thức lớp trên. IP cung cấp chức

Lã Lệ Thủy – D04VT2 4
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
năng định tuyến để truyền dẫn bản tin đến đích. Một đơn vị bản tin trong mạng IP
được gọi là IP datagram. Ngoài ra còn có các giao thức lớp mạng khác như ICMP
(giao thức tín hiệu điều khiển Internet), ARP (giao thức phân dải địa chỉ) và RARP
(giao thức phân dải địa chỉ ngược).
• Lớp truy cập mạng (Network access layer): Cung cấp giao tiếp với lớp vật
lý, kiểm soát lỗi cho dữ liệu phân bố trên mạng vật lý. Lớp này có thể có hoặc không
cung cấp quá trình truyền dẫn tin cậy. Tại đây, nó không định nghĩa giao thức TCP/IP
cũng như một giao thức nào nhưng nó có thể sử dụng hầu hết các giao diện mạng sẵn
có như IEEE802.2, X.25, ATM, FDDI,… Tuy nhiên đối với TCP/IP thì giao thức
được sử dụng rộng rãi nhất vẫn là Ethernet trong mạng LAN và mạng WAN. Lớp này
có chức năng ánh xạ từ địa chỉ IP sang địa chỉ vật lý và đóng khung dữ liệu IP. Dựa
trên phần cứng và giao diện mạng tương ứng mà sẽ xác định kết nối với phương tiện
vật lý của mạng.
1.1.2 Giao thức TCP
Giao thức TCP (Transmission Control Protocol - "Giao thức điều khiển truyền
vận") là một trong các giao thức cốt lõi của bộ giao thức TCP/IP [8]. Sử dụng TCP,
các ứng dụng trên các máy chủ được nối mạng có thể tạo các "kết nối" với nhau, mà
qua đó chúng có thể trao đổi dữ liệu hoặc các gói tin. Giao thức này đảm bảo chuyển
giao dữ liệu tới nơi nhận một cách tin cậy và đúng thứ tự. TCP phân biệt giữa dữ liệu
của nhiều ứng dụng (chẳng hạn, dịch vụ web và dịch vụ thư điện tử) đồng thời chạy
trên cùng một máy chủ. TCP hỗ trợ nhiều giao thức ứng dụng phổ biến nhất trên
Internet và các ứng dụng kết quả, trong đó có www, thư điện tử và Secure Shell.
Trong bộ giao thức TCP/IP, TCP là tầng trung gian giữa giao thức IP bên dưới và
một ứng dụng bên trên. Các ứng dụng thường cần các kết nối đáng tin cậy kiểu đường
ống để liên lạc với nhau, trong khi giao thức IP không cung cấp những dòng kiểu đó
mà chỉ cung cấp dịch vụ chuyển gói tin không đáng tin cậy. TCP làm nhiệm vụ của
tầng giao vận trong mô hình OSI đơn giản của các mạng máy tính.
Các ứng dụng gửi các dòng gồm các byte 8-bit tới TCP để chuyển qua mạng. TCP

phân chia dòng byte này thành các đoạn (segment) có kích thước thích hợp (thường
được quyết định dựa theo kích thước của đơn vị truyền dẫn tối đa (MTU) của tầng liên
kết dữ liệu của mạng mà máy tính đang nằm trong đó). TCP kiểm tra để đảm bảo
không có gói tin nào bị thất lạc bằng cách gán cho mỗi gói tin một "số thứ tự"
(sequence number). Số thứ tự này còn được sử dụng để đảm bảo dữ liệu được trao cho
ứng dụng đích theo đúng thứ tự. Modul TCP tại đầu kia gửi lại tin báo nhận
(acknowledgement) cho các gói tin đã nhận được thành công. Một "đồng hồ" (timer)
tại máy gửi sẽ báo time-out nếu không nhận được tin báo nhận trong khoảng thời gian
Lã Lệ Thủy – D04VT2 5
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
bằng một round-trip time (RTT), và dữ liệu (được coi là bị thất lạc) sẽ được gửi lại.
TCP sử dụng checksum (giá trị kiểm tra) để xem có byte nào bị hỏng trong quá trình
truyền hay không. Giá trị này được tính toán cho mỗi khối dữ liệu tại bên gửi trước
khi nó được gửi và được kiểm tra tại bên nhận.
Không như giao thức UDP - giao thức có thể lập tức gửi gói tin mà không cần thiết
lập kết nối, TCP đòi hỏi thiết lập kết nối trước khi bắt đầu gửi dữ liệu và kết thúc kết
nối khi việc gửi dữ liệu hoàn tất. Cụ thể, các kết nối TCP có ba pha:
1. thiết lập kết nối
2. truyền dữ liệu
3. kết thúc kết nối
Trước khi miêu tả các pha này, ta cần lưu ý một số trạng thái khác nhau của một
socket:
LISTEN: đang đợi yêu cầu kết nối từ một TCP và cổng bất kỳ ở xa (trạng thái này
thường do các TCP server đặt)
SYN-SENT: đang đợi TCP ở xa gửi một gói tin TCP với các cờ SYN và ACK
được bật (trạng thái này thường do các TCP client đặt)
SYN-RECEIVED: đang đợi TCP ở xa gửi lại một tin báo nhận sau khi đã gửi cho
TCP ở xa đó một tin báo nhận kết nối (connection acknowledgment) (thường do TCP
server đặt)
ESTABLISHED: cổng đã sẵn sàng nhận/gửi dữ liệu với TCP ở xa (đặt bởi TCP

client và server)
TIME-WAIT: đang đợi qua đủ thời gian để chắc chắn là TCP ở xa đã nhận được
tin báo nhận về yêu cầu kết thúc kết nối của nó. Một kết nối có thể ở tại trạng thái
TIME-WAIT trong vòng tối đa 4 phút.
Để thiết lập một kết nối, TCP sử dụng một quy trình bắt tay 3 bước (3-way
handshake) Trước khi client thử kết nối với một server, server phải đăng ký một cổng
và mở cổng đó cho các kết nối - được gọi là mở bị động. Một khi mở bị động đã được
thiết lập thì một client có thể bắt đầu mở chủ động. Quy trình bắt tay 3 bước xảy ra
như sau:
1. Mở chủ động được thực hiện bằng cách gửi một SYN cho server.
2. Server trả lời bằng một SYN-ACK.
3. Cuối cùng, client gửi một ACK lại cho server.
Lã Lệ Thủy – D04VT2 6
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
Đến đây, cả client và server đều đã nhận được một tin báo nhận (ACK) về kết nối.
Lúc này cả hai bên đều có thể bắt đầu truyền và có thể ngắt kết nối bất cứ lúc nào
không có nhu cầu truyền nữa.
Để kết thúc kết nối hai bên sử dụng quá trình bắt tay 4 bước và chiều của kết nối
kết thúc độc lập với nhau. Khi một bên muốn kết thúc, nó gửi đi một gói tin FIN và
bên kia gửi lại tin báo nhận ACK. Vì vậy, một quá trình kết thúc tiêu biểu sẽ có 2 cặp
gói tin trao đổi. Một kết nối có thể tồn tại ở dạng "nửa mở": một bên đã kết thúc gửi
dữ liệu nên chỉ nhận thông tin, bên kia vẫn tiếp tục gửi.
Một số đặc điểm cơ bản của TCP để phân biệt với UDP:
• Truyền dữ liệu không lỗi (do có cơ chế sửa lỗi/truyền lại)
• Truyền các gói dữ liệu theo đúng thứ tự
• Truyền lại các gói dữ liệu mất trên đường truyền
• Loại bỏ các gói dữ liệu trùng lặp
• Cơ chế tránh tắc nghẽn đường truyền
Ở hai bước đầu tiên trong bắt tay ba bước, hai máy tính trao đổi một số thứ tự gói
ban đầu (Initial Sequence Number -ISN). Số này có thể chọn một cách ngẫu nhiên. Số

thứ tự này được dùng để đánh dấu các khối dữ liệu gửi từ mỗi máy tính. Sau mỗi byte
được truyền đi, số này lại được tăng lên. Nhờ vậy ta có thể sắp xếp lại chúng khi tới
máy tính kia bất kể các gói tới nơi theo thứ tự thế nào. Trên lý thuyết, mỗi byte gửi đi
đều có một số thứ tự và khi nhận được thì máy tính nhận gửi lại tin báo nhận (ACK).
Trong thực tế thì chỉ có byte dữ liệu đầu tiên được gán số thứ tự trong trường số thứ tự
của gói tin và bên nhận sẽ gửi tin báo nhận bằng cách gửi số thứ tự của byte đang chờ.
Ví dụ: Máy tính A gửi 4 byte với số thứ tự ban đầu là 100 (theo lý thuyết thì 4 byte sẽ
có thứ tự là 100, 101, 102, 103) thì bên nhận sẽ gửi tin báo nhận có nội dung là 104 vì
đó là thứ tự của byte tiếp theo nó cần. Bằng cách gửi tin báo nhận là 104, bên nhận đã
ngầm thông báo rằng nó đã nhận được các byte 100, 101, 102 và 103. Trong trường
hợp 2 byte cuối bị lỗi thì bên nhận sẽ gửi tin báo nhận với nội dung là 102 vì 2 byte
100 và 101 đã được nhận thành công.
Giả sử ta có 10.000 byte được gửi đi trong 10 gói tin 1.000 byte và có 1 gói tin bị
mất trên đường truyền. Nếu gói bị mất là gói đầu tiên thì bên gửi sẽ phải gửi lại toàn
bộ 10 gói vì không có cách nào để bên nhận thông báo nó đã nhận được 9 gói kia. Vấn
đề này được giải quyết trong giao thức SCTP (Stream Control Transmission Protocol)
với việc bổ sung báo nhận chọn lọc.
Số thứ tự và tin báo nhận giải quyết được các vấn đề về lặp gói tin, truyền lại
những gói bị hỏng hoặc mất và các gói tin đến sai thứ tự. Để phục vụ mục đích kiểm
tra, các gói tin có trường giá trị tổng kiểm tra (checksum). Với trình độ hiện tại, kỹ
Lã Lệ Thủy – D04VT2 7
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
thuật tổng kiểm tra trong TCP không đủ mạnh. Các tầng liên kết dữ liệu với xác suất
lỗi bit cao có thể cần được bổ sung các khả năng phát hiện lỗi tốt hơn. Hiện nay TCP
được thiết kế bao gồm trường kiểm tra dư chu trình (cyclic redundancy check - CRC)
với độ dài 32 bit. Tuy nhiên điều này cũng không có nghĩa là trường kiểm tra tổng của
TCP là không cần thiết. Thống kê cho thấy các sai sót do cả phần cứng và phần mềm
gây ra giữa các điểm áp dụng kỹ thuật kiểm tra CRC là khá phổ biến và kỹ thuật kiểm
tra tổng có khả năng phát hiện phần lớn các lỗi đơn giản này.
Cuối cùng là khả năng hạn chế tắc nghẽn. Tin báo nhận (hoặc không có tin báo

nhận) là tín hiệu về tình trạng đường truyền giữa 2 máy tính. Từ đó, hai bên có thể
thay đổi tốc độ truyền nhận dữ liệu phù hợp với điều kiện mạng. Vấn đề này thường
được đề cập như là điều khiển lưu lượng, kiểm soát tắc nghẽn. TCP sử dụng một số cơ
chế nhằm đạt được hiệu suất cao và ngăn ngừa khả năng nghẽn mạng. Các cơ chế này
bao gồm: cửa sổ trượt (sliding window), thuật toán slow-start, thuật toán tránh nghẽn
mạng (congestion avoidance), thuật toán truyền lại và phục hồi nhanh, Hiện nay,
vấn đề cải tiến TCP trong môi truyền truyền dẫn tốc độ cao đang là một hướng nghiên
cứu được quan tâm.
Kích thước cửa sổ
Chuỗi số thứ tự gói và cửa sổ trong TCP hoạt động giống như một cái đồng hồ.
Kích thước của cửa sổ (đo bằng byte) được thiết lập bởi khả năng tiếp nhận của máy
tính nhận. Cửa sổ này được dịch đi mỗi khi máy tính nhận nhận được dữ liệu và gửi
tin báo nhận. Khi chuỗi thứ tự tăng đến tối đa thì quay lại về 0. Kích thước của cửa sổ
là chiều dài (byte) của khối dữ liệu có thể lưu trong bộ đệm của bên nhận. Bên gửi chỉ
có thể gửi tối đa lượng thông tin chứa trong cửa sổ này trước khi nhận được tin báo
nhận.
Để tận dụng khả năng truyền dẫn của mạng thì cửa sổ dùng trong TCP cần được
tăng lên. Trường điều khiển kích thước cửa sổ của gói TCP có độ dài là 2 byte và do
đó kích thước tối đa của cửa sổ là 65.535 byte. Do trường điều khiển không thể thay
đổi nên người ta sử dụng một hệ số dãn nào đó. Hệ số này được định nghĩa trong tài
liệu RFC 1323 có thể sử dụng để tăng kích thước tối đa của cửa sổ từ 65.535 byte lên
tới 1 gigabyte. Tăng kích thước cửa sổ lớn hơn nữa cũng cần thiết trong TCP Tuning.
Việc tăng kích thước cửa sổ chỉ được dùng trong giao thức bắt tay 3 pha. Giá trị của
trường co dãn cửa sổ thể hiện số bit cần được dịch trái đối với trường kích thước cửa
sổ. Hệ số dãn có thể thay đổi từ 0 (không dãn) tới 14 (dãn tối đa).
Các cổng TCP
Lã Lệ Thủy – D04VT2 8
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
TCP sử dụng khái niệm số hiệu cổng (port number) để định danh các ứng dụng gửi
và nhận dữ liệu. Mỗi đầu của một kết nối TCP có một số hiệu cổng (là số không dấu

16-bit) được gán cho ứng dụng đang nhận hoặc gửi dữ liệu. Các cổng được phân
thành ba loại cơ bản: thông dụng, được đăng ký và động/cá nhân. Các cổng thông
dụng đã được gán bởi tổ chức Internet Assigned Numbers Authority (IANA) ví dụ:
FTP (21), TELNET (23), SMTP (25) và HTTP (80). Các cổng được đăng ký thường
được sử dụng bởi các ứng dụng người dùng đầu cuối (end user application) với vai trò
các cổng phát tạm thời (khi dùng xong thì hủy đăng ký) khi kết nối với server, nhưng
chúng cũng có thể định danh các dịch vụ có tên đã được đăng ký bởi một bên thứ ba.
Các cổng động/cá nhân cũng có thể được sử dụng bởi các ứng dụng người dùng đầu
cuối, nhưng không thông dụng bằng. Các cổng động/cá nhân không có ý nghĩa gì nếu
không đặt trong một kết nối TCP. Có 65535 cổng được chính thức thừa nhận.
Sự phát triển của TCP
TCP là một giao thức phức tạp và vẫn còn tiếp tục được phát triển. Mặc dù có
nhiều cải tiến đã được áp dụng và đề xuất nhưng các hoạt động cơ bản của giao thức
vẫn giữ nguyên như mô tả ban đầu trong tài liệu RFC 793 ban hành năm 1981. Tài
liệu RFC 1122 - Các yêu cầu của máy mạng Internet - đưa ra một số yêu cầu khi thực
hiện TCP. RFC 2581 - Điều khiển tránh nghẽn mạng, một trong những tài liệu quan
trọng trong bộ RFC những năm gần đây - mô tả thuật toán dùng để giảm khả năng tắc
nghẽn mạng. Năm 2001, RFC 3168 mô tả một cơ chế báo hiệu chống nghẽn mạng có
tên là: thông báo nghẽn mạng (Explicit Congestion Notification). Vào thời điểm đầu
thế kỷ 21, khoảng 95% gói tin trên Internet là TCP. Các ứng dụng tiêu biểu sử dụng
TCP là HTTP/HTTPS (World Wide Web), SMTP/POP3/IMAP (e-mail) và FTP
(truyền file). Sự phổ biến của TCP chứng tỏ rằng nó đã được thiết kế rất tốt.
Cơ chế điều khiển tránh tắc nghẽn của TCP ban đầu là TCP Reno và gần đây đã có
một số thuật toán khác được đề xuất:
• High Speed TCP của Sally Floyd - RFC 3649
• TCP Vegas của Brakmo và Peterson (làm việc tại Đại học Arizona)
• TCP Westwood của Đại học California tại Los Angeles
• BIC TCP của Injong Rhee (làm việc tại Đại học North Carolina)
• H-TCP của Viện Hamilton
• Fast TCP (Fast Active queue management Scalable Transmission Control

Protocol) của Caltech.
• TCP Hybla của Đại học Bologna
Bên cạnh đó cũng có rất nhiều nghiên cứu so sánh sự công bằng và hiệu suất của
TCP khi sử dụng các thuật toán tránh tắc nghẽn khác nhau.
Lã Lệ Thủy – D04VT2 9
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
TCP cũng được sử dụng cho mạng không dây. Ở đây trường hợp mất gói tin cũng
được xem là nghẽn mạng và kích thước cửa sổ do đó cũng sẽ được giảm xuống. Tuy
nhiên trong nhiều trường hợp đối với các mạng không dây thì việc mất các gói tin
thường xảy ra ngẫu nhiên do ảnh hưởng của fading, chuyển giao giữa các cell và
không thể xem đây là nghẽn mạng. Do đó, việc giảm kích thước cửa sổ không đúng sẽ
làm cho hiệu quả sử dụng đường truyền giảm đáng kể. Các giải pháp được đề ra có thể
phân loại thành các nhóm: giải pháp đầu cuối (liên quan tới việc thay đổi tại
client/server), giải pháp tại tầng liên kết dữ liệu (chẳng hạn giao thức RLP trong chuẩn
CDMA2000) và giải pháp dựa trên proxy (thay đổi trong mạng mà không cần thay đổi
các thiết bị đầu cuối).
Định dạng gói tin TCP
Một gói tin TCP bao gồm 2 phần: header và dữ liệu. Phần header có 11 trường
trong đó 10 trường bắt buộc. Trường thứ 11 là tùy chọn có tên là: option
Hình 1.3 Định dạng của TCP datagram
• Source port: Số hiệu của cổng tại máy tính gửi.
• Destination port: Số hiệu của cổng tại máy tính nhận.
• Sequence number: Trường này có 2 nhiệm vụ. Nếu cờ SYN bật thì nó là
số thứ tự gói ban đầu và byte đầu tiên được gửi có số thứ tự này cộng thêm
1. Nếu không có cờ SYN thì đây là số thứ tự của byte đầu tiên.
Lã Lệ Thủy – D04VT2 10
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
• Acknowledgement number: Nếu cớ ACK bật thì giá trị của trường chính
là số thứ tự gói tin tiếp theo mà bên nhận cần.
• Data offset: Trường có độ dài 4 bít qui định độ dài của phần header (tính

theo đơn vị từ 32 bít). Phần header có độ dài tối thiểu là 5 từ (160 bit) và tối
đa là 15 từ (480 bít).
• Reserved: Dành cho tương lai và có giá trị là 0.
• Flags (hay Control bits):Bao gồm 6 cờ
o URG: Cờ cho trường Urgent pointer. Giá trị này được thiết lập bởi
máy phát TCP để làm cho bên máy nhận truyền dữ liệu bên trong
đoạn đến ứng dụng máy nhận. Bất kỳ dữ liệu nào đã nhận trước đây
trên kết nối này nhưng chưa được truyền đến ứng dụng không nhất
thiết phải truyền lần này.
o ACK: Cờ cho trường Acknowledgement
o PSH (Hàm Push): Giá trị này được thiết lập bởi bên truyền TCP để
làm cho máy thu ngay lập tức truyền dữ liệu trong đoạn đến Socket
của bên máy nhận cùng với tất cả các dữ liệu khác mà máy nhận
chưa chuyển đến lớp ứng dụng.
o RST: Thiết lập lại đường truyền
o SYN: Đồng bộ lại số thứ tự
o FIN: Không gửi thêm số liệu
• Window: Số byte có thể nhận bắt đầu từ giá trị của trường báo nhận (ACK)
Checksum: 16 bít kiểm tra cho cả phần header và dữ liệu. 16 bít này là bổ sung
của tổng tất cả các từ 16 bít trong gói tin. Trong trường hợp số octet (khối 8
bít) của header và dữ liệu là lẻ thì octet cuối được bổ sung với các bít 0. Các bít
này không được truyền. Khi tính tổng, giá trị của trường kiểm tra được thay thế
bằng 0. Nói một cách khác, tất cả các từ 16 bít được cộng với nhau. Kết quả thu
được sau khi đảo giá trị từng bít được điền vào trường kiểm tra.
• Urgent pointer: Nếu cờ URG bật thì giá trị trường này chính là số từ 16 bít
mà số thứ tự gói tin (sequence number) cần dịch trái.
• Option: Đây là trường tùy chọn. Nếu có thì độ dài là bội số của 32 bít.
Đúng như trong trường hợp tuỳ chọn gói dữ liệu IP, tuỳ chọn có thể là:
o Một byte riêng lẻ bao gồm số tuỳ chọn.
o Một độ dài tuỳ chọn có thể thay đổi được trong định dạng trong hình

1.4
Hình 1.4 Định dạng Option
Lã Lệ Thủy – D04VT2 11
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
Một số tùy chọn của TCP.
• Tuỳ chọn Maximum segment size (kích cỡ đoạn lớn nhất): tuỳ chọn này
được sử dụng duy nhất trong suốt quá trình cài đặt kết nối (trường SYN điều khiển bit
thiết lập) và gửi từ phía nhận dữ liệu để chỉ ra độ dài đoạn lớn nhất nó có thể điều
khiển được. Nó chỉ định nghĩa độ dài tối đa của dữ liệu chứ không phải của toàn bộ
đoạn. Trường này có chiều dài 16 bit nên nó có thể mang giá trị từ 0 đến 65535. Nếu
tuỳ chọn này không được sử dụng, bất kì kích cỡ đoạn như thế nào cũng được cho
phép. Tùy chọn này chỉ được sử dụng trong quá trình thiết lập kết nối, nó không được
sử dụng trong các phân đoạn trong quá trình truyền dẫn.
Hình 1.5 Tùy chọn Maximum Segment Size
• Tuỳ chọn Window Scale Factor - WSF (cỡ cửa sổ): tuỳ chọn này không có
tính bắt buộc. Cả hai phía phải gửi tuỳ chọn cỡ cửa sổ trong đoạn SYN để cho phép cỡ
cửa sổ trong định hướng. Cỡ cửa sổ mở rộng theo xác định của cửa sổ TCP tới 32 bit.
Định nghĩa kích cỡ cửa sổ 32 bit bằng cách sử dụng kích cỡ cửa sổ 16 bit và hệ số tỉ
lệ. Kích thước thật của cửa sổ bằng kích thước cửa sổ chứa trong phần tiêu đề nhân
với 2x, với x là độ lớn (length) trong trường tùy chọn. Tuỳ chọn này được quyết định
trong giai đoạn thiết lập kết nối. Không có cách nào để thay đổi nó sau khi kết nối đã
thiết lập.
Hình 1.6 Tùy chọn Window Scale Factor
• Tuỳ chọn SACK: Chọn báo nhận (SACK) cho phép máy thu báo tin cho máy
phát về tất cả các đoạn mà máy thu đã nhận thành công. Theo đó, máy gửi sẽ chỉ gửi
lại những đoạn bị mất. Nếu số đoạn mà bị mất từ SACK lớn, tuỳ chọn SACK sẽ cũng
lớn. Do đó, số khối tùy chọn SACK có thể báo cáobị giới hạn tới 4. Để giảm con số
này, tuỳ chọn SACK nên sử dụng cho nhiều dữ liệu đã nhận trong những khoảng thời
gian lân cận.
Lã Lệ Thủy – D04VT2 12

Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
Hình 1.7 Tùy chọn SACK
• Tuỳ chọn Timestamp: Tùy chọn này được máy phát gửi đi. Khi máy thu nhận
được gói, nó lưu giá trị của trường này. Sau đó nó lại điền giá trị trường này vào
trường timestamp trong phân đoạn xác nhận. Khi bên phát nhận được gói xác nhận nó
lấy thời gian hiện tại trừ đi thời gian chứa trong đoạn xác nhận để biết được thời gian
đi của một gói tin trong mạng.
Hình 1.8 Tùy chọn Timestamp
• Các tùy chọn đệm: Đây là loại tùy chọn một byte dùng để căn lề cho dữ liệu
hoặc các tùy chọn khác trong phần tiêu đề.
Dữ liệu: Trường cuối cùng không thuộc về header. Giá trị của trường này là thông
tin dành cho các tầng trên (trong mô hình 7 lớp OSI). Thông tin về giao thức của tầng
trên không được chỉ rõ trong phần header mà phụ thuộc vào cổng được chọn.
1.1.3 Giao thức UDP
UDP là một giao thức truyền thông phi kết nối và không tin cậy, được dùng thay thế
cho TCP ở trên IP theo yêu cầu của ứng dụng. UDP có trách nhiệm truyền các thông báo
từ tiến trình-tới-tiến trình nhưng không cung cấp các cơ chế giám sát, quản lý và phát lại.
UDP cũng cung cấp cơ chế gán và quản lý các số cổng để định danh duy nhất cho
các ứng dụng chạy trên một trạm của mạng [6]. Do ít chức năng phức tạp nên UDP có
xu thế hoạt động nhanh hơn so với TCP. Nó thường được dùng cho các ứng dụng
không đòi hỏi độ tin cậy cao trong giao vận như: giao thức truyền tập tin thường
(TFTP), bộ trợ giúp tên miền tên hệ thống, cuộc gọi tiến hành thủ tục từ xa, sử dụng
Lã Lệ Thủy – D04VT2 13
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
bởi hệ thống tệp tin mạng (NFS) “gọi thủ tục từ xa (RFC)”, giao thức quản lý mạng
đơn giản (SNMP), giao thức truy nhập thư mục đơn giản (LDAP). Khuôn dạng của
UDP datagram được mô tả trong hình 1.9 với các vùng tham số đơn giản hơn nhiều so
với khuôn dạng của TCP datagram.
Hình 1.9 Định dạng của UDP datagram
Các trường trong tiêu đề UDP datagram gồm:

• Cổng nguồn: Trường 16 bít này xác định số cổng của chương trình ứng dụng
gửi.
• Cổng đích: Trường 16 bít này xác định số cổng của chương trình ứng dụng
nhận.
• Độ dài tổng: Trường 16 bít này xác định độ dài tổng (cả tiêu đề và dữ liệu) của
UDP datagram.
• Tổng kiểm tra: Trường 16 bít này chứa mã kiểm tra lỗi (theo phương pháp
CRC) cho toàn bộ phân đoạn (cả tiêu đề và dữ liệu).
1.2 Điều khiển luồng và tránh tắc nghẽn trong mạng
Trong quá trình truyền, thông tin thường xảy ra hiện tượng nghẽn tại các nút mạng
do lưu lượng bên ngoài vào vượt quá khả năng xử lý của mạng. Khi nghẽn xảy, dữ
liệu bị trễ được lưu lại trong hàng đợi hay bộ đêm (buffer) của các nút chuyển mạch.
Chính hiện tượng này là nguyên nhân gây ra trễ trong quá trình truyền tin và có thể
dẫn đến bị mất một số thông tin khi phía phát không xác định được trạng thái của dữ
liệu đã được gửi đi. Nếu lượng thông tin vẫn được đưa hàng đợi vào một cách liên tục
mà mạng không xử lý kịp thì các gói tin không còn chỗ để lưu lại trong hàng đợi và sẽ
bị xóa. Khi đó các gói tin bị xóa này phải được phát lại, dẫn đến lãng phí khả năng sử
dụng mạng. Bên cạnh đó lượng thông tin áp đặt lên mạng quá lớn sẽ làm giảm tốc độ
xử lý của mạng và gây trễ trong quá trình truyền tin. Để tránh hiện tượng nghẽn “cổ
Lã Lệ Thủy – D04VT2 14
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
chai” như trên, cần có phương pháp để giảm bớt lượng thông tin đưa khi trạng thái
thông qua của mạng chưa sẵn sàng.Việc áp dụng một phương pháp nào đó để điều
khiển lưu lượng mạng không có nghĩa là đảm bảo mạng không bị trễ, cho dù đó là
dịch vụ mạng thời gian thực (Real- Time) đi chăng nữa. Tuy nhiên với một thuật toán
điều khiển luồng và điều khiển tắc nghẽn sẽ đảm bảo một độ trễ cho phép đối với từng
dịch vụ. Đây chính là chức năng của thuật toán điều khiển luồng và điều khiển tắc
nghẽn.
Điều khiển luồng (Flow Control) cho phép điều chỉnh phù hợp số lượng các gói
đang được truyền trên mạng giữa nguồn và đích, nói cách khác là sự phối hợp tốc độ

truyền của thiết bị phát với dung lượng bộ đệm của thiết bị thu và của các nút trung
chuyển. Cơ chế điều khiển luồng được thiết lập với ba mục đích sau:
• Thiết lập sự cân đối giữa việc hạn chế người dùng và giữ tốc độ truyền tin
trung bình ở mức hợp lý
• Đảm bảo tính công bằng giữa những người cùng truy cập mạng trong
trường hợp áp dụng điều kiện hạn chế một phần thông tin truy cập
• Duy trì khả năng thông qua của mạng, không để xảy ra hiện tượng nghẽn
mạng hoàn toàn
Điều khiển tắc nghẽn (Congestion Control) là tập hợp phân bố các thuật toán để
chia đều tài nguyên mạng sao cho nó phù hợp với sự thay đổi dung lượng và đáp ứng
được như cầu cho nguồn tài nguyên để chặn tắc nghẽn làm sập mạng.
Chúng ta cần phân biệt giữa điều khiển luồng và điều khiển tránh tắc nghẽn. Điều
khiển luồng là quy định quản lý tốc độ truyền dữ liệu giữa hai đầu kết nối (Node) của
mạng, trong khi điều khiển tắc nghẽn là điều khiển luồng dữ liệu khi tắc nghẽn xảy ra.
1.2.1 Điều khiển tránh nghẽn của TCP
TCP là một giao thức đầu cuối tới đầu cuối hoạt động trên nền Internet không
đồng nhất. TCP không biết trước được các đặc tính của mạng, do đó nó phải điều
chỉnh trạng thái của nó theo trạng thái hiện tại của mạng. TCP được hỗ trợ khả năng
điều khiển tắc nghẽn. Điều khiển tắc nghẽn bảo đảm rằng TCP không gửi dữ liệu ở
tốc độ lớn hơn tốc độ mà mạng có thể xử lý. Tốc độ xấp xỉ của bên gửi là:
Rate = Wc/RTT (bytes/s)
Ở đó Wc là cửa sổ điều khiển chống nghẽn, Wc được thay đổi khi nhận thấy có
nghẽn trên mạng.
Ba thành phần chính của giải thuật điều khiển tắc nghẽn trong TCP gồm có:
AIMD, slow-start và thận trọng gửi gói tin sau các sự kiện timeout. Slow-start là giai
Lã Lệ Thủy – D04VT2 15
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
đoạn đầu sau khi thiết lập kết nối. Nó khởi tạo Wc= 1MSS (maximum segment size)
và sau đó tăng tốc độ truyền một cách nhanh chóng: gấp đôi Wc sau mỗi RTT cho đến
khi gặp sự kiện mất gói đầu tiên. AIMD [7] thực hiện giảm Wc xuống còn một nửa

sau khi có sự kiện mất gói và tăng Wc lên 1 MSS mỗi RTT khi không có sự kiện mất
gói.
Nhìn chung, điều khiển chống nghẽn trong TCP được thực hiện như sau: khởi tạo
cập nhật ngưỡng tắc nghẽn (CT - congestion threshold) và tùy thuộc vào Wc (cửa sổ
điều khiển chống nghẽn) lớn hay nhỏ hơn CT, lưu lượng TCP được điều khiển theo
hai pha như sau:
+ pha 1: Pha bắt đầu chậm (Wc < CT):
- Wc tăng gấp đôi sau mỗi RTT
- Các gói được truyền vào kênh.
+ Pha 2: Pha chống tắc nghẽn (Wc>CT): thực hiện theo thuật toán AIMD
- Wc tăng tuyến tính
- Đường truyền xảy ra tắc nghẽn, giảm Wc xuống còn một nửa
- Cập nhật lại CT (khi có sự kiện timeout, CT được đặt bằng một nửa giá trị của
Wc ngay trước khi xảy ra sự kiện mất gói)
Điều khiển chống nghẽn trong TCP có những nhược điểm cơ bản là:
- Thông tin phản hồi là ẩn và vì vậy cửa sổ gửi luôn giảm đi một nửa khi xảy ra
tắc nghẽn là không thực sự hiệu quả.
- TCP không chia sẻ thông tin điều khiển, vì vậy các kết nối cùng một thời điểm
đến cùng một đích (một trường hợp thường xảy ra đối với các lưu lượng web)
sẽ phải cạnh tranh, thay vì phối hợp để sử dụng băng thông mạng một cách hợp
lý.
Do đó điều khiển chống nghẽn của TCP không đáp ứng được đặc biệt trong môi
trường nhiều lỗi như môi trường vô tuyến, vệ tinh,…thậm chí thông lượng không thể
chấp nhận được. Đối với các mạng đa dịch vụ, thuật toán chống tắc nghẽn của TCP
không đem lại tính bình đẳng cần thiết cho các ứng dụng. Đối với các mạng có lưu
lượng biến đổi động, biến đổi nhanh, điều khiển chống tắc nghẽn của TCP tỏ ra bất ổn
định và không hội tụ.
Cơ chế điều khiển tắc nghẽn của TCP đã không ngừng được cải tiến và phát triển
mà khởi đầu là TCP Reno. Khi những thay đổi đột ngột về tốc độ của TCP trở thành
Lã Lệ Thủy – D04VT2 16

Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
vấn đề quan trọng đối với sự phát triển của cơ chế điều khiển tắc nghẽn end-to-end
cho các ứng dụng luồng đa phương tiện, một giải pháp được đưa ra đó là cơ chế điều
khiển tắc nghẽn dựa trên biểu thức. Cơ chế này đảm bảo điều khiển nghẽn thông suốt
cho các loại lưu lượng đó với những ưu điểm: độ mịn về tốc độ, đảm bảo tính bình
đẳng, thân thiện với TCP.
1.2.2 Giao thức điều khiển tốc độ tránh nghẽn TFRC (TCP-Friendly Rate
Control)
TFRC [1,2] là một cơ chế điều khiển tắc nghẽn dựa vào biểu thức. Trong khi điều
khiển nghẽn AIDM được thực hiện tương ứng với một dấu hiệu tắc nghẽn, điều khiển
tắc nghẽn dựa vào biểu thức là một biểu thức điều khiển mà đưa ra tốc độ gửi tối đa
chấp nhận được như một hàm của tỉ lệ sự kiện mất gói trong khoảng thời gian lân cận.
Thiết bị phát đáp ứng tốc độ gửi của nó, được hướng dẫn bởi biểu thức điều khiển
này, tương ứng với thông tin phản hồi từ máy thu. Đối với lưu lượng mà cùng chạy
trong Internet best-effort với TCP, biểu thức điều khiển thích hợp cho điều khiển tắc
nghẽn dựa trên biểu thức là một hàm tương ứng với TCP. Biểu thức này có đặc điểm
là cung cấp tốc độ gửi bằng tốc độ gửi trạng thái ổn định của TCP như một hàm của
RTT và tỉ lệ sự kiện mất gói trong trạng thái ổn định.
Điều khiển tắc nghẽn dựa trên biểu thức không tìm kiếm và sử dụng băng thông
sẵn có một cách “hung hăng” nhưng duy trì một tốc độ gửi tương đối ổn định trong
khi vẫn đáp ứng được tắc nghẽn. Để thực hiện được điều này, điều khiển tắc nghẽn
dựa trên biểu thức thực hiện cân bằng việc hạn chế sử dụng tối đa băng thông có sẵn
theo cách thức của TCP. Do đó, có một vài nguyên tắc thiết kế cho điều khiển tắc
nghẽn dựa trên biểu thức có thể thấy rõ khi so với các hoạt động của TCP.
• Không tìm kiếm một cách “hung hăng” ngoài băng thông sẵn có. Điều này có
nghĩa là tăng tốc độ gửi chậm hơn tương ứng với việc giảm tỉ lệ sự kiện mất
gói.
• Không giảm tốc độ gửi xuống 2 lần khi xuất hiện một sự kiện mất gói đơn. Tuy
nhiên, giảm tốc độ gửi đi một nửa khi có vài sự kiện mất gói xuất hiện liên tục.
Các ưu điểm thiết kế truyền thống cho điều khiển tắc nghẽn dựa trên biểu thức cho

các lưu lượng unicast gồm có:
• Máy thu gửi bản tin phản hồi lại cho máy phát ít nhất một lần mỗi RTT nếu nó
nhận được các gói trong khoảng thời gian đó.
• Nếu máy phát không nhận được phản hồi sau một vài RTT, máy phát sẽ giảm
tốc độ gửi của nó và cuối cùng ngừng hoàn toàn việc gửi.
Lã Lệ Thủy – D04VT2 17
Đồ án tốt nghiệp đại học Chương I: Tổng quan về TCP/IP và điều khiển nghẽn
TFRC là một cơ chế điều khiển tắc nghẽn đặc trưng cho kiểu điều khiển dựa vào
biểu thức, được thiết kế cho các luồng unicast hoạt động trong môi trường Internet và
hoạt động cùng với các lưu lượng TCP. Cơ chế này có thể được sử dụng trong một
giao thức truyền tải như RTP, UDP hay DCCP. TFRC hoạt động bình đẳng một cách
hợp lý về băng thông với các luồng TCP, ở đó một luồng được gọi là “bình đẳng hợp
lý” nếu tốc độ gửi của nó là tương đương với tốc độ gửi của một luồng TCP dưới các
điều kiện như nhau. Tuy nhiên, TFRC có sự thay đổi thông lượng theo thời gian thấp
hơn so với TCP, điều này giúp nó phù hợp hơn với các ứng dụng như điện thoại hoặc
luồng đa phương tiện ở đó một tốc độ gửi trơn mịn là điều quan trọng.
Do có thông lượng trơn mịn hơn TCP khi hoạt động bình đẳng về băng thông nên
TFRC đáp ứng chậm hơn TCP đối với việc thay đổi băng thông có sẵn. Do đó TFRC
chỉ nên được sử dụng khi ứng dụng có yêu cầu về thông lượng trơn mịn đặc biệt là
tránh việc giảm một nửa tốc độ gửi của TCP khi có một gói bị rớt. Đối với các ứng
dụng đơn giản chỉ yêu cầu truyền càng nhiều dữ liệu nhất có thể trong một thời gian
ngắn nhất thì chúng ta đề xuất sử dụng TCP hoặc nếu không yêu cầu độ tin cậy có thể
sử dụng cơ chế điều khiển tắc nghẽn AIMD với các tham số tương tự cho TCP.
TFRC được thiết kế cho các ứng dụng sử dụng kích thước gói cố định và thay đổi
tốc độ gửi của chúng theo gói/s khi có tắc nghẽn. TFRC là một cơ chế phía thu với các
tính toán thông tin điều khiển tắc nghẽn ( ví dụ tỉ lệ sự kiện mất gói) trong dữ liệu bên
thu hơn là trong dữ liệu bên phát. Nó cũng phù hợp hơn với một ứng dụng mà ở đó
máy phát là một server lớn điều khiển nhiều kết nối cùng một lúc.
Kết luận : TCP/IP là mô hình được sử dụng phổ biến trên mạng máy tính mà điển
hình là mạng Internet. Các lưu lượng trên mạng chủ yếu sử dụng hai giao thức truyền

tải là TCP và UDP trong đó TCP được sử dụng rộng rãi hơn vì nó có cơ chế điều
khiển tắc nghẽn, truyền lại và khôi phục lỗi nhanh. Cùng với sự phát triển không
ngừng của các ứng dụng đa phương tiện thời gian thực, vấn đề tắc nghẽn mạng cũng
xảy ra thường xuyên hơn. Để giải quyết vấn đề này, giải pháp tăng tài nguyên mạng
(tăng các nút mạng, tăng đường truyền, tăng băng thông, ) là khó thực hiện vì chi phí
lớn và không thể thực hiện thường xuyên. Do đó giải pháp phát triển các thuật toán,
giao thức điều khiển tắc nghẽn với chi phí nhỏ hơn, không ảnh hưởng đến phần cứng
mạng là phương án khả thi, thích hợp với điều kiện mạng hiện nay. Hiện nay thuật
toán điều khiển tắc nghẽn của TCP còn tồn tại nhiều điểm không phù hợp với các ứng
dụng đa phương tiện thời gian thực. Mỗi khi xảy ra tắc nghẽn, TCP giảm tốc độ gửi đi
một nửa làm cho tốc độ gửi của TCP không đồng đều đặc biệt trong môi trường tắc
nghẽn nghiêm trọng dẫn đến hoạt động không hiệu quả. Một thuật toán mới được đưa
ra đó là điều khiển tắc nghẽn dựa trên biểu thức TFRC, ở đó tốc độ gửi là một hàm
Lã Lệ Thủy – D04VT2 18

×