Tải bản đầy đủ (.docx) (39 trang)

tiểu luận môn học truyền thông không dây đề tài multipath TCP

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 (635.58 KB, 39 trang )

ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN

Mơn học: TRUYỀN THƠNG KHƠNG DÂY
Đề tài: Multipath TCP
Giảng viên hướng dẫn:
Mai Xuân Phú
Sinh viên thực hiện:
Lê Hoàng Khánh
Cao Trần Hữu Lộc
Trương Quang Lân


Đồ án cuối kì

MỤC LỤC

Trang 2


Đồ án cuối kì

DANH MỤC TỪ VIẾT TẮT
TCP

Transmission Control Protocol

IP

Internet Protocol


UDP

User Datagram Protocol

OSI

Open Systems Interconnection

MPTCP

Multi path Transmission Control Protocol

IETF

Internet Engineering Task Force

PBX

Private Branch Exchange

NAT

Network address translation

IANA

Internet Assigned Numbers Authority

Trang 3



Đồ án cuối kì

PHẦN MỞ ĐẦU
Hiện nay hạ tầng Internet đang thay đổi rất nhiều so với thời điểm ban đầu lúc nó
ra đời. Khi giao thức TCP/IP được thiết kế, các thiết bị đầu cuối chỉ có một giao diện
kết nối(single interface). Ngày nay, hầu hết phương tiện kết nối internet đều có nhiều
hơn một giao diện, điển hình là những chiếc điện thoại thông minh được trang bị với
cả 3G và Wi-Fi. Người dùng mong đợi rằng việc sử dụng những thiết bị sẽ tăng khả
năng dự phòng cũng như hiệu năng thực hiện nhưng thực tế không phải luôn luôn như
vậy. Hơn 95% tổng lưu lượng truy cập Internet vẫn còn được điều khiển bởi giao thức
TCP và TCP liên kết mỗi kết nối với một giao diện duy nhất. Điều này có nghĩa rằng
bản thân giao thức TCP không hiệu quả và trong suốt trong việc sử dụng các giao diện
có sẵn trên một đầu cuối multihomed.
Vấn đề multihoming nhận được rất nhiều sự chú ý trong cộng đồng nghiên cứu
và IETF trong những năm qua. Nhiều giải pháp đã được đưa ra, tuy nhiên chúng vẫn
cịn ở giai đoạn thử nghiệm và khơng chắc rằng các giải pháp trên sẽ được triển khai
rộng rãi. Các giải pháp ở tầng Transport cũng đã được phát triển, đầu tiên là mở rộng
TCP. Tuy nhiên, phần mở rộng này chưa bao giờ được triển khai. Giao thức SCTP
(Stream Control Transmission Protocol) được thiết kế với mục đích multihoming. Một
số mở rộng của giao thức SCTP cho phép các đầu cuối truyền thông tin trên nhiều
đường dẫn cùng một lúc. Mặc dù được thực thi trong một số hệ điều hành, giao thức
SCTP vẫn không được sử dụng rộng rãi bên cạnh các ứng dụng cụ thể. Các hạn chế
chính của giao thức SCTP trên mạng Internet tồn cầu đầu tiên là việc các ứng dụng
phải thay đổi để có thể sử dụng SCTP. Thứ hai, một số khâu trong mạng truyền thông
chẳng hạn như NAT hoặc Firewall không hiểu giao thức SCTP và ngăn chặn tất cả các
gói tin SCTP.
Trong những năm qua, nhóm nghiên cứu giao thức Multipath TCP(MP TCP) của
tổ chức IETF đã và đang phát triển các phần mở rộng đa đường dẫn ở giao thức TCP,
cho phép các đầu cuối sử dụng nhiều đường dẫn thông qua nhiều giao diện, để thực

hiện truyền các gói tin trên một kết nối duy nhất. Đây có lẽ là phần mở rộng đầy tham
vọng nhất với TCP được tiêu chuẩn hóa trong IETF.

Trang 4


Đồ án cuối kì

CHƯƠNG I: TỔNG QUAN VỀ GIAO THỨC TCP
1.1 Giới thiệu TCP
Transmission control protocol (TCP) là một giao thức truyền thơng mạng được
thiết kế để gửi các gói dữ liệu qua Internet. TCP là một trong những giao thức được sử
dụng nhiều nhất trong truyền thông mạng kỹ thuật số và là một phần của bộ giao thức
Internet, thường được gọi là TCP/IP. TCP là giao thức nằm ở tầng 3 trong mơ hình này.
Cịn trong mơ hình lý thuyết OSI thì TCP là giao thức nằm ở tầng 4..
TCP là một giao thức hướng kết nối. TCP đảm bảo kết nối end-to-end giúp
chuyển giao dữ liệu giữa các nút riêng biệt Trước khi truyền dữ liệu, TCP tạo ra một
kết nối giữa các nút nguồn và đích và giữ nó sống cho đến khi kết thúc.
TCP cung cấp khả năng chống tắc nghẽn, nghĩa là giao thức có khả năng thích
ứng với tình trạng hiện tại của mạng để điều chỉnh lượng dữ liệu gửi đi cho phù hợp.
TCP cung cấp kết nối full-duplex, nghĩa là có thể đồng thời nhận và gửi dữ liệu
cùng một lúc.
1.2 Cấu trúc TCP Segment
TCP truyền dữ liệu theo dòng byte, chia nó ra thành nhiều phần và thêm vào một
tiêu đề TCP (TCP header) tạo ra một phân đoạn TCP (TCP segment). Sau đó các TCP
segment được đóng gói vào IP datagram và trao đổi với các peer khác.
Thuật ngữ TCP segment dùng để chỉ Protocol Data Unit (PDU) ở tầng 4
Transport trong mơ hình OSI, cịn ở tầng 3 thì PDU được gọi là packet, ở tầng 2 gọi là
frame.
Một TCP segment bao gồm một segment header và một phần dữ liệu. TCP

