TCP nhận thông tin từ tầng trên, chia dữ liệu thành nhiều phân đoạnsegment theo độ dài quy định và chuyển các phân đoạn xuống cho các giao thức tầng mạng để định tuyến, bên nhận TCP s* x
Trang 1Sinh viên thực hiện : Phạm Thanh Tân-20198147
Dương Tuấn Huy-201981
Nguyễn Trọng Đức-201981
LỜI NÓI ĐẦU
Hệ thống viễn thông hay mạng viễn thông là một hệ thống chức năng truyền thông tin đi xa bằng sóng vô tuyến điện, Hệ thống này là một nhóm các nút được kết nối lại Thông liên kết viễn thông, các nút có thể trao đổi thông điệp với nhau Giao thức truyền thông l một phần trong sự phát triển
mạng Nó định nghĩa cách thức giao tiếp, đồng bộ hóa và xử lý dữ liệu để đảm bảo truyền thông hiệu quả và đáng tin cậy
Ngày nay, với sự phát triển lớn mạnh của mạng internet, các hệ thống truyền tải thông tin, và nhu cầu sử dụng ngày càng đa dạng của mọi người trên toàn thế giới, việc đảm độ chính xác, bảo mật và lưu lượng lớn của thông tin khi truyền đi vô cùng quan trọng, cần thiết hơn bao giờ hết Với mong muốn được học tập, nghiên cứu và vận dụng kiến thức đã học được trên giảng đường, trong môn học Hệ thống viễn thông, chúng em đã chọn đề
tài “Tìm hiểu giao thức multi-path TCP trong hệ thống truyền thông”.
Trong quá trình làm bài tập lớn, chúng em xin chân thành cảm ơn thầy Nguyễn Thành Chuyên, trường Điện-Điện tử, Đại học Bách khoa Hà Nội đã giúp đỡ chúng em thực hiện đề tài này Trong quá trình thực hiện đề tài, không tránh khỏi những thiếu sót và hạn chế nhất định Vì thế chúng em mong nhận được những sự góp ý, bổ sung của thầy để đề tài của nhóm được hoàn thiện hơn
Hà Nội, 7-2023
Trang 21.1 Giao thức TCP
TCP ( Transmission Control Protocol ) là giao thức nằm ở tầng 4 trong mô hình 7 lớp OSI (tầng 3 trong mô hình TCP/IP) Nó là giao thức hướng liên kết tức là khi truyền dữ liệu, bên gửi và bên nhận TCP thương lượng và thiết lập một kết nối logic tạm thời, tồn tại trong suốt quá trình truyền dữ liệu TCP nhận thông tin từ tầng trên, chia dữ liệu thành nhiều phân đoạn(segment) theo độ dài quy định và chuyển các phân đoạn xuống cho các giao thức tầng mạng để định tuyến, bên nhận TCP s* xác nhận mỗi phân đoạn nhận đư-c bằng b/n tin ACK gửi lại bên gửi, nếu bên gửi không nhận đư-c ACK th6 phân đoạn này s* đư-c gửi lại Bên nhận TCP s* khôi phục lạithông tin ban đầu dựa vào số thứ tự của dữ liệu và chuyển lên tầng trên
Các đặc điểm của giao thức TCP:
- TCP là một giao thức có kết nối (connection-oriented): Có nghĩa là TCP thiếtlập kênh kết nối trưDc khi truyền
dữ liêu TCP thiết lập kết nối bằng 3 bưDc bFt taG (3-way handshake)
- TCP truyền dữ liêu theo dòng byte(stream-of-bytes): Giao thức TCP truyềL dữ liệu thành dòng byte liên tụcbằng cách nhóm các byte vào thành các phân đoạn TCP, sau đó các phân đoạn này đư-c gFn thêm nhãn ở tầng 3 đểtruyền đến đích trong mạng
- TCP là môt giao thức truyền dữ liệu tin cậy, điều đó thể hiện qua các yếu tố sau:P
- TCP sử dụng khung báo nhân ACK để xác nhận từ bên nhận Bên nhận ph/ị ph/i gửi xác nhận lại cho bên gửi
để thông báo rằng nó đã nhận đư-c dữ liệu
- TCP sử dụng môt trường gọi là checksum để phát hiện dữ liệu bị lỗị
• Dữ liêu lỗi s* đư-c truyền lại TCP chỉ truyền lại dữ liệ u bị lỗi hay bị mấW mà không loại bX toàn bộ dòng dữliệu
• Dữ liêu đư-c TCP đánh số thự tự Các gói tin TCP có thể đến đích không đúng thứ tự nhưng chúng s* đư-c rápPlại theo đúng thứ tự trưDc khi đưa lên tầng ứng dụng
• TCP điều khiển luồng(flow-control), bên gửi và bên nhận TCP ph/i trao đổi, đàm phán vDi nhau về các thôngtin liên kết nhằm ngăn chặn sự tràn bộ đệm và mất dữ liệu khi truyền
TCP sử dụng các thuât toán điều khiển tFc ngh*n để chia sẻ dung lư-ng mạng giữa các người dùng.P
1.2 Cấu trúc gói tin TCP
Đơn vị dữ liệu sử dụng trong TCP đư-c gọi là Segment (phân đoạn) Khuôn dạng và nội dung của gói tin TCP gồm 2 phần :
Trang 3
-H6nh sau đây minh họa cấu trúc các trường trong phần mào đầu của gói tin TCP.
Hình 1-1: Cấu trúc các trường trong phần mào đầu gói tin TCP.
Trong gói tin TCP gồm nhiều trường, ý nghĩa của các trường như sau :
- Trường cổng nguồn (Source Port): Số hiệu cổng của máy gửi (trường này dài 16 bit)
- Trường cổng đích (Destination Port): Số hiệu cổng của máy đích ( trường này dài 16 bit )
- Trường số thứ tự (Sequence Number): Số hiệu byte đầu tiên của phân đoạn từ khi bit SYN đư-c thiết lập Nếubit SYN đư-c thiết lập th6 giá trị ban đầu của trường “Sequence Number” là số hiệu tuần tự khởi đầu (ISN) và byte dữliệu đầu tiên là ISN + 1 (trường này dài 32 bit)
- Trường số báo nhận (Acknowledgment Number): Nếu cờ ACK bật th6 giá trị của trường này chính là số thứ tựcủa byte tiếp theo mà bên nhận cần (trường này dài 16 bit)
- Trường dịch dữ liệu (Data offset): Trường có độ dài 4 bit qui định độ dài của phần mào đầu (tính theo đơn vị từ
32 bit) Phần mào đầu có độ dài tối thiểu là 5 từ (160 bit), và tối đa là 15 từ (480 bit)
- Trường dự trữ (Reserved): Các bit trong trường này dùng cho tương lai và có giá trị là 0 (trường này dài 4 bit)
- Trường cờ (flag): Gồm các bit điều khiển (dài 1 bit)
URG: Cờ cho trường Urgent Pointer
ACK: Cờ cho trường Acknowledgement
PSH: Hàm Push
RST: Thiết lập lại đường truyền
SYN: Đồng bộ lại số thứ tự
FIN: Kết thúc truyền dữ liệu
- Trường kích thưDc cửa sổ (Window Size): Số byte có thể nhận bFt đầu từ trường báo nhận (ACK) (trường này
Trang 4- Trường kiểm tra tổng (Checksum): Gồm 16 bit kiểm tra cho c/ phần mào đầu và dữ liệu.
- Trường con trX khẩn (Urgent Pointer): Nếu cờ URG bật th6 giá trị trường này chính là số từ 16 bit mà số thứ tựtrong trường “Sequence Number” cần dịch trái
- Trường tùy chọn (Options): Đây là trường tùy chọn, nếu có th6 độ dài của trường này là bội số của 32
1.2.2 Cấu trúc phần dữ liệu trong gói tin TCP
Hình 1-2: Cấu trúc phần dữ liệu trong gói tin TCP
Trường cuối cùng không thuộc về phần mào đầu Giá trị của trường này là thông tin dành cho các tầng trên Thông tin
về giao thức tầng trên không đư-c chỉ rz trong phần mào đầu mà phụ thuộc vào cổng đư-c chọn
1.3 Hoạt động của giao thức TCP
Biểu đồ hoạt động của giao thức TCP
Trang 5khi một kết nối TCP đư-c khởi tạo đến khi kết thúc có 3 pha :
- Thiết lập kết nối
- Kết thúc kết nối
1.3.1 Thiết lập kết nối
Hình 1-4: Các bước trong quá trình thiết lập kết nối.
Để thiết lập một kết nối, TCP sử dụng một quy tr6nh bFt tay 3 bưDc TrưDc khi máy A thử kết nối vDi máy B, máy B ph/i đăng ký một cổng và mở cổng đó cho các kết nối: đây đư-c gọi là mở bị động Một khi mở bị động đã đư-c thiết lập th6 máy A có thể bFt đầu mở chủ động Để thiết lập một kết nối, quy tr6nh bFt tay 3 bưDc x/y ra như sau :
- BưDc 1: Máy A yêu cầu mở cổng dịch vụ bằng cách gửi gói tin SYN (góitin TCP) tDi máy B, trong gói tin này, giátrị số thứ tự trong trường “Sequence Number” đư-c gán cho một giá trị ngẫu nhiên
- BưDc 2: Máy B hồi đáp bằng cách gửi lại phía máy A b/n tin SYN/ACK, trong gói tin này, tham số trong trường
“Ackowledgement Number” đư-c gán giá trị bằng X + 1, tham số trong trường “Sequence Number” đư-c gán ngẫunhiên một giá trị Y
- BưDc 3: Để hoàn tất quá tr6nh bFt tay ba bưDc, máy A tiếp tục gửi tDi máy Bb/n tin ACK, trong b/n tin này,tham số số thứ tự trong trường “Sequence Number” đư-c gán cho giá trị bằng X + 1 còn tham số trong trường
“Ackowledgment Number” đư-c gán giá trị bằng Y + 1
Tại thời điểm này c/ máy A và máy B đều đư-c xác nhận rằng, một kết nối đã đư-c thiết lập
1.3.2 Truyền dữ liệu
Một số đặc điểm cơ b/n của TCP để phân biệt vDi 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
Trang 6
Cơ chế hạn chế tFc ngh*n đường truyền.
Ở hai bưDc đầu tiên trong quá tr6nh bFt tay ba bưDc, 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ể sFp xếp lại chúng khi tDi máy tính kia bất kể các gói tin tDi nDi 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 th6 máy tính nhận gửi lại báo nhận ACK Trong thực tế th6 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 vDi số thứ tự ban đầu là 100 (theo lý thuyết th6 4 byte s* có thứ tự là 100, 101, 102, 103) th6 bên nhận s* gửi tin báo nhận có nội dung là 104 v6 đó 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 th6 bên nhận s* gửi tin báo nhận vDi nội dung là 102 v6 2 byte 100, 101 đã đư-c nhận thành công.Gi/ sử ta có 10.000 byte gửi đi trong 10 gói tin 1000 byte và có một gói tin bị mất trên đường truyền Nếu gói bị mất là gói đầu tiên th6 bên gửi s* ph/i gửi lại toàn bộ 10 gói v6 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) vDi 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 đề lặp gói tin, truyền lại những gói tin bị hXng/mất và các gói tin đến sai thứ tự Để phục vụ mục đích kiểm tra, trong các gói tin có thêm trường kiểm tra tổng (checksum)
1.3.3 Kết thúc kết nối
Hình 1-5: Các bước trong quá trình thiết lập kết nối của giao thức TCP.
Để kết thúc kết nối hai bên sử dụng quá tr6nh bFt tay 4 bưDc và chiều của kết nối kết thúc độc lập vDi nhau Khi một bên kết thúc, nó gửi đi một gói tin FIN và bên kia gửi lại báo nhận ACK V6 vậy, một quá tr6nh kết thúc tiêu biểu s* có 2 cặp gói tin trao đổi
Quy tr6nh kết thúc 4 bưDc như sau :
Một kết nối có thể tồn tại BưDc 1: Máy A gửi b/n tin FIN cho máy B
BưDc 2: Máy B nhận đư-c FIN, tr/ lời ACK đồng thời đóng liên kết và gửi FIN cho máy A
BưDc 3: Máy A nhận đư-c b/n tin FIN của máy B, tr/ lời bằng b/n tin ACK và ở trạng thái chờ
BưDc 4: Máy B nhận đư-c ACK và đóng liên kết
ở dạng, một bên đã kết thúc gửi dữ liệu và chỉ nhận thông tin, bên kia vẫn tiếp tục gửi
Trang 7thay đổi đư-c cho phép xác định số gói dữ liệu tối đa đư-c truyền trưDc khi nhận đư-c một ACK từ đích xác nhận về Kỹ thuật này gi/i quyết vấn đề quan trọng là tăng hiệu qu/ truyền dẫn và điều khiển tốc độ dòng dữ liệu Sliding window cho phép tăng hoặc gi/m kh/ năng truyền của bên gửi (thông tin này bộ đệm còn trống bên phía nhận)
Các cơ chế cửa sổ trư-t:
a Cơ ch ph t lại theo nh m(Go-Back-N):
VDi cơ chế phát lại Go-back-N, phía phát s* đư-c phát nhiều hơn một khung thông tin trưDc khi nhận đư-c báo nhận từ phía thu Số khung thông tin cực đại mà phía phát có thể phát (ký hiệu là ) đư-c gọi là kích thưDc cửa sổ VDi cơ chế Whoạt động này, Go-back-N (và c/ phương pháp selective repeat tr6nh bày ở phần sau) đư-c gọi là cơ chế cửa sổ trư-t (sliding window)
Mỗi khi phát xong một khung thông tin, phía phát gi/m kích thưDc cửa sổ đi 1, khi kích thưDc cửa sổ bằng 0, phía phát s* không đư-c phát thêm khung thông tin nào nữa (điều này đ/m b/o số khung thông tin đồng thời đến phía thu không vư-t quá , và do đó, không vư-t quá kh/ năng xử lý của phía thu).W
Mỗi khi phía thu nhận đư-c một khung thông tin đúng và xử lý xong, phía thu s* gửi lại một báo nhận ACK cho phía phát Khi nhận đư-c báo nhận này, phía phát s* tăng kích thưDc cửa sổ lên 1 Điều này đồng nghĩa vDi việc phía phát Ws* đư-c phát thêm một khung nữa, ngoài khung đã phát trưDc đó, v6 phía thu đã xử lý xong một khung, và như vậy, Wtổng số khung mà phía thu ph/i xử lý tại một thời điểm vẫn không vư-t quá W
Để có thể phân biệt các khung trên đường truyền, các khung cần đư-c đánh số thứ tự Nếu dùng bit để đánh số th6 ktổng số khung đư-c đánh số s* là (từ 0 đến – 1) và do đó, kích thưDc cửa sổ tối đa 2k 2k Wmax = 2k (về mặt lý thuyết)
Ví dụ sử dụng 3 bit để đánh số thứ tự cho các khung thông tin Lúc này kích thưDc cửa sổ cực đại s* là 7 (yêu cầu sinh viên gi/i thích lý do) Tại thời điểm ban đâu, c/ phía phát và thu đều có kích thưDc cửa sổ là 7 thể hiện rằng phía phát đư-c phép phát tối đa là 7 khung (bFt đầu từ khung ) Sau khi phía phát đã phát đư-c ba khung (F0 F0, F1, F2) và chưa nhận đư-c ACK, phía phát gi/m kích thưDc cửa sổ xuống còn 4 Lúc này cửa sổ phía phát bao gồm các khung từ đến F3F6 thể hiện rằng phía phát còn đư-c phép truyền tối đa là 4 khung nữa, bFt đầu từ khung F3
Ở phía thu, sau khi đã nhận đúng và xử lý xong ba khung , và th6 s* gửi lại F0 F1 F2 ACK3 cho phía phát ACK3 nhằm ámchỉ rằng: “Phía thu đã nhận và xử lý xong các khung cho đến và phía thu đang sẵn sàng nhận khung 3.” Thực tế, F2phía thu sẵn sàng nhận 7 khung bFt đầu từ khung Phia thu đồng thời tăng kích thưDc cửa sổ bên thu lên 7, bao các F3khung từ cho đến F3 F1
Phía phát sau khi nhận đư-c ACK3 s* tăng kích thưDc cửa sổ thêm 3 đơn vị Lúc này cửa sổ phía phát = 7 và bao các Wkhung từ đến Gi/ sử lúc này phía phát thực hiện phát các khung từ đến (4 khung) Sau khi phát, phía phát F3 F1 F3 F6s* gi/m kích thưDc cửa sổ đi 4 ( = 3), lúc này cửa sổ chỉ còn bao các khung , W F7 F0 và F1
Phía thu gửi lại ACK4, báo rằng nó đã nhận và xử lý xong khung , F3 ACK4 ám chỉ rằng phía phát đư-c phép phát tối đa
là 7 khung bFt đầu từ Tuy nhiên khi F4 ACK4 về đến phía phát th6 phía phát đã thực hiện phát các khung , và F4 F5 F6rồi, như vậy, phía phát s* chỉ còn phát đư-c tối đa là 4 khung bFt đầu từ F7
H6nh dưDi đây minh họa nguyên tFc hoạt động của cơ chế cửa sổ trư-t
Trang 8chế cửa sổ trư-t đ/m b/o số khung thông tin từ phía phát đến phía thu không vư-t quá kích thưDc cửa sổ Trong trường h-p này, không có sự phân biệt giữa Go-back-N và selective repeat (và chúng đư-c gọi chung là sliding window).Bên cạnh nguyên tFc hoạt động và minh họa đã tr6nh bày trên đây, cần chú ý một số điểm sau khi t6m hiểu hoạt động của Go-back-N:
- Trong trường h-p phía thu có kh/ năng xử lý khung thông tin th6 không cần bộ đệm Phía thu chỉ nhận vàW
xử lý thông tin theo đúng thứ tự (dựa trên số thứ tự đánh trên các khung)
- Phía thu chuyển các gói thông tin lên lDp cao hơn theo thứ tự
- Phía thu s* không nhận khung i+1 nếu chưa nhận đư-c khung Điều này là nguyên nhân khiến phía thuikhông cần ph/i có bộ đệm
- Phía phát ph/i lưu tối đa là khung thông tin trong bộ đệm để chờ ACKW
b Cơ ch[ phát lại c\ lựa chọn(Selective repeat)
Tương tự như cơ chế phát lại Go-back-N, cơ chế phát lại có lựa chọn (selective repeat ARQ) cũng dựa trên phương pháp cửa sổ trư-t Phía phát đư-c phép phát tối đa W khung thông tin (kích thưDc cửa sổ) trưDc khi nhận đư-c báo nhận.Điểm khác biệt giữa selective repeat và Go-back-N nằm ở cách hai phương thức này xử lý khung thông tin bị lỗi VDi trường h-p selective repeat, phía phát s* chỉ thực hiện phát lại khung thông tin bị lỗi mà không cần phát lại tất c/ các khung khác sau khung lỗi nếu như các khung đó không bị sai Cơ chế này giúp tăng hiệu qu/ sử dụng đường truyền so
Trang 9Một số chú ý của selective repeat ARQ
Do phía phát chỉ thực hiện phát lại các khung bị lỗi, do đó các khung đến phía thu có thể không theo thứ tự như khi đư-c phát đi ở phía phát
- Phía thu ph/i có kh/ năng xử lý các khung thông tin không theo thứ tự
- Do các khung thông tin ph/i đư-c đưa lên lDp trên theo đúng thứ tự nên phíathu ph/i có bộ đệm để lưu tạmcác khung thông tin trong khi chờ các khung bị mất hoặc lỗi đư-c phát lại
Phía phát ph/i thực hiện báo nhận cho tất c/ các khung thông tin mà nó nhận đúng Các khung thông tin không đư-c báo nhận trong kho/ng thời gian time-out tương ứng s* đư-c coi là bị mất hoặc lỗi
Trong trường h-p phía thu nhận đư-c một khung thông tin sai, phía thu có thểgửi NAK để báo lỗi và yêu cầu truyền lại khung đó (selective reject)
Khi có lỗi x/y ra, việc truyền lại các khung lỗi của cơ chế cửa sổ trư-t đư-c thực hiện theo hai cách khác nhau:
- Go-back-N: phía phát s* thực hiện phát lại khung thông tin bị sai và tất c/ các khung thông tin khác đã đư-ctruyền, tính từ khung bị sai
- Selective repeat: phía phát s* chỉ phát lại các khung thông tin bị sai
1.4 Điều khiển lưu lưIng trong TCP.
Trong TCP, điều khiển lưu lư-ng(traffic control) đư-c thể hiên trong 3 khíạ cạnh:
Điều khiển luồng (flow control):
Bên nhận TCP, khi gửi một ACK để xác nhận đã nhận đư-c phân đoạn cho bên gửi, trong gói tin ACK này nó cũng cho bên gửi biết số byte dữ liệu mà nó có thể nhận đư-c từ lần nhận phân đoạn TCP cuối cùng, mà không làm tràn bộ đệm của nó Số byte này trong ACK là số thứ thứ tự cao nhất mà nó có thể nhận mà không x/y ra mất gói
Điều khiển tFc ngh*n (congestion control):
Điều khiển luồng dữ liệu khi tFc ngh*n đã x/y ra để khFc phục t6nh trạng tFc ngh*n
Trang 10Pha khởi động chậm đưa vào một cửa sổ mDi chỉ có ở bên gửi gọi là cửa sổ tFc ngh*n cwnd Khi một kết nối mDi đư-c thiết lập giữa một máy vDi một máy trên một mạng khác, cửa sổ tFc ngh*n đư-c khởi tạo cho mỗi phân đoạn (ví dụ, kích thưDc phân đoạn thông báo bởi đầu bên kia, hoặc mặc định là 536 hoặc 512 byte) Sau mỗi kho/ng thời gian nhận đư-c ACK, cửa sổ tFc ngh*n tăng một phân đoạn Bên gửi có thể truyền tối thiểu số byte giữa cửa sổ tFc ngh*n cwnd vàcửa sổ qu/ng bá “advertised windown” rwnd Cửa sổ tFc ngh*n để điều khiển luồng bởi bên gửi, trong khi cửa sổ qu/ng
bá để điều khiển luồng bởi bên nhận Cửa sổ tFc ngh*n dựa vào những đánh giá về tFc ngh*n mà bên gửi có đư-c còn cửa sổ qu/ng bá là lư-ng bộ nhD đệm có thể sử dụng ở bên nhận cho kết nối này
Bên gửi bFt đầu truyền một phân đoạn và chờ ACK báo nhận cho phân đoạn này Khi nhận đư-c ACK, cửa sổ tFc ngh*n tăng lên từ một thành 2, và 2 phân đoạn đư-c gửi Khi mỗi trong 2 phân đoạn này đư-c xác nhận (bên gửi nhận đư-c ACK), cửa sổ tFc ngh*n s* đư-c tăng thành 4 Việc tăng lên này tuân theo hàm mũ, mặc dù nó có thể không chính xác theo hàm mũ v6 bên nhận có thể gửi ACK trễ hơn, thông thường bên nhận gửi một ACK cho mỗi hai phân đoạn mà nó nhận đư-c
Tại một vài thời điểm nào đó, băng thông của mạng bị đầy, và các router trung gian s* bFt đầu loại bX các gói tin Điều này báo cho bên gửi rằng cửa sổ tFc ngh*n đã quá lDn Do đó cần một cơ chế mDi để điều này không x/y ra
b.Pha truyền lại nhanh (fast retransmit)
TCP có thể tạo ra một xác nhận tức thời (một b/n sao ACK) gửi lại ngay cho bên gửi Chức năng của b/n sao ACK này là thông báo cho đầu bên kia biết rằng một phân đoạn mà nó nhận đư-c không theo thứ tự và thông báo “Sequence Number” mà nó mong đ-i
Khi đó bên gửi không biết b/n sao ACK nhận đư-c là do mất gói hay chỉ là sFp xếp lại các phân đoạn, nó chờ một số lư-ng nhX b/n sao ACK để xác nhận lại việc này Gi/ sử rằng, nếu chỉ để sFp xếp lại các phân đoạn, th6 chỉ có một hoặc hai b/n sao ACK trưDc khi phân đoạn đư-c sFp xếp lại đư-c xử lý, sau đó s* là ACK mDi Nếu có 3 hay nhiều hơn 3 b/n sao ACK nhận đư-c liên tục, th6 có nghĩa là một phân đoạn đã bị mất TCP sau đó s* thực hiện truyền lại ngay phân đoạn bị mất, mà không cần chờ hết kho/ng thời gian phát lại (retransmission timeout)
Hình 1-8: Ví dụ về pha truyền lại nhanh trong TCP.
Trang 11thực hiện pha “khởi động chậm” Đây là thuật toán “phục hồi nhanh” Pha “phục hồi nhanh” là một c/i tiến cho phép nâng cao thông lư-ng.
Nguyên nhân không thực hiện pha “khởi động chậm” trong trường h-p này là do bên gửi nhận đư-c các b/n sao ACK nên nó biết rằng có nhiều hơn một phân đoạn bị mất Bên nhận chỉ có thể tạo ra các b/n sao ACK khi một phân đoạn khác đã đư-c nhận, phân đoạn đó đã rời khXi mạng và ở trong bộ đệm nhận Như vậy vẫn còn dữ liệu tiếp sau đó giữa hai đầu cuối, và TCP không muốn gi/m luồng truyền một cách đột ngột do pha “khởi động chậm”
Thuật toán “truyền lại nhanh” và “phục hồi nhanh” đư-c sử dụng kết h-p vDi nhau như sau :
- Khi bên gửi nhận đư-c b/n sao ACK thứ ba liên tiếp đư-c, đặt ngưỡngssthresh về một nửa giá trị cửa sổ tFcngh*n hiện tại, nhưng không nhX hơn hai phân đoạn Tryền lại phân đoạn bị mất Đặt cwnd bằng ssthresh cộng vDi balần kích thưDc phân đoạn Do đó s* làm tăng cửa sổ tFc ngh*n bằng số phân đoạn đã rời mạng mà đầu cuối kia giữ
- Sau thời gian mỗi b/n sao ACK đư-c nhận, tăng cwnd thêm một kích thưDc phân đoạn Do đó tăng cửa sổ tFcngh*n thêm một phân đoạn đã mất Truyền một gói tin, nếu đư-c cho phép giá trị mDi của cwnd
- Khi ACK tiếp theo đư-c nhận xác nhận bên nhận muốn dữ liệu mDi, đặt cwnd bằng ssthresh (giá trị đư-c đặttrong bưDc 1) ACK này có thể đư-c xác nhận từ bưDc 1, sau khi truyền lại một kho/ng thời gian RTT Ngoài ra, ACK này
có thể xác nhận tất c/ phân đoạn trung gian đư-c gửi đi giữa phân đoạn bị mất và nhận đư-c b/n sao ACK đầu tiên.BưDc này để tránh tFc ngh*n, khi TCP gi/m tốc độ xuống còn một nửa khi gói tin bị mất
1.4.2 Pha tránh tắc nghTn (congestion avoidance)
TFc ngh*n x/y ra khi dữ liệu đến một liên kết có băng thông lDn (fast LAN) và gửi ra một liên kết có băng thông nhX hơn(slower LAN) TFc ngh*n cũng có thể x/y ra khi nhiều luồng đầu vào đến một rourer mà có dung lư-ng đầu ra nhở hơn tổng dung lư-ng đầu vào Tránh tFc ngh*n là cách để tránh việc mất gói tin
Gi/ thiết cho thuật toán là xác suất mất gói là rất nhX (nhX hơn 1%), do vậy việc mất gói tin báo hiệu việc tFc ngh*n tạimột nơi nào đó giữa nguồn và đích Có
2 dấu hiệu cho biết việc mất gói x/y ra: sau kho/ng thời gian timeout và b/n sao
ACK
Tránh tFc ngh*n và khởi động chậm là hai thuật toán độc lập vDi các mục đích khác nhau Nhưng khi tFc ngh*n x/y ra, TCP ph/i gi/m tốc độ truyền các gói tin của nó trên mạng, và sau đó thực hiện lại pha khởi động chậm lại lần nữa Trong thực tế chúng đư-c kết h-p vDi nhau
Tránh tFc ngh*n và khởi động chậm cần hai biến trên mỗi kết nối: cửa sổ tFc ngh*n, cwnd và kích thưDc ngưỡng khởi động chậm, ssthresh Thuật toán kết h-p hoạt động như sau :
- Khởi tạo cho một kết nối cho trưDc: đặt cwnd là một phân đoạn và ssthresh là 65535 byte
- Bên gửi TCP s* gửi dữ liệu lDn nhất là min (cwnd, rwnd)
- Khi tFc ngh*n x/y ra (sau kho/ng thời gian timeout hay bên gửi nhận đư-c b/n sao ACK), ssthresh s* là mộtnửa kích thưDc cửa sổ hiện tại (min(cwnd, rwnd) nhưng tối thiều là 2 phân đoạn) Ngoài ra, nếu tFc ngh*n x/y ra dotimeout, cwnd s* đư-c đặt là 1 segment
- Khi dữ liệu mDi đư-c xác nhận bởi đầu cuối bên kia, tăng cwnd, nhưng cách tăng phụ thuộc vào TCP đang ở
Trang 12ngh*n Pha khởi động chậm đư-c duy tr6 cho đến khi TCP ở điểm mà tại đó x/y ra tFc ngh*n (nó ghi nhD một nửa kích thưDc cửa sổ ở bưDc 2), và sau đó chuyển sang pha tránh tFc ngh*n.
Cwnd trong pha khởi động chậm bFt đầu từ 1 phân đoạn, và đư-c tăng lên 1 phân đoạn sau mỗi lần nhận đư-c ACK Như đã đư-c nói đến ở trưDc đó, việc tăng này theo cấp số mũ, gửi 1 phân đoạn, sau đó là 2, 4 và gấp đôi… Trong pha tránh tFc ngh*n th6 cwnd đư-c tăng segsize*segsize/cwnd sau mỗi lần nhận đư-c ACK, ở đó segsize là kích thưDc phân đoạn và cwnd đư-c tính theo byte cwnd tăng theo hàm tuyến tính, so vDi hàm mũ trong pha khởi động chậm Việc tăng cwnd nhiều nhất là 1 phân đoạn sau mỗi RTT, trong khi trong pha khởi động chậm tăng cwnd theo số ACK nhận đư-c sau mỗi RTT
Hình 1-9: Ví dụ về pha khởi động chậm và tránh tắc nghTn.
CHƯƠNG 2: TỔNG QUAN VỀ GIAO THỨC MULTIPATH TCP(MP TCP)
2.1 Tại sao cần phai có giao thức MP TCP
TCP thông thường(single path) cung cấp hai chức năng chính đó là truyền số liệu tin cậy và điều khiển tFc ngh*n TCP
sử dụng đường dẫn dựa vào b/ng định tuyến của thiết bị tầng mạng là router để truyền số liêu Như vậy nó chỉ truyền trêL môt đường dẫn cho c/ mộ t kết nối TCP Điều này dẫn đến những hạn chế trong khạ’ năng điều khiển tFc ngh*n hay cũng có thể gọi là kh/ năng cân bằng t/i(load balancing) Giao thức MultiPath TCP ra đời nhằm c/i thiên thông lư-ng và tăng khạ’ năng điều khiển tFc ngh*n so vDi TCP thông thường bằng cơ chế cho phép một cặp đầu cuối sử dụng nhiều đường dẫn để truyền các gói tin trên một kết nối duy nhất
2.2 Các khái niệm mở đầu
TrưDc khi t6m hiểu và nghiên cứu giao thức MP TCP, những khái niêm sau P
ph/i đư-c làm rz:
- Multihomed: Là những máy chủ có nhiều giao diện vật lý(ví dụ 3G, wifi, ), qua đó nó đư-c gFn nhiều địa chỉ
IP Khác vDi máy chủ single-homed là máy chủ chỉ có một giao diện vật lý duy nhất
- Đầu cuối ( endpoint ):
Một đầu cuối triển khai giao thức MP TCP, có thể khởi tạo hay xóa bX một kết nối MP TCP
- Đường dẫn ( path ):
Là tập h-p gồm nhiều liên kết giữa bên gửi và bên nhận, đư-c xác định bởi một cặp địa chỉ nguồn và đích
Trang 13
- Cấp dữ liệu ( data – level ):
Dữ liệu trên danh nghĩa đư-c truyền đi trên một kết nối, trong MP TCP nó truyền qua các luồng con Do vậy khái niệm
“cấp dữ liệu” đồng nghĩa vDi khái niệm “cấp kết nối” ( connection – level ), trái ngư-c vDi “cấp luồng con” ( subflow – level ) là đặc tính của mỗi luồng con
Các thiết bị trung gian trong mạng như Firewall, Router, NAT
2.3 Các cơ chế đa đường
Đối vDi MP TCP mục đích chính là truyền dữ liệu trên nhiều đường dẫn khác nhau trong cùng một thời gian Điều này này dẫn đến khi triển khai, kiến trúc MP TCP ph/i có kh/ năng t6m và sử dụng nhiều đường dẫn kết nối giữa hai máy đầu cuối, nếu chúng tồn tại Tuy nhiên, có thể h6nh dung ra các cơ chế khác nhau cho việc t6m và sử dụng các đường dẫn này Sau đây là các cơ chế đó:
a.SF dụng nhiều địa chỉ IP:
Hiện tại th6 đây là phương pháp đư-c đưa ra trong thiết kế giao thức MP TCP Nếu các máy có nhiều địa chỉ IP, các cặp địa chỉ khác nhau từ những địa chỉ này s* tạo nên các đường dẫn khác nhau
b.SF dụng giá trị lựa chọn đường dẫn (a path selector value):
Một đầu cuối có thể có kh/ năng gFn vào các gói tin truyền đi một nhãn chứa giá trị lựa chọn đường dẫn Nếu các nút trong mạng có thể đọc các đư-c nhãn này và sử dụng nó để chọn đường dẫn, th6 một host có thể xác định đường dẫn racho gói tin
c.Lựa chọn next – hop:
Trong cấu h6nh mạng ở những nơi mà nhiều next – hop có thể truyền các gói tin, một host có thể quyết định gửi các gói tin của nó qua một next – hop này hoặc qua các next– hop khác
2.4 Những lIi ích, mục tiêu của MP TCP
2.4.1 L-i ích
Khi Internet phát triển, nhu cầu về tài nguyên Internet ngày càng tăng, nhưng thường các nguồn tài nguyên này(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(resource pooling), 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
Truyền thông Multipath nhằm mục đích đạt đư-c một số những 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 của kết nối bằng cách cung cấp nhiều đường dẫn khác nhau
Trang 14
-Phần này phác th/o các mục tiêu chính mà giao thức Multipath TCP cần ph/i hưDng tDi Các mục tiêu này bao gồm mụctiêu về chức năng(các dịch vụ và tính năng mà Multipath TCP cung cấp), và các mục tiêu về kh/ năng tương thích (/nh hưởng của giao thức MP TCP đến các giao thức hay hệ thống đang tồn tại khác).
a.Mục tiêu về chức năng:
Trong việc hỗ tr- sử dụng truyền thông nhiều đường dẫn, Multipath TCP có hai mục tiêu chức năng sau:
- C/i thiện thông lư-ng truyền dẫn: Multipath TCP ph/i hỗ tr- việc sử dụng
đồng thời nhiều đường dẫn Một kết nối Multipath TCP trên nhiều đường dẫn có thông lư-ng đạt đư-c ph/i không thấp hơn thông lư-ng của một kết nối TCP đơn lẻ(subflow) trên đường dẫn tốt nhất
- C/i thiện kh/ năng phục hồi: MP TCP ph/i hỗ tr- việc sử dụng nhiều đườngdẫn thay thế cho nhau cho các mụcđích kh/ năng phục hồi, bằng cách cho phép các gói dữ liệu đư-c gửi và gửi lại trên bất kỳ đường dẫn có sẵn V6 vậy,trong trường h-p xấu nhất, kh/ năng phục hồi của một kết nối MP TCP ph/i không nhX hơn kh/ năng phục hồi của mộtkết nối TCP đơn lẻ bất kỳ
Mục tiêu thứ hai chính là khái niệm “cân bằng t/i” (“resource pooling”), mà MP TCP có thể cân bằng lưu lư-ng giữa các đường dẫn, và đối phó vDi hiện tư-ng tFc ngh*n trong mạng Mạng s* tối ưu hơn do t/i đư-c dịch ra khXi các liên kết thFt cổ chai x/y ra tFc ngh*n và tận dụng các đường dẫn dư thừa bất cứ đâu mà nó thấy Để đạt đư-c mục tiêu về “cânbằng t/i” ở trên, một máy sử dụng MP TCP ph/i có kh/ năng dò ra các đường dẫn mDi và sử dụng các đường dẫn này
MP TCP
- Tương thích vDi tầng mạng: Kiến trúc Internet truyền thống cFm thiết bị mạng trong lDp mạng và các lDp dưDicủa mô h6nh ngăn xếp 7 lDp OSI, nơi các lDp trên lDp mạng - lDp vận t/i và các lDp trên chỉ đư-c khởi tạo tại các đầucuối Trong khi kiến trúc này, thể hiện trong h6nh 2-2, không còn ph/n ánh "ground truth" trên mạng Internet vDi sự giatăng của các middleboxes Các middleboxes đều đặn xen vào trên lDp Transport, thậm chí đôi khi chấm dứt một kết nối
Trang 15Hình 2-2: Kiến trúc Internet truyền thống
Proxy
Hình 2-3: Mô hình thực tế
Các khái niệm tương thích vDi tầng mạng và tương thích vDi các thiết bị hoạtđộng ở tầng mạng nghĩa là Multipath TCP ph/i tương thích vDi 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 gây /nh hưởng đến việc thiết kế giao thức, theo khái niệm đ/m b/o MP TCP vẫn giống TCP trên mạng có dây, và MP TCP khi nào thích h-p Điều này yêucầu ph/i xây dựng giao thức vDi các chức năng có thể dò và truyền qua các middlebox
- Tương thích vDi 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ươngthí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 mDi và các luồng TCPthô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ạinhững liên kết thFt 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 vDi mỗi luồngkhác tương tự như viêc chia sẻ x/y ra tại một nút thFt cổ chai của TCP thông thường Ngoài ra, MPP TCP ph/i có đặcđiểm tự động thXa thuận Một máy chủ hỗ tr- kh/ năng Multipath ph/i có kh/ năng dò t6m một cách tin cậy nơi mà mộtthiết bị thông tin mDi 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 vDigiao thức đang tồn tại
Application
Transport
Network
Application Transport Network Network Network
end-to-end end-to-end
end-to-end
End
Host Router Firewall, NAT, Host End
Transport
Trang 16mạng Mục tiêu an ninh cho Multipath TCP là cung cấp một dịch vụ không kém an toàn hơn so vDi TCP thông thường singlepath Điều này s* đạt đư-c thông qua sự kết h-p cơ chế b/o mật của TCP hiện tại (có thể sửa đổi để phù h-p vDi
mở rộng Multipath TCP) và cơ chế b/o mật của truyền dẫn đa đường Giao thức MP TCP ph/i duy tr6 đư-c đặc điểm tin cậy từ đầu cuối đến đầu cuối, và cho phép nhận thực giữa đầu cuối vDi đầu cuối, hay phù h-p vDi các chính sách b/o mật trong mô h6nh mạng tương thích
2.5 mnh hưởng của MP TCP đối với hiêu suất TCPl
Để cung cấp chức năng truyền t/i đa đường, Multipath TCP gửi dữ liệu trên nhiều đường dẫn Triển khai ban đầu là chạythuật toán điều khiển tFc ngh*n không thay đổi trong giao thức TCP chuẩn trên mỗi luồng con Tuy nhiên, mục đích của
MP TCP còn là không gây /nh hưởng đến các luồng TCP khác, và do vậy cách triển khai này s* dẫn đến các phiên Multipath lấy đi lư-ng băng thông không cân đối tại các liên kết thFt cổ chai
Do vậy, để chFc chFn gửi dữ liệu trên nhiều đường dẫn, MP TCP ph/i thực hiện điều này bằng cách không làm /nh hưởng đến hiệu suất của giao thức TCP của những người sử dụng không dùng giao thức Multipath Điều này dẫn đến cần một thuật toán điều khiển tFc ngh*n hiệu qu/ trong MP TCP
2.6 Nền tang kiến trúc MP TCP
Phần này tr6nh bày một kiến trúc giao vận mà dựa vào nền t/ng đấy chúng ta s* xây dựng môt kiến trúc tổng quan có hiệu qu/ đối vDi việc đạt đư-c các mục tiêu của giao thức Multipath TCP Kiến trúc giao vân đư-c mô t/ ở đây chính là TngP (Transport next-generation, ”Tầng giao vận thế hệ mDi") Tng không ph/i là kiến trúc duy nhất hỗ tr- giao thức Multipath, Tng là sự kết h-p từ việc nghiên cứu, thực hành và phát triển những kiến trúc giao vận hỗ tr- cơ chế Multipath trưDc đó
Existing Layers(trái) Tng Decomposition(ph/i)
Hình 2-4: Mô hình phân chia chức năng của Tng
Tng chia tách lDp truyền t/i thành hai thành phần: hưDng ứng dụng application-oriented" và hưDng mạng oriented”, như thể hiện trong h6nh 2-4
( Chức năng hưDng tầng ứng dụng ) ( Chức năng hưDng tầng
mạng )