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

Đề 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 (637.28 KB, 38 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ú
MỤC LỤC
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 2
Đồ á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 toà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 3
Đồ á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 4
Đồ á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 5
Đồ á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 6

Đồ á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.
 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.
Trang 7
Đồ án cuối kì
 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
Hình 1-4: Sơ đồ thiết lập kết nối
Trang 8
Đồ án cuối kì
Hình 1-5: Quá 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.
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.
Trang 9
Đồ án cuối kì
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 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.
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ó
cung cấp một cơ chế cho bên nhận để kiểm soá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.
Trang 10
Đồ án cuối kì
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. Quá 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.
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
Trang 11
Đồ án cuối kì
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 2
k
-1. Khi đó cửa sổ trượt sẽ được chia thành 2
k
vị trí tương ứng với 2
k
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 quá 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
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à toàn bộ các khung phía sau nó.
Ví dụ:
Trang 12
Đồ án cuối kì
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ẽ
đượ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.
Trang 13
Đồ án cuối kì
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.
Hình 1-10: Các thuật toá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 toá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 quá ngưỡng ssthresh thì thuật toá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.
Trang 14
Đồ án cuối kì
Nếu nhận được ACK thì cwnd = MSS
2
/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.
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 15
Đồ á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
Trang 16
Đồ án cuối kì
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 đó. Ngoài ra, khả năng phục
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 toán kiểm soát tắc

nghẽn riêng (sẽ nói ở sau).
b) Mục tiêu về sự tương thích
Ngoà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
Transport
Network
Application
Transport
Network
Network
Network
Trang 17
Đồ án cuối kì
end-to-end
end-to-end
End Host
Router
Router

End Host
Hình 2-1: Mô hình kiến trúc Internet truyền thống
Application
Transport
Network
Application
Transport
Network
Network
Network
end-to-end
End Host
Router
Firewall,NAT, Proxy
End Host
Transport
Trang 18
Đồ án cuối kì
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.
Ngoà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
TCP
Application
IP
MPTCP
Subflow ( TCP ) Subflow ( TCP )
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 :
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
Trang 19
Đồ án cuối kì
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 soá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 hoàn toà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 :
Multipath Scheduler ( MPS )
Path Manager ( PM )
Data segment
subflow_id action
<A1,B1,pA1,pB1,1> xxxx
<A1,B1,pA1,pB1,2> yyyy
<A1,B1,pA1,pB1,3> zzzz
với conn_id
<A1, B1, pA1, pB1>
đường dẫn 1

3 có thể được sử dụng
MPS gắn path id = 3 vào gói tin
A1, B1, pA1,pB1
Trang 20


data

control plane

¬
Đồ án cuối kì
path1
path2
path3
zzzz
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 quá 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).
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 quá trình.
Thành phần kiểm soá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 toá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 21
Đồ á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 31: 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.
Trang 22
Đồ án cuối kì
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
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
Trang 23
Đồ án cuối kì
Thiết lập kết nối thêm
Hình 3: 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
động của MP TCP được thực hiện nhờ việc triển khai cấu trúc MP TCP ở lớp 4 và một
ứng dụng sẽ bắt đầu với việc mở một socket TCP theo cách thông thường.
Một kết nối MP TCP của giao thức MP TCP được bắt đầu như một phiên TCP
thông thường. Nó được minh họa ở hình trên giữa hai địa chỉ A1 và B1, tương ứng trên
hai host A và host B.
Nếu có thêm một (hay nhiều) đường dẫn, thì sẽ có thêm một (hay nhiều) phiên
TCP được tạo nên trên các đường dẫn mới này, những phiên TCP mới này sẽ được kết
hợp với phiên TCP đang tồn tại. Tất cả những phiên TCP này thuộc về cùng một kết nối
của ứng dụng ban đầu giữa hai đầu cuối. Việc tạo nên các phiên TCP mới cũng được
minh họa ở hình trên giữa địa chỉ hai địa chỉ: A2 trên máy A và B1 trên máy B.
MP TCP nhận dạng các đường dẫn thông qua địa chỉ IP tại hai đầu cuối. Sự kết
hợp các địa chỉ IP giữa 2 đầu cuối tạo nên các đường dẫn mới. Ví dụ, các đường dẫn
mới có thể được tạo nên từ hình trên là giữa A1 và B2, giữa A2 và B2. Cũng trong hình
trên, phiên TCP mới được khởi tạo từ A2 (tuy nhiên nó cũng có thể được khởi tạo từ
B1).

Việc tìm và thiết lập những phiên TCP (hay còn được gọi là luồng con) mới được
thực hiện thông qua lớp con quản lý đường dẫn (Path Managerment) trong lớp MP
TCP.
Giao thức MP TCP thêm một chuỗi nhận dạng gói tin cấp kết nối để lắp ghép lại
dữ liệu mà nó nhận được từ nhiều luồng. Kết nối được kết thúc nhờ bản tin DATA FIN,
hay là bằng nhiều gói tin FIN độc lập trên các luồng con.
Việc khởi tạo phiên kết nối bắt đầu bởi một bản tin SYN, các bản tin SYN và
ACK được trao đổi trên cùng một đường dẫn. Trong hai loại gói tin này sẽ thêm vào
bản tin “Multipath Capable” (hình 3-2). Bản tin “Multipath Capable” bao gồm các
trường: loại bản tin (8 bit), chiều dài bản tin (8 bit), 32 bit Token để xác định kết nối
(mỗi kết nối có một Token duy nhất), Initial Data Sequence Number (48 bit) để khởi
tạo số thứ tự dữ liệu ban đầu.
Ý nghĩa của bản tin “Multipath Capable” này là cho biết một đầu cuối có khả
năng hoạt động Multipath TCP hay không cũng như là cung cấp Token nhận dạng kết
nối trong trường hợp đầu cuối muốn thêm những luồng con mới vào kết nối này.
Trang 24
Đồ án cuối kì
Token này được tạo ra bởi bên gửi, và nó xác định duy nhất cho bên gửi. Token
phải an toàn để tránh bị tấn công, và nên được tạo ra bằng cách lấy ngẫu nhiên.
Bản tin “Multipath Capable” được đưa ra trong gói tin SYN. Nó chỉ được sử
dụng trong phiên TCP đầu tiên của một kết nối, để xác định kết nối đó có khả năng
truyền cùng lúc trên nhiều đường dẫn hay không. Tất cả các phiên sau đó sẽ sử dụng
các bản tin quản lý đường dẫn để kết hợp luồng con mới vào kết nối đang tồn tại.
Trang 25
Đồ án cuối kì

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×