header chứa 10 trường bắt buộc, và một trường tùy chọn mở rộng.
Phần dữ liệu theo sau header. Nội dung của nó là các dữ liệu payload được mang
cho ứng dụng. Chiều dài của phần dữ liệu khơng được quy định trong TCP segment
header. Nó có thể được tính bằng cách lấy tổng chiều dài IP datagram trừ đi tổng chiều
dài TCP header và IP header.

Trang 5


Đồ án cuối kì
a) TCP header

Hình 1-1: Cấu trúc các trường trong phần TCP header.

Ý nghĩa các trường của TCP header:


Cổng gửi (Source port) - 16 bits: xác định cổng gửi.



Cổng nhận (Destination port) - 16 bits: xác định cổng nhận.



Số thứ tự (Sequence number) - 32 bits: có hai vai trị:



Nếu cờ SYN (SYN flag) được bật(1), thì đây là số thứ tự ban đầu (init sequence

number được sinh ra bởi hệ điều hành). Số thứ tự của byte dữ liệu tiếp theo bằng với
số xác nhận vừa nhận được và bằng với số thứ tự trước đó cộng thêm 1.



Nếu cờ SYN là tắt (0), thì đây là số thứ tự tích lũy của byte dữ liệu đầu tiên của
segment này cho phiên hiện tại.



Acknowledgment number (32 bits): nếu cờ ACK (ACK flag) được bật thì giá trị của
trường này là số thứ tự tiếp theo mà bên nhận mong đợi. Điều này thừa nhận đã nhận
tất cả các byte trước đó (nếu có). Các ACK đầu tiên dùng để xác nhận số thứ tự ban
đầu của bên vừa gửi, khơng có dữ liệu.



Data offset (4 bits): 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 (3 bits): để sử dụng trong tương lai và cần được thiết lập về 0.



Flags (9 bits) (hay Control bits):




URG: Cờ cho trường Urgent pointer



ACK: Cờ cho trường Acknowledgement
Trang 6


Đồ án cuối kì


PSH: Hàm Push



RST: Thiết lập lại đường truyền



SYN: Đồng bộ lại số thứ tự



FIN: Khơng gửi thêm số liệu


Window size (16 bits): kích thước của cửa sổ nhận, xác định số lượng các đơn
vị kích thước cửa sổ (theo mặc định, byte) mà người gửi của phân khúc này
hiện đang sẵn sàng nhận (xem Flow control và Window Scaling).




Checksum (16 bits): 16 bit của trường checksum được dùng để kiểm tra lỗi
của header và data.



Urgent pointer (16 bits): 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.



Options (Variable 0–320 bits, divisible by 32).
b) Phần dữ liệu:

Hình 1-2: TCP pseudo-header

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.

Trang 7


Đồ án cuối kì
1.3 Quá trình hoạt động của giao thức TCP

Hình 1-3: Sơ đồ trạng thái của TCP – phiên bản đơn giản hóa


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 ý các trạng thái khác nhau của một
socket:


LISTEN: (máy chủ) đại diện chờ đợi một yêu cầu kết nối từ bất kỳ TCP từ xa và cổng.



SYN-SENT: (client) đại diện chờ đợi một yêu cầu kết nối phù hợp sau khi đã gửi một
yêu cầu kết nối.

Trang 8


Đồ án cuối kì


SYN-RECEIVED: (máy chủ) đại diện chờ đợi một xác nhận thừa nhận yêu cầu kết nối
sau khi cả hai nhận được và gửi một yêu cầu kết nối.



ESTABLISHED: (cả máy chủ và máy khách) đại diện cho một kết nối mở, dữ liệu
nhận được có thể được chuyển cho người sử dụng. Các trạng thái bình thường trong
giai đoạn truyền dữ liệu của kết nối.




FIN-WAIT-1: (cả máy chủ và máy khách) đại diện chờ đợi một yêu cầu chấm dứt kết
nối từ TCP từ xa hoặc xác nhận yêu cầu chấm dứt kết nối gửi trước đây.



FIN-WAIT-2: (cả máy chủ và máy khách) đại diện chờ đợi một yêu cầu chấm dứt kết
nối từ TCP từ xa.



CLOSE-WAIT: (cả máy chủ và máy khách) đại diện chờ đợi một yêu cầu chấm dứt kết
nối từ người dùng địa phương.



CLOSING: (cả máy chủ và máy khách) đại diện chờ đợi một xác nhận yêu cầu chấm
thúc kết nối từ TCP từ xa.



LAST-ACK: (cả máy chủ và máy khách) đại diện chờ đợi xác nhận yêu cầu chấm dứt
kết nối trước đó gửi cho TCP từ xa (trong đó bao gồm xác nhận yêu cầu chấm dứt kết
nối của nó).



TIME-WAIT: (hoặc máy chủ hoặc máy khách) đại diện chờ đợi đủ thời gian để chắc

chắn là TCP từ xa đã nhận được xác nhận yêu cầu chấm dứt kết nối của nó. [Theo RFC
793 một kết nối có thể ở lại trong TIME-WAIT tối đa là bốn phút được biết đến như
một MSL (đoạn tuổi thọ tối đa).]



