Luận văn cao học CNTT
CÁC TỪ VIẾT TẮT.................................................................................................
PHẦN MỞ ĐẦU.......................................................................................................
CHƯƠNG 1 TỔNG QUAN VỀ GIAO THỨC TCP.................................................
1.1
Giao thức TCP.................................................................................................
1.2
Cấu trúc gói tin TCP........................................................................................
1.2.1 Cấu trúc trong phần mào đầu gói tin TCP........................................................
1.2.2 Cấu trúc phần dữ liệu trong gói tin TCP..........................................................
1.3
Hoạt động của giao thức TCP..........................................................................
1.3.1 Thiết lập kết nối...............................................................................................
1.3.2 Truyền dữ liệu..................................................................................................
1.3.3 Kết thúc kết nối................................................................................................
1.4
Điều khiển lưu lượng trong TCP....................................................................
1.4.1 Điều khiển tắc nghẽn.....................................................................................
a.
Pha khởi động chậm (slow – start).................................................................
b.
Pha truyền lại nhanh (fast retransmit)............................................................
c.
Pha phục hồi nhanh (fast recovery)................................................................
1.4.2 Pha tránh tắc nghẽn (congestion avoidance)..................................................
CHƯƠNG 2: TỔNG QUAN VỀ GIAO THỨC MULTIPATH TCP(MP TCP).....
2.1
Tại sao cần phải có giao thức MP TCP..........................................................
2.2
Các khái niệm mở đầu...................................................................................
Trước khi tìm hiểu và nghiên cứu giao thức MP TCP, những khái niệm sau phải
được làm rõ:............................................................................................................
-
Multihomed: 19
Là những máy chủ có nhiều giao diện vật lý(ví dụ 3G, wifi,..), qua đó nó được
gắn nhiều địa chỉ IP. Khác với máy chủ single-homed là máy chủ chỉ có một
giao diện vật lý duy nhất.........................................................................................
2.3
Các cơ chế đa đường......................................................................................
2.4
Những lợi ích, mục tiêu của MP TCP............................................................
2.4.1 Lợi ích 21
Học viên: Hà Văn Đạt
KTMT & TT 2009
Luận văn cao học CNTT
2.4.2 Mục tiêu của giao thức MP TCP....................................................................
2.5
Ảnh hưởng của MP TCP đối với hiệu suất TCP............................................
2.6
Nền tảng kiến trúc MP TCP...........................................................................
2.7
Mô hình phân chia chức năng MP TCP.........................................................
2.8
Các module chi tiết của tầng con MPTCP.....................................................
2.9
Giao diện Path Manager/Multipath Scheduler...............................................
CHƯƠNG 3: HOẠT ĐỘNG CỦA GIAO THỨC MP TCP...................................
3.2
Khởi tạo kết nối MP TCP..............................................................................
Để 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 :...............................
3.3
Khởi tạo một luồng con mới..........................................................................
3.4
Quản lý đường dẫn.........................................................................................
3.4.1 Thêm địa chỉ(Add Address)...........................................................................
3.4.2 Xóa địa chỉ(Remove Address).......................................................................
3.5
Truyền dữ liệu trong MP TCP.......................................................................
3.5.1 Ánh xạ số thứ tự dữ liệu(Data Sequence Mapping).......................................
3.5.2 Báo nhận dữ liệu............................................................................................
3.5.3 Cửa sổ nhận(Receive Window).....................................................................
3.5.4 Điều khiển tắc nghẽn(congestion control)......................................................
3.5.5 Xem xét phía bên gửi.....................................................................................
3.5.6 Các chính sách về luồng con..........................................................................
3.5.7 Truyền lại.......................................................................................................
3.6
Đóng một kết nối MP TCP............................................................................
CHƯƠNG 4: ĐIỀU KHIỂN TẮC NGHẼN...........................................................
TRONG GIAO THỨC MP TCP.............................................................................
4.1
Đặt vấn đề......................................................................................................
4.2
Vấn đề tắc nghẽn trong mạng........................................................................
4.2.1 Các nguyên nhân gây ra tắc nghẽn.................................................................
4.2.2 Khái niệm điều khiển tắc nghẽn.....................................................................
Học viên: Hà Văn Đạt
KTMT & TT 2009
Luận văn cao học CNTT
4.2.3 Các tiêu chí đánh giá thuật toán điều khiển tắc nghẽn...................................
4.3
Thuật toán điều khiển tắc nghẽn trong TCP...................................................
4.4
Thuật toán điều khiển tắc nghẽn trong MP TCP............................................
4.4.1 Các yêu cầu đối với thuật toán.......................................................................
4.4.2 Các thuật toán điều khiển tắc nghẽn trong MP TCP......................................
4.4.3 Thuật toán điều khiển tắc nghẽn kết hợp........................................................
CHƯƠNG 5: MÔ PHỎNG MP TCP.....................................................................
5.1
Giới thiệu cài đặt phần mềm htsim................................................................
5.1.1 Giới thiệu htsim.............................................................................................
5.1.2 Cài đặt htsim và các tool liên quan................................................................
5.2
Thực hiện mô phỏng......................................................................................
5.2.1 Mô phỏng với topo Multipath Dumbbell.......................................................
5.2.2 Mô phỏng với topo Nút thắt cổ chai( Shared Bottleneck)..............................
5.2.3 Mô phỏng với topo Fence..............................................................................
KẾT LUẬN.............................................................................................................
TÀI LIỆU THAM KHẢO.......................................................................................
2.
A. Ford, C. Raiciu, M. Handley (2012), “TCP Extensions for Multipath
Operation with Multiple Addresses”.......................................................................
4.
Alan Ford, Costin Raiciu, Sebastien Barre, Janardhan Iyengar, Bryan
Ford(2010), “Architectural Guidelines for Multipath TCP Development”..............
12.
Nick McKeown (2008), “Introduction to Computer Networks”....................
Học viên: Hà Văn Đạt
KTMT & TT 2009
Luận văn cao học CNTT
CÁC TỪ VIẾT TẮT
TCP
IP
UDP
OSI
MPTCP
IETF
PBX
IANANetwork
Transmission Control Protocol
Internet Protocol
User Datagram Protocol
Open Systems Interconnection
Multi path Transmission Control Protocol
Internet Engineering Task Force
Private Branch Exchange
Internet Assigned Numbers Authority
address translation
NAT
Học viên: Hà Văn Đạt
KTMT & TT 2009
Luận văn cao học CNTT
PHẦN MỞ ĐẦU
Internet đang thay đổi. Khi chồng giao thức TCP/IP được thiết kế, các đầu
cuối chỉ có một giao diện kết nối(single interface) và chỉ những thiết bị định
tuyến(routers) được trang bị một số giao diện vật lý. Ngày nay, hầu hết các đầu cuối
có nhiều hơn một giao diện và sự phổ biến của những chiếc điện thoại thông minh
được trang bị với cả 3G và Wi-Fi sẽ mang lại một số lượng ngày càng tăng của các
máy chủ multihomed(máy chủ có nhiều giao diện) trên Internet.Người dùng thường
mong đợi rằng việc sử dụng những host multihomed sẽ tăng khả năng dự phòng
cũng như hiệu năng thực hiện. Thật không may, trong 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.
Các vấn đề multihoming đã nhận được rất nhiều sự chú ý trong cộng đồng
nghiên cứu và cộng đồng IETF trong những năm qua. Các giải pháp ở tầng
Network như shim6 hay là Host Identity Protocol (HIP) đã được đề xuất và thực
hiện. 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 chính 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.
Học viên: Hà Văn Đạt
1
KTMT & TT 2009
Luận văn cao học CNTT
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.
Đối với tất cả các giao thức trên Internet, sự thành công của nó sẽ không chỉ
phụ thuộc vào các đặc điểm kỹ thuật giao thức mà còn phụ thuộc vào sự khả thi
trong việc sử dụng bởi những ứng dụng thực tế.
Hiện tại, công việc của em là quản trị và phát triển hệ thống mail, hệ thống
tổng đài PBX ... Đây là những hệ thống ứng dụng của chồng giao thức TCP/IP. Với
mục đích nghiên cứu những giải pháp, cơ chế cung cấp chất lượng dịch vụ để phục
vụ công việc chuyên môn, đề tài ban đầu em chọn là “ Cung cấp chất lượng dịch vụ
cho mạng TCP/IP”. Tuy nhiên để có một công trình mới mẻ và tối ưu theo sự hướng
dẫn của TS. Ngô Quỳnh Thu, em quyết định định hướng nghiên cứu theo đề tài
“Tìm hiểu giao thức Multipath TCP”. Luận văn này không thể hoàn thành nếu
không có những định hướng và chỉ bảo tận tình của TS. Ngô Quỳnh Thu. Em xin
chân thành cảm ơn cô giáo TS. Ngô Quỳnh Thu!
Hà Nội, tháng 3-2012
Hà Văn Đạt
Học viên: Hà Văn Đạt
2
KTMT & TT 2009
Luận văn cao học CNTT
CHƯƠNG 1 TỔNG QUAN VỀ GIAO THỨC TCP
1.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 thì phân đoạn này sẽ được gửi lại. Bên nhận TCP
sẽ khôi phục lại thô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ết
lập kênh kết nối trước khi truyền dữ liệu. TCP thiết lập kết nối bằng 3 bước bắt tay
(3-way handshake). Cơ chế của 3 bước bắt tay sẽ được trình bày ở phần sau của
luận văn.
- TCP truyền dữ liệu theo dòng byte(stream-of-bytes): Giao thức TCP truyền
dữ liệu thành dòng byte liên tục bằ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 gắn 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:
- TCP sử dụng khung báo nhận ACK để xác nhận từ bên nhận. Bên nhận phải
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ỗi
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ất
mà không loại bỏ toàn bộ dòng dữ liệu.
Học viên: Hà Văn Đạt
3
KTMT & TT 2009
Luận văn cao học CNTT
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áp lại theo đúng thứ tự trước 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 với nhau về các thông tin 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 tắc nghẽn để chia sẻ dung lượng mạng
giữa các người dùng.
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 :
- Phần mào đầu (Header).
- Phần dữ liệu (Data Payload).
1.2.1 Cấu trúc trong phần mào đầu gói tin TCP
Hình 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
Học viên: Hà Văn Đạt
4
KTMT & TT 2009
Luận văn cao học CNTT
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ếu bit SYN được thiết lập thì 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 thì 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ước cửa sổ (Window Size): Số byte có thể nhận bắt đầu từ
trường báo nhận (ACK) (trường này dài 16 bit).
- 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 trỏ khẩn (Urgent Pointer): Nếu cờ URG bật thì 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ó thì độ dài của
Học viên: Hà Văn Đạt
5
KTMT & TT 2009
Luận văn cao học CNTT
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ỉ rõ
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.
Học viên: Hà Văn Đạt
6
KTMT & TT 2009
Luận văn cao học CNTT
Hình 1-3: Biểu đồ hoạt động của giao thức TCP.
Giao thức TCP đòi hỏi phải thiết lập kết nối trước khi bắt đầu gửi dữ liệu và
kết thúc kết nối khi gửi dữ liệu hoàn tất. Từ khi 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.
- Truyền dữ liệu.
- 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.
Học viên: Hà Văn Đạt
7
KTMT & TT 2009
Luận văn cao học CNTT
Để 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. Trước khi
máy A thử kết nối với 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 thì máy
A có thể bắt đầu mở chủ động. Để thiết lập một kết nối, quy trình bắt tay 3 bước
xảy ra như sau :
-
Bước 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ói
tin TCP) tới 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ước 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ẫu nhiên một
giá trị Y.
- Bước 3: Để hoàn tất quá trình bắt tay ba bước, máy A tiếp tục gửi tới máy B
bả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 với UDP :
- Truyền dữ liệu không lỗi ( do có cơ chế sửa lỗi/ truyền lại ).
- Truyền các gói dữ liệu theo đúng thứ tự.
- Truyền lại các gói dữ liệu mất trên đường truyền.
- Loại bỏ các gói dữ liệu trùng lặp.
- Cơ chế hạn chế tắc nghẽn đường truyền.
Ở hai bước đầu tiên trong quá trình bắt tay ba bước, hai máy tính trao đổi một
số thứ tự gói ban đầu (Initial Sequence Number – ISN). Số này có thể chọn một
cách ngẫu nhiên. Số thự tự này được dùng để đánh dấu các khối dữ liệu gửi từ mỗi
máy tính. Sau mỗi byte được truyền đi, số này lại được tăng lên. Nhờ vậy ta có thể
Học viên: Hà Văn Đạt
8
KTMT & TT 2009
Luận văn cao học CNTT
sắp xếp lại chúng khi tới máy tính kia bất kể các gói tin tới nới theo thứ tự thế nào.
Trên lý thuyết, mỗi byte gửi đi đều có một số thứ tự và khi nhận được thì máy
tính nhận gửi lại báo nhận ACK. Trong thực tế thì chỉ có byte dữ liệu đầu tiên được
gán số thứ tự trong trường số thứ tự của gói tin và bên nhận sẽ gửi tin báo nhận
bằng cách gửi số thứ tự của byte đang chờ.
Ví dụ: máy tính A gửi 4 byte với số thứ tự ban đầu là 100 (theo lý thuyết thì 4
byte sẽ có thứ tự là 100, 101, 102, 103) thì bên nhận sẽ gửi tin báo nhận có nội dung
là 104 vì đó là thứ tự của byte tiếp theo nó cần. Bằng cách gửi tin báo nhận là 104,
bên nhận đã ngầm thông báo rằng nó đã nhận được các byte 100, 101, 102 và 103.
Trong trường hợp 2 byte cuối bị lỗi thì bên nhận sẽ gửi tin báo nhận với nội dung là
102 vì 2 byte 100, 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 thì bên gửi sẽ phải gửi lại toàn
bộ 10 gói vì không có cách nào để bên nhận thông báo nó đã nhận được 9 gói kia.
Vấn đề này được giải quyết trong giao thức SCTP (Stream Control Transmission
Protocol) với việc bổ sung báo nhận chọn lọc.
Số thứ tự và tin báo nhận giải quyết được các vấn đề lặp gói tin, truyền lại
những gói tin bị hỏng/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ọc viên: Hà Văn Đạt
9
KTMT & TT 2009
Luận văn cao học CNTT
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á trình bắt tay 4 bước và chiều của kết
nối kết thúc độc lập với nhau. Khi một bên 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. 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.
Quy trình kết thúc 4 bước như sau :
Bước 1: Máy A gửi bản tin FIN cho máy B.
Bước 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ước 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ước 4: Máy B nhận được ACK và đóng liên kết.
Một kết nối có thể tồn tại ở 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.
1.3.4 Cửa sổ trượt trong TCP(sliding window)
Để thực hiện việc điều khiển luồng, TCP sử dụng kỹ thuật cửa sổ trượt. Cửa
sổ trượt có kích thước cố định hoặc có thể thay đổi được cho phép xác định số gói
dữ liệu tối đa được truyền trước 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
Học viên: Hà Văn Đạt
10
KTMT & TT 2009
Luận văn cao học CNTT
gởi (thông tin này được bên nhận gởi qua thông qua trường window size, trường
này được tính dựa vào 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):
Với 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ước 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à W) được gọi là kích thước cửa sổ. Với cơ chế hoạt
động này, Go-back-N (và cả phương pháp selective repeat trình 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ước cửa sổ đi 1,
khi kích thước 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á W, và do đó, không vượt quá khả năng xử lý của phía thu).
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ước cửa sổ W lên 1. Điều này đồng nghĩa với việc phía phát sẽ được
phát thêm một khung nữa, ngoài W khung đã phát trước đó, vì phía thu đã xử lý
xong một khung, và như vậy, tổ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 k bit để đánh số thì tổng số khung được đánh số sẽ là 2k (từ 0 đến
2k – 1) và do đó, kích thước cửa sổ tối đa 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ước 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ước 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 (bắt đầu từ khung F0). Sau khi phía phát đã phát được
ba khung (F0, F1, F2) và chưa nhận được ACK, phía phát giảm kích thước 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ừ F3 đến F6 thể hiện
Học viên: Hà Văn Đạt
11
KTMT & TT 2009
Luận văn cao học CNTT
rằng phía phát còn được phép truyền tối đa là 4 khung nữa, bắt đầu từ khung F3.
Ở phía thu, sau khi đã nhận đúng và xử lý xong ba khung F0, F1 và F2 thì sẽ
gửi lại ACK3 cho phía phát. ACK3 nhằm ám chỉ rằng: “Phía thu đã nhận và xử lý
xong các khung cho đến F2 và phía thu đang sẵn sàng nhận khung 3.” Thực tế, phía
thu sẵn sàng nhận 7 khung bắt đầu từ khung F3. Phia thu đồng thời tăng kích thước
cửa sổ bên thu lên 7, bao các khung từ F3 cho đến F1.
Phía phát sau khi nhận được ACK3 sẽ tăng kích thước cửa sổ thêm 3 đơn vị.
Lúc này cửa sổ phía phát W = 7 và bao các khung từ F3 đến F1. Giả sử lúc này phía
phát thực hiện phát các khung từ F3 đến F6 (4 khung). Sau khi phát, phía phát sẽ
giảm kích thước cửa sổ đi 4 (W = 3), lúc này cửa sổ chỉ còn bao các khung 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 bắt đầu từ F4. Tuy nhiên khi
ACK4 về đến phía phát thì phía phát đã thực hiện phát các khung F4, F5 và F6 rồi,
như vậy, phía phát sẽ chỉ còn phát được tối đa là 4 khung bắt đầu từ F7.
Hình dưới đây minh họa nguyên tắc hoạt động của cơ chế cửa sổ trượt.
Học viên: Hà Văn Đạt
12
KTMT & TT 2009
Luận văn cao học CNTT
Hình 1-6: Nguyên tắc hoạt động của cơ chế cửa sổ trượt
Trong trường hợp lý tưởng (không có lỗi xảy ra) thì cơ chế 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ước 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 tắc hoạt động và minh họa đã trình bày trên đây, cần chú ý
một số điểm sau khi tìm hiểu hoạt động của Go-back-N:
- Trong trường hợp phía thu có khả năng xử lý W khung thông tin thì không
cần bộ đệm. Phía thu chỉ nhận và 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 lớp 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. Điều này là
nguyên nhân khiến phía thu không cần phải có bộ đệm
- Phía phát phải lưu tối đa là W khung thông tin trong bộ đệm để chờ ACK
Học viên: Hà Văn Đạt
13
KTMT & TT 2009
Luận văn cao học CNTT
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ước cửa sổ) trước 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. Với 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 với cơ chế Go-back-N.
Hình 1-7: Nguyên tắc hoạt động của selective repeat
Mộ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 lớp trên theo đúng thứ tự nên phía
thu phải có bộ đệm để lưu tạm cá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ể
Học viên: Hà Văn Đạt
14
KTMT & TT 2009
Luận văn cao học CNTT
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 đã được truyề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ượng trong TCP.
Trong TCP, điều khiển lưu lượng(traffic control) được thể hiện trong 3 khía
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 tắc nghẽn (congestion control):
Điều khiển luồng dữ liệu khi tắc nghẽn đã xảy ra để khắc phục tình trạng tắc
nghẽn.
Tránh tắc nghẽn (congestion avoidance):
Điều khiển luồng dữ liệu khi tắc nghẽn đã xảy ra để phòng ngừa tình trạng tắc
nghẽn trên mạng.
1.4.1 Điều khiển tắc nghẽn
TCP thực hiện 3 thuật toán “Pha khởi động chậm”, “Pha truyền lại nhanh”,
“Pha phục hồi nhanh” để điều khiển tắc nghẽn.
a.Pha khởi động chậm (slow – start)
Pha này hoạt động nhờ việc theo dõi tốc độ các gói tin mới được đưa vào
mạng và tốc độ các bản tin ACK được gửi lại. Pha khởi động chậm đưa vào một cửa
sổ mới chỉ có ở bên gửi gọi là cửa sổ tắc nghẽn cwnd. Khi một kết nối mới được
thiết lập giữa một máy với một máy trên một mạng khác, cửa sổ tắc nghẽn được
Học viên: Hà Văn Đạt
15
KTMT & TT 2009
Luận văn cao học CNTT
khởi tạo cho mỗi phân đoạn (ví dụ, kích thước 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ổ tắc 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ổ tắc nghẽn cwnd và cửa sổ quảng bá “advertised windown” rwnd. Cửa
sổ tắc 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ổ tắc nghẽn dựa vào những đánh giá về tắc nghẽn
mà bên gửi có được còn cửa sổ quảng bá là lượng bộ nhớ đệm có thể sử dụng ở bên
nhận cho kết nối này.
Bên gửi bắt đầ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ổ tắc 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ổ tắc 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ũ vì 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ẽ bắt đầu loại bỏ các gói tin. Điều này báo cho bên gửi rằng cửa sổ tắc nghẽn
đã quá lớn. Do đó cần một cơ chế mới để đ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à
sắp xếp lại các phân đoạn, nó chờ một số lượng nhỏ bản sao ACK để xác nhận lại
việc này. Giả sử rằng, nếu chỉ để sắp xếp lại các phân đoạn, thì chỉ có một hoặc hai
bản sao ACK trước khi phân đoạn được sắp xếp lại được xử lý, sau đó sẽ là ACK
mới. Nếu có 3 hay nhiều hơn 3 bản sao ACK nhận được liên tục, thì 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ọc viên: Hà Văn Đạt
16
KTMT & TT 2009
- Xem thêm -