Tìm hiểu giao thức Multipath TCP

  • Số trang: 90 |
  • Loại file: DOC |
  • Lượt xem: 27 |
  • Lượt tải: 0
nhattuvisu

Đã đăng 26946 tài liệu

Mô tả:

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 -