CLOSED: (cả máy chủ và máy khách) đại diện khơng có trạng thái kết nối ở tất cả.
a) Thiết lập kết nối

Trang 9


Đồ án cuối kì

Hình 1-4: Sơ đồ thiết lập kết nối

Hình 1-5: Q trình thiết lập kết nối 2 phía

Để 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). Đầu tiên Server mở cổng và đợi Client kết nối. Quy trình bắt tay 3 bước
xảy ra như sau:
1. Client gửi gói tin SYN (gói tin TCP) tới server yêu cầu thiết lập kết nối. Trong gói tin

này, tham số sequence number được gán cho một giá trị ngẫu nhiên X (X ở đây là init
sequence number của máy client, init sequence number được tạo ra từ thuật toán của
riêng mỗi hệ điều hành).
2. Server hồi đáp bằng cách gửi lại phía client gói tin SYN-ACK, trong gói tin này, tham

số acknowledgment number được gán giá trị bằng X + 1, tham số sequence number
được gán ngẫu nhiên một giá trị Y (Y ở đây là init sequence number của máy server).

3. Để hoàn tất quá trình bắt tay ba bước, client tiếp tục gửi tới server bản tin ACK với

sequence number được gán cho giá trị bằng X + 1 còn tham số acknowledgment
number được gán giá trị bằng Y + 1.
Kết nối được thiết lập.
Trang 10


Đồ án cuối kì
b) Truyền dữ liệu

Một số đặc điểm cơ bản của TCP để phân biệt với UDP:


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



Kiểm soát luồng: giới hạn tốc độ bên gửi truyền dữ liệu để đảm bảo truyền đáng tin
cậy. Bên nhận liên tục báo bên gửi có thể được nhận bao nhiêu dữ liệu (điều khiển bởi
các cửa sổ trượt). Khi bộ đệm bên nhận đầy, thông điệp acknowledgment tiếp theo để
giá trị window size về 0 để ngăn việc truyền dữ liệu để cho dữ liệu trong bộ đệm được
xử lý.




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

c) Kết thúc kết nối

Hình 1-6: Quá trình kết thúc kết nối

Để kết thúc kết nối hai bên sử dụng bắt tay bốn bước, mỗi bên của kết nối kết
thúc một cách độc lập. Khi một thiết bị đầu cuối muốn dừng lại nửa chừng, nó gửi một
gói FIN, đầu kia xác nhận lại bằng gói ACK. Vì vậy, một q 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.
1.4 Điều khiển luồng trong TCP
Trong giao tiếp dữ liệu, điều khiển luồng là quá trình quản lý tỉ lệ truyền tải dữ
liệu giữa hai node để ngăn chặn bên gửi nhanh làm tràn bộ đệm bên nhận chậm. Nó
Trang 11


Đồ án cuối kì
cung cấp một cơ chế cho bên nhận để kiểm sốt tốc độ truyền tải, do đó các nút nhận
không bị quá tải với các dữ liệu từ node truyền. Điều khiển luồng nên được phân biệt
với điều khiển tắc nghẽn, được sử dụng để điều khiển luồng dữ liệu khi tắc nghẽn đã
thực sự xảy ra.

1.4.1

Stop-and-wait

Điều khiển luồng Stop-and-wait là hình thức đơn giản nhất của điều khiển luồng.
Bên nhận cho biết đã sẵn sàng để nhận dữ liệu cho mỗi khung, thông điệp được chia

thành nhiều khung. Bên gửi đợi một ACK sau mỗi khung một khoảng thời gian nhất
định (gọi là thời gian chờ - timeout). Điều đó đảm bảo rằng bên nhận đã nhận được
khung chính xác. Nó sẽ gửi các khung tiếp theo sau khi đã nhận được ACK.

a) Hoạt động
1.

Bên gửi: Truyền một khung duy nhất tại một thời điểm.

2.

Bên nhận: Truyền tin báo nhận (ACK) khi nó nhận được một frame.

3.

Bên gửi: nhận ACK trong thời gian chờ.

4.

Trở lại bước 1.

Nếu một khung hay ACK bị mất trong quá trình truyền thì nó sẽ được truyền lại
bởi bên gửi. Q trình truyền lại này được gọi là ARQ (yêu cầu lặp lại tự động).
Vấn đề với Stop-and wait là chỉ có một khung hình có thể được truyền đi tại một
thời điểm và thường dẫn đến kênh truyền thiếu hiệu quả cho đến khi nhận được tin báo
nhận của bên gửi là khơng thể truyền tải bất kỳ gói tin mới. Trong thời gian này, cả
bên gửi và kênh là không sử dụng đến.
b) Ưu điểm và nhược điểm của Stop-and wait
-


Ưu điểm: Lợi thế duy nhất của phương pháp này là sự đơn giản của nó.

-

Nhược điểm: Bên gửi cần phải chờ đợi ACK sau mỗi khung nó truyền đi. Đây là
nguyên nhân của sự kém hiệu quả.
Stop and wait cũng thiếu hiệu quả khi phải truyền gửi lâu hơn. Truyền lâu hơn là
cơ hội cho nhiều khả năng lỗi trong giao thức này.

1.4.2

Sliding Window

Thay vì chỉ truyền đi một khung tại một thời điểm (simplex), giao thức cửa sổ
trượt cho phép bên gởi có thể gởi đi nhiều khung.
Trang 12


Đồ án cuối kì
Giao thức này sử dụng một cửa sổ để cho phép bên gởi theo dõi các khung mà nó
được phép gởi đi và các khung mà nó đang chờ báo nhận, gọi là cửa sổ gởi (Sending
Windows). Một cửa sổ khác để bên nhận theo dõi các khung mà nó được phép nhận,
gọi là cửa sổ nhận (Receiving Windows).
Cấu trúc của cửa sổ được mô tả như sau:

Hình 1-7: Cửa sổ trượt

Phần tơ đen là phạm vi của cửa sổ gồm có cửa trước và cửa sau cùng di chuyển
theo một chiều.
Kích thước của cửa sổ là chiều của cung giới hạn từ cửa sau đến cửa trước.

Kích thước của cửa sổ có thể thay đổi. Khi cửa trước di chuyển, cửa sổ được mở
rộng ra. Ngược lại khi cửa sau di chuyển, kích thước của cửa sổ bị thu hẹp lại và nó
làm cho cửa sổ thay đổi vị trí, trượt / quay quanh một tâm của vịng trịn.
Kích thước nhỏ nhất của cửa số là 0, khi đó cửa trước và cửa sau nằm cùng một
vị trí. Giả sử, có n=2 k vị trí cho các cửa, khi đó kích thước tối đa của cửa sổ là n-1
(khơng là n để phân biệt với kích thước là 0).
Khi kích thước của cửa sổ trượt là 1, ta có giao thức stop-and-wait.
Giả sử ta dùng k bit để đánh số thứ tự cho các khung. Ta sẽ có 2 k khung, đánh số
từ 0 đến 2k-1. Khi đó cửa sổ trượt sẽ được chia thành 2k vị trí tương ứng với 2k khung.
Đối với cửa sổ gởi, các vị trí nằm trong cửa sổ trượt biểu hiện số thứ tự của các
khung mà bên gởi đang chờ bên nhận báo nhận. Phần bên ngoài cửa sổ là các khung
có thể gởi tiếp. Tuy nhiên phải đảm bảo rằng, cửa sổ gởi khơng được vượt q kích
thước tối đa của cửa sổ.
Đối với bên nhận, các vị trí nằm trong cửa sổ biểu hiện số thứ tự các khung mà
nó đang sẳn sàng chờ nhận.
Kích thước tối đa của cửa sổ biểu thị dung lượng bộ nhớ đệm của bên nhận có
thể lưu tạm thời các gói tin nhận được trước khi xử lý chúng. Giả sử bên nhận có một
Trang 13


Đồ án cuối kì
vùng bộ nhớ đệm có khả năng lưu trữ 4 khung nhận được. Khi đó, kích thước tối đa
của cửa sổ sẽ là 4.
Vấn đề kế tiếp cần phải quan tâm là bên nhận sẽ làm gì nếu khung bị lỗi.
Giải pháp đơn giản là truyền lại tất cả các khung bắt đầu từ khung thứ N bị lỗi.
Nếu có những khung khác được nhận trong khoảng thời gian này thì chúng đều bị bỏ
qua. Đây gọi là giao thức Go-Back-N.
Giải pháp thứ hai là chỉ truyền lại những khung bị lỗi, và chờ đến khi nó được
gởi lại trước khi tiếp tục việc gởi tin, gọi là giao thức Selective Repeat.
Cơ chế phát lại theo nhóm(Go-Back-N):

Giao thức Go-Back-N thì rất đơn giản. Khi một khung bị lỗi. Bên nhận bỏ qua
khung. Vì khơng một báo nhận nào gởi về cho bên nhận nên sự kiện quá thời gian xảy
ra, bên gởi phải gởi lại khung bị lỗi và tồn bộ các khung phía sau nó.
Ví dụ:

Hình 1-8: Giao thức Go-Back-N

Trong ví dụ trên, bên nhận phát hiện ra khung số 2 bị lỗi nó bỏ qua các khung
sau đó (3,4,5,6,7,8), chỉ chờ nhận lại khung số 2. Phía bên gởi chờ báo nhận từ bên
nhận cho đến khi quá thời gian, nó sẽ thực hiện gởi lại các khung 2, 3, 4, 5, 6, ....
Cơ chế phát lại có lựa chọn(Selective repeat)
Trong giao thức này, khung bị lỗi bị bỏ đi, nhưng các khung nhận tốt sau đó đều
được lưu lại tạm thời trong vùng nhớ đệm. Khi quá thời gian, bên gởi chỉ gởi lại khung
cũ nhất chưa được báo nhận. Nếu khung này đến nơi chính xác, bên nhận có thể
chuyển lên tầng mạng tất cả các khung đã được lưu vào bộ nhớ đệm theo đúng thứ tự.
Trong giao thức này, bên nhận sử dụng khung Báo không nhận NAK (Negative
Acknowledge) khi phát hiện ra khung bị lỗi, ví dụ lỗi CRC, sai thứ tự gói tin. NAK sẽ
Trang 14


Đồ án cuối kì
được gởi về bên nhận trước khi sự kiện quá thời gian báo nhận của khung bị lỗi xảy ra.
Nhờ đó tăng được hiệu xuất truyền tin.

Hình 1-9: Giao thức Selective Repeat với cửa sổ trượt lớn hơn 1

Trong ví dụ trên các khung 0, 1 được nhận tốt và đã được báo nhận, còn khung số
2 thì bị lỗi trên đường truyền. Khi khung số 3 đến, tầng liên kết dữ liệu phát hiện lỗi về
số thứ tự khung chờ nhận, vì thế nó gởi khung NAK cho khung số 2 và lưu tạm thời
khung số 3 vào vùng nhớ đệm. Tương tự, các khung 4 và 5 cũng được lưu lại mà chưa

chuyển lên tầng mạng (vì phải chờ nhận khung số 2).
Khi khung NAK 2 đến bên gởi, nó truyền lại ngay khung số 2.
Khi khung số 2 đến bên nhận, nó đã có đủ các khung 2,3,4,5 theo đúng thứ tự vì
thế nó chuyển 4 khung này lên tầng mạng theo một thứ tự đúng đắn. Đồng thời bên
nhận gởi về bên gởi khung ACK 5 để báo rằng đã nhận tốt đến khung số 5.
Trong trường hợp khung NAK2 bị mất, không đến được bên gởi, thì sự kiện quá
thời gian sẽ xảy ra. Khi đó bên gởi cũng chỉ gởi lại khung số 2 mà thôi.
1.5 Điều khiển tắc nghẽn trong TCP
Hiện tại TCP dùng 4 thuật toán liên kết chặt chẽ với nhau là: Slow Start,
Congestion Avoidance, Fast Recovery và Fast Retransmit để điều khiển tắt nghẽn.

Trang 15


Đồ án cuối kì

Hình 1-10: Các thuật tốn điều khiển tắc nghẽn

1.5.1

Slow Start
Nó cịn được gọi là giai đoạn tăng trưởng theo cấp số nhân.
Congestion window (cwnd) được gán bằng 1 MSS (maximum segment size).

Congestion window được gửi tăng theo cấp số nhân cho đến khi mất gói tin hoặc
vượt quá một ngưỡng ssthresh, với ssthresh ở đây là ngưỡng cwnd do TCP quản lý.
Nếu mất gói tin, thuật tốn sẽ đặt lại ngưỡng slow start bằng 1 nửa congestion
window hiện tại và đưa congestion window về 1 MMS.
Nếu cwnd vượt q ngưỡng ssthresh thì thuật tốn bước vào trạng thái
Congestion avoidance.

Nếu nhận được 3 ACK trùng thì bước vào trạng thái Fast Recovery.

1.5.2

Congestion Avoidance
Tăng tuyến tính congestion window 1 MSS sau mỗi RTT.
Nếu nhận được ACK thì cwnd = MSS2/cwnd.

Nếu bị mất gói tin thì đặt lại ngưỡng slow start bằng 1 nửa congestion window
hiện tại và đưa congestion window về 1 MMS và bắt đầu lại Slow Start.
Nếu nhận 3 gói ACK trùng thì giảm cwnd xuống 1 nửa thay vì giảm về 1,
ngưỡng ssthresh sẽ bằng với cwnd lúc này, chuyển sang Fast Recovery.

Trang 16


Đồ án cuối kì

1.5.3

Fast Recovery

Trong trạng thái này, TCP sẽ truyền lại các gói tin bị mất và chờ đợi ACK của
toàn bộ cửa sổ truyền trước khi bước vào Congestion avoidance, ssthresh bằng với
cwnd lúc này.
Nếu khơng có ACK, TCP sẽ đợi timeout và đặt lại ngưỡng bằng một nửa cwnd,
đưa cwnd về 1 MSS, bước vào trạng thái slow start.

1.5.4


Fast Retransmit

Khi bên gửi nhận được 3 gói tin ACK trùng thì nó sẽ chuyển sang trạng thái Fast
Retransmit nghĩa là không cần chờ timeout và bước vào trạng thái Fast Recovery.

Trang 17


Đồ án cuối kì

CHƯƠNG 2: TỔNG QUAN VỀ GIAO THỨC MULTIPATH TCP
2.1.

Nguyên nhân ra đời của MP TCP

Ngày nay, những giao thức hiện tại chủ yếu đều chạy trên nền tảng TCP/IP vốn
chỉ dùng một đường duy nhất để truyền dẫn giữa 2 host. Điều này dẫn đến những hạn
chế trong việc tận dụng tối ưu tài nguyên hệ thống, điều khiển tắc nghẽn và cân bằng
tải.
Multipath TCP ra đời với ý tưởng giải quyết những vấn đề trên. Thay vì dùng
một đường đi như thường lệ, ta sẽ dùng cùng một lúc nhiều đường đi để truyền dẫn dữ
liệu, vừa tăng được thông lượng, vừa cân bằng được tải trọng giữa các đường với nhau
và giảm thiểu được số lần đụng độ dẫn đến tắc nghẽn.
2.2.

Lợi ích của MP TCP

Internet phát triển kéo theo nhu cầu về tài nguyên Internet cũng tăng theo, nhưng
thường các nguồn tài nguyên này (chẳng hạn như băng thông) không được tận dụng tối
đa do các hạn chế về giao thức trên cả hệ thống đầu cuối cũng như trên hệ thống mạng.

Nếu các nguồn tài nguyên này có thể được sử dụng đồng thời, trải nghiệm người dùng
có thể được cải thiện rất nhiều. Những cải tiến như vậy cũng sẽ làm giảm chi phí đầu
tư cơ sở hạ tầng mạng. Bằng cách ứng dụng chia sẻ tài nguyên, những tài nguyên sẵn
có có thể được gộp lại như một nguồn tài nguyên duy nhất dành cho người sử dụng.
Multipath được triển khai nhằm mục đích đạt được một số mục tiêu của nguồn
tài nguyên tổng hợp bằng cách sử dụng đồng thời nhiều đường dẫn trên mạng. Hai lợi
ích chủ yếu của truyền thông Multipath là :
-Tăng khả năng phục hồi: bằng cách cung cấp nhiều đường dẫn khác nhau.
-Tăng hiệu quả của việc sử dụng tài nguyên: qua đó nâng cao năng lực mạng
lưới có sẵn trong hệ thống mạng.
2.3.

Những mục tiêu đặt ra khi thiết kế MP TCP

a) Mục tiêu về chức năng

Cải thiện thông lượng của hệ thống (throughput): MPTCP hoạt động trên cơ
sở truyền trên nhiều đường dẫn, tuy nhiên một kết nối MPTCP sau khi được thiết lập
phải có thơng lượng lớn hơn thơng lượng của một kết nối TCP đơn lẻ tốt nhất. Nói
ngắn gọn, việc triển phải MPTCP phải có kết quả khả quan hơn là việc lựa chọn ra
đường đi tốt nhất và gửi theo đường đi đó.
Cải thiện khả năng phục hồi và chịu lỗi (resilience): MPTCP cho phép mọi
đường dẫn phải có khả năng nhận và truyền gói tin như một kết nối TCP đơn lẻ bình
thường. Nhờ có cơ chế này mà MPTCP vẫn đảm bảo được hệ thống hoạt động thơng
suốt khi có sự cố xảy ra trên một trong những đường dẫn đó. Ngồi ra, khả năng phục
Trang 18


Đồ án cuối kì
hồi của một kết nối MPTCP phải nhanh hơn bất kỳ một kết nối TCP đơn lẻ nào.

Cân bằng tải và điều khiển tắc nghẽn: Dễ dàng nhận thấy việc truyền dẫn bằng
nhiều con đường khác nhau góp một phần khơng hề nhỏ vào việc tránh tắc nghẽn trên
đường truyền. Đương nhiên việc điều khiển tắc nghẽn khơng chỉ đơn giản như thế,
chúng ta cịn cần phải giải quyết rất nhiều vấn đề phát sinh khác như kiểm soát tắt
nghẽn trên từng luồng con, hoặc ngăng ngừa thắt cổ chai ở hai bên đầu kết nối
MPTCP… Muốn làm được điều đó, MPTCP phải sử dụng các thuật tốn kiểm sốt tắc
nghẽn riêng (sẽ nói ở sau).
b) Mục tiêu về sự tương thích

Ngồi các mục tiêu chức năng được liệt kê ở trên, giao thức TCP Multipath phải
đáp ứng một số mục tiêu tương thích để hỗ trợ triển khai trên mạng Internet ngày nay.
Tương thích với ứng dụng: Khả năng tương thích ứng dụng là sự ảnh hưởng
của MPTCP tới các ứng dụng thông thường vẫn chạy trên nên TCP. Để đạt được điều
này, đầu tiên MP TCP phải thiết kế theo cùng một mơ hình dịch vụ như TCP : gửi thứ
tự, tin cậy, theo byte. Hơn nữa như đã đề cập, một kết nối MP TCP cung cấp cho các
ứng dụng có thơng lượng phải không thấp hơn một kết nối TCP đơn lẻ trên bất kỳ một
trong đường dẫn nào có sẵn của nó.
Tương thích với tầng mạng: Khái niệm tương thích với tầng mạng và tương
thích với các thiết bị hoạt động ở tầng mạng nghĩa là Multipath TCP phải tương thích
với mạng Internet ngày nay bao gồm khả năng truyền qua các middlebox sẵn có như :
firewall, NAT, và các proxy nâng cao hiệu suất. Điều này yêu cầu phải xây dựng giao
thức với các chức năng có thể dị và truyền qua các middlebox.

Application

end-to-end

Application

Transport


end-to-end

Transport

Network

Network

End Host

Router

Network
Router

Hình 2-1: Mơ hình kiến trúc Internet truyền thống

Trang 19

Network

End Host


Đồ án cuối kì
Application

end-to-end


Transport

Network

Network

End Host

Router

Application

Transport

Transport

Network

Network

Firewall,NAT, Proxy

End Host

Hình 2-2: Mơ hình thực tế

Tương thích với những người dùng các giao thức mạng khác: Là hệ quả của
sự tương thích về mạng và tương thích về ứng dụng, kiến trúc MP TCP phải cho phép
việc tồn tại song song giữa các luồng MP TCP mới và các luồng TCP thông thường.
Việc sử dụng nhiều đường dẫn khơng có nghĩa là làm tổn hại đến những luồng

TCP thông thường tại những liên kết thắt cổ chai. Các luồng Multipath TCP trên cùng
một nút cổ chai phải chia sẻ băng thông với mỗi luồng khác tương tự như việc chia sẻ
xảy ra tại một nút thắt cổ chai của TCP thơng thường.
Ngồi ra, MP TCP phải có đặc điểm tự động thỏa thuận. Một máy chủ hỗ trợ
Multipath phải có khả năng dị tìm thiết bị mới có hỗ trợ giao thức thế hệ sau và sử
dụng nó nếu được, hay nói cách khác là tự động liên kết với giao thức đang tồn tại.
2.4.

Mơ hình phân chia chức năng của MP TCP

Application

Application

TCP

MPTCP
Subflow ( TCP ) Subflow ( TCP )

IP

IP

Hình 2-3: Mơ hình MPTCP

Nằm bên dưới tầng ứng dụng, mở rộng MPTCP lần lượt quản lý các TCP
subflow (luồng con) dưới nó. Để làm điều này, nó phải thực hiện các cơ chế sau đây :
Trang 20



Đồ án cuối kì
Quản lý đường dẫn (Path Management): Đây là cơ chế dùng để phát hiện và
sử dụng nhiều đường dẫn giữa hai host. Để nhận biết các đường dẫn, MPTCP có thể
dựa vào số lượng địa chỉ IP của hai đầu mỗi host. Sau khi đã thiết lập được các luồng
con, MPTCP có thể tạo mới một kết nối hoặc gia nhập các luồng con này vào các kết
nối đã có sẵn.
Lập lịch (Scheduling): Cơ chế này chia dòng byte nhận được từ tầng ứng dụng
thành các segment, sau đó sẽ truyền đi trên một trong những subflow sẵn có. Cũng
giống như mơ hình TCP, MPTCP cũng dùng cơ chế đánh số sequence để điều chỉnh
thứ tự của các gói tin. Nếu bên gửi chịu trách nhiệm về việc phân phối các segment
qua nhiều đường dẫn thế nào, thì bên nhận phải đảm bảo rằng có thể sắp xếp các
segment nhận được theo đúng thứ tự ban đầu, sau đó ráp lại thành dữ liệu chuẩn rồi
chuyển lên tầng ứng dụng.
Sử dụng các luồng con (Subflow): Có thể hiểu mỗi subflow như là một đầu cho
kết nối TCP đơn lẻ. Nhiệm vụ chính của subflow bên gửi là nhận các segment được
lập lịch từ trước, kết nối TCP với các subflow bên nhận để truyền dữ liệu. Còn các
subflow bên nhận sẽ nhận các segment này và chuyển cho bộ lập lịch của MPTCP để
ráp dữ liệu lại.
Chính vì MP TCP sử dụng giao thức TCP bên dưới (subflow) nên đảm bảo được
tính tin cậy và đúng thứ tự vốn có của giao thức TCP. Việc mất gói hay truyền lại trên
các kết nối TCP đơn lẻ thông qua subflow đều được thực hiện như một kết nối TCP
bình thường.
Kiểm sốt tắc nghẽn: Bên cạnh việc điều khiển tắt nghẽn giữa các luồng con
TCP với nhau, ta còn phải quan tâm đến vấn đề kiểm soát quản lý giữa kết nối MPTCP
này với các kết nối TCP thông thường khác trong hệ thống mạng. Nói cách khác, các
thiết bị được triển khai MPTCP phải đảm bảo không được gây ảnh hưởng, thậm chí
chèn ép các kết nối TCP thông thường, làm cho các hệ thống cũ gặp bất lợi.
2.5.

Các thành phần chính trong MP TCP


MPTCP nằm hồn tồn trong tầng vận chuyển, và có thể chia làm 2 thành phần
chính. Đó là Path Manager (MP) và Multipath Scheduler (MPS). Có thể tham khảo mơ
hình phía dưới :

Trang 21


Đồ án cuối kì
control plane

¬



data plane

Multipath Scheduler ( MPS )



A1, B1, pA1,pB1
Data segment

MPS gắn path id = 3 vào gói tin

Path Manager ( PM )

subflow_id action
<A1,B1,pA1,pB1,1>

<A1,B1,pA1,pB1,2>
<A1,B1,pA1,pB1,3>

zzzz

xxxx
yyyy
zzzz
path1

path2

path3

Hình 2-4: Thành phần của MPTCP

Multipath Scheduler: nhận biết đường dẫn dưới dạng các số. Nó chỉ nhìn một
cặp địa chỉ trong suốt q trình truyền dữ liệu, đó chính là cặp địa chỉ mà hai host
dùng để thiết lập kết nối đầu tiên. Như ở hình trên, kết nối ban đầu được thiết lập trước
nhất là giữa bên A (address A, port A1) và bên B (address B, port B1), nên MPS sẽ
nhận biết kết nối này với connection ID là <A1, B1, pA1, pB1>.
Path Manager: có nhiệm vụ thăm dị phát hiện được các đường dẫn khả dụng, ví
dụ như ba đường như hình vẽ. Sau đó, MP sẽ thơng báo lên MPS rằng đang có ba
đường có thể dùng để truyền dữ liệu.
Quá trình phát hiện các đường dẫn, thêm đường dẫn vào kết nối chính…. được
thực hiện thơng qua các gói tin multipath capable, add address, join connection… sẽ
trình bày kỹ hơn ở phần hoạt động giao thức.
Ở bên gửi, khi dữ liệu được đưa từ trên tầng ứng dụng xuống tầng vận chuyển (ở
đây là MPTCP), thì MPS sẽ là người tiếp nhận dòng dữ liệu này. MPS sẽ chia nó ra
thành các segment như giao thức TCP bình thường, sau đó lựa chọn điều phối truyền

segment này đi bằng đường dẫn nào trong các đường dẫn khả dụng mà PM đã thông
báo từ trước. Trong trường hợp này là đường dẫn có Path ID là 3 (path3).

Trang 22


Đồ án cuối kì
PM nhận được lệnh từ MPS sẽ chuyển segment này đi bằng path3 qua host đích
khơng khác gì so với giao thức TCP bình thường. (Lưu ý : action zzzz trong hình trong
trường hợp này đơn giản là gửi segment qua path3. Các action phức tạp có thể dùng để
định tuyến, viết lại bảng tham chiếu trong PM…. Bài viết sẽ không đi sâu vào phần
action này).
Khi các segment này qua tới bên nhận, nó sẽ được đưa lên MPS để tiến hành sắp
xếp các gói tin cho đúng thứ tự. Sau đó được ráp lại thành dòng dữ liệu chuẩn ban đầu,
và được đẩy lên tầng ứng dụng. Kết thúc q trình.
Thành phần kiểm sốt tắc nghẽn và cân bằng tải tồn tại như một phần của MPS
(tính tốn, lập lịch các segment nên gửi với tốc độ nào, ở subflow nào...).
Việc gửi đi trên đường truyền và sắp xếp thứ tự ra sao cũng sẽ được trình bày kỹ
hơn ở phần cơ chế hoạt động phía sau.

Trang 23


Đồ án cuối kì

CHƯƠNG 3: HOẠT ĐỘNG CỦA GIAO THỨC MP TCP
3.1.

Các loại bản tin trong MP TCP


Hoạt động của giao thức MP TCP được báo hiệu thông qua các bản tin trong
trường Options của TCP header.
Ký hiệu bản tin

Tên bản tin

OPT_MPC

Multipath Capable

OPT_REMADR

Remove Address

OPT_ADDR

Add Address

OPT_JOIN

Join Connection

OPT_DSN

Data Sequence Number

OPT_DFIN

Data Finish


OPT_DACK

Data Acknowledgement

Bảng 3-1: Các loại bản tin trong giao thức MP TCP( theo IANA).
Trong MP TCP, một số khái niệm ở TCP thông thường đã thay đổi, sau đây là
những thay đổi :
Số thự tự (Sequence Number): Trường “Sequence Number” trong phần tiêu đề
của gói tin TCP là để đánh số thự tự trong các luồng con. Để bên nhận có thể sắp xếp
lại đúng thứ tự dữ liệu cho việc chuyển lên tầng ứng dụng, giao thức MP TCP sử dụng
thêm một phần gọi là không gian thứ tự cấp dữ liệu(Data-level sequence space). Do có
hai khơng gian số thứ tự nên cần một ánh xạ chính xác giữa khơng gian chuỗi dữ liệu
và khơng gian chuỗi luồng con(chính là Data Sequence Mapping), ánh xạ này được
báo hiệu thông qua trường “TCP option” trong các gói tin TCP.
ACK: Trường ACK trong phần tiêu đề TCP chỉ báo nhận ở mức subflow thông
qua số thứ tự cấp luồng con, không báo nhận ở không gian thứ tự mức dữ liệu(mức kết
nối MP TCP).
Duplicate ACK: Khung ACK này dành cho MP TCP phải được tách biệt độc lập
với báo hiệu tắc nghẽn. Để loại bỏ trường hợp những đối tượng non-MP TCP không
nhận biết được duplicate ACKS, MP TCP không nên gửi nhiều hơn hai duplicate
ACKS chứa báo hiệu MP TCP trong một hàng.
Cửa sổ nhận (Receive Window): Cửa sổ nhận tồn tại ở cấp kết nối thích hợp hơn
là ở cấp luồng con, cửa sổ này dùng để điều chỉnh tốc độ gửi phù hợp với tốc độ xử lý
của bên nhận. Trong MP TCP, mỗi luồng con phải báo cáo cùng một cửa sổ nhận toàn
Trang 24


Đồ án cuối kì
phần, được xác định trên mỗi kết nối ở bộ đệm bên nhận.
FIN(FINISH): Cờ đánh dấu kết thúc FIN trong tiêu đề TCP sử dụng cho mỗi

luồng con, không sử dụng ở mức kết nối. Để báo hiệu kết thúc ở mức kết nối, ta sử
dụng option DATA_FIN.
RST(RESET): Cũng như cờ FIN, cờ RST cũng chỉ sử dụng ở mức luồng con.
Khơng có RST ở mức kết nối, vì khơng thể phân biệt RST của hai kết nối. Ví dụ: nếu
một máy khơng có trạng thái về một luồng con, nó sẽ khơng thể biết luồng con đó
thuộc về kết nối nào trong số những kết nối nó đang thực hiện . Để reset một kết nối,
ta reset đồng thời tất cả luồng con của kết nối đó.
Danh sách địa chỉ(Address List): Việc quản lý danh sách địa chỉ được thực hiện
trên mỗi kết nối(trái ngược với trên mỗi luồng con, trên mỗi đầu cuối, hay trên mỗi
host...). Điều này cho phép ứng dụng chính sách cục bộ trên mỗi kết nối. Thêm một địa
chỉ vào một kết nối không liên quan đến các kết nối khác của cặp đầu cuối đó.
5 – tuple: bao gồm protocol, local address, local port, remote address, remote
port được áp dụng cho tầng ứng dụng đối với ứng dụng khơng có khả năng nhận diện
Multipath trên luồng con đầu tiên, ngay cả khi luồng con đó vừa bị đóng hay xóa khỏi
kết nối. Đây là vấn đề liên quan đến Multipath API.
3.2.

Quá trình thiết lập kết nối

Để hiểu rõ giao thức MP TCP khởi tạo một kết nối như thế nào ta sẽ tìm hiểu
hoạt động tổng quát của MP TCP qua kịch bản đơn giản sau :
Address A1

Address A2

Address B1

Address B2

Thiết lập kết nối đầu tiên


Thiết lập kết nối thêm

Hình 3-1: Ví dụ về một kịch bản sử dụng MP TCP.

Đối với các ứng dụng khơng có khả năng nhận biết MP TCP, ứng dụng đó sẽ
khơng phân biệt được giao thức MP TCP với giao thức TCP thông thường. Tất cả hoạt
Trang 25


×