intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Khóa luận: Điều khiển lưu lượng trong giao thức TCP - Nguyễn Thị Hạt

Chia sẻ: Hoàng Anh | Ngày: | Loại File: DOC | Số trang:67

248
lượt xem
40
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tìm hiểu về cơ chế điều khiển lưu lượng và điều khiển tắc nghẽn trong giao thức TCP, việc áp dụng các cơ chế đó trong các phiên bản TCP như thế nào, mô phỏng để đánh giá các giải pháp trong cơ chế TCP có tác dụng như thế nào,... Mời các bạn cùng tham khảo bài khóa luận "Điều khiển lưu lượng trong giao thức TCP" để giải đáp những thắc mắc trên.

Chủ đề:
Lưu

Nội dung Text: Khóa luận: Điều khiển lưu lượng trong giao thức TCP - Nguyễn Thị Hạt

  1. Điều khiển lưu lượng trong giao thức TCP MỞ ĐẦU Ngày nay, khắp mọi nơi trên thế giới, Internet đã mang lại lợi ích cực kỳ to   lớn cho xã hội loài người. Các công ty và các tổ  chức đang thấy được khả  năng  tăng năng suất và hiệu quả  bằng việc  đầu tư  mạnh các hoạt động trên mạng  Internet.  Sự  phát triển và thay đổi mạnh mẽ của công nghệ Internet, đã tạo ra sự  gia tăng nhanh, phức tạp và đa dạng của các ứng dụng truyền thông. Sự phát triển  nhanh của các ứng dụng, đặc biệt là các ứng dụng có tốc độ cao và việc có nhiều   nhu cầu sử  dụng mạng Internet trong trao  đổi thông tin đã làm cho lưu lượng  truyền thông trên mạng gia tăng rất nhanh, trong khi các tài nguyên truyền thông dù   không ngừng được tăng cường cũng không thể  luôn luôn theo kịp nhu cầu, đó là   một trong những nguyên nhân chính dẫn đến hiện tượng tắc nghẽn và giảm hiệu  suất truyền thông trên mạng.  Trong khi đó yêu cầu của người sử  dụng Internet/Intranet là các dịch vụ  thông tin về kinh tế, văn hoá, xã hội v.v. Ngày càng phong phú trên mạng cũng như  xu thế  tích hợp hầu hết các hệ  thống thông tin, các dịch vụ  thông tin số  liệu nói  riêng và thông tin liên lạc nói chung trên cơ  sở  hạ  tầng Internet (IP Inrastructure).   Trên thực tế, sự bùng nổ và phát triển của các mạng máy tính và các ứng dụng trên  mạng đã gặp phải nhiều vấn đề  nghiêm trọng liên quan đến sự  tắc nghẽn mạng.   Theo thống kê, thường thì các cổng (gateway) Internet sẽ làm mất khoảng 10% của   các gói tin đi đến chúng. Điều này thực sự là nguy hại khi thông tin luôn luôn đòi  hỏi tính toàn vẹn và chính xác của nó. Như  vậy, vấn đề  điều khiển lưu lượng trên mạng để  tránh tắc nghẽn và   sử dụng hữu hiệu tài nguyên mạng càng trở lên hết sức quan trọng và cần thiết để  đáp ứng được yêu cầu truyền thông của người dùng. Trong mạng Internet, bộ giao thức TCP/IP đã được sử dụng ngay từ những  ngày đầu tiên và giữ vai trò quyết định đối với sự hoạt động của mạng. Giao thức   TCP sử dụng cơ chế điều khiển lưu lượng, điều khiển tắc nghẽn và lỗi từ hai đầu  của kết nối để  vận chuyển thông tin trên Internet một cách hiệu quả  và tin cậy.  Vậy nguyên tắc và cơ  chế  thực hiện việc đó của giao thức TCP như  thế  nào để  đảm bảo tính tin cậy và hiệu quả? Đó chính là nội dung chính cần tìm hiểu trong   khoá luận này. 1 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  2. Điều khiển lưu lượng trong giao thức TCP Mục đích của khoá luận là nghiên cứu cơ chế  điều khiển trong giao thức   TCP từ  đó đưa ra các biện pháp thực thi nhằm làm tăng hiệu suất sử  dụng mạng  thông qua cơ  chế  điều khiển lưu lượng và điều khiển tắc nghẽn. Để  thực hiện  được mục đích đó, khoá luận sẽ nghiên cứu về một số vấn đề  liên quan trực tiếp  đó là: Tìm hiểu về cơ chế điều khiển lưu lượng và điều khiển tắc nghẽn trong  giao thức TCP Việc áp dụng các cơ chế đó trong các phiên bản TCP như thế nào? Cuối cùng là dùng mô phỏng để  đánh giá các giải pháp trong cơ  chế  TCP   có tác dụng như thế nào? Với khả năng còn hạn chế cũng như thời gian hạn hẹp, chắc chắn luận văn  này còn nhiều điều thiếu sót, chưa hoàn thiện. Kính mong sự  đóng góp ý kiến và  giúp đỡ của quý thầy cô và các bạn. Hà nội, tháng 06/2006 Nguyễn Thị Hạt 2 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  3. Điều khiển lưu lượng trong giao thức TCP Chương 1. GIỚI THIỆU CHUNG 1.1. Sự ra đời và phát triển của mạng Internet Nguồn gốc đầu tiên của Internet là hệ  thống mạng máy tính của bộ quốc   phòng Mỹ, có tên gọi là mạng Arpanet. Đó là một mạng thí nghiệm được thiết kế  và đưa vào sử  dụng năm 1969 để  tạo điều kiện thuận lợi cho việc hợp tác khoa   học trong các công trình nghiên cứu quốc phòng. Arpanet đã nêu cao triết lý truyền  thông bình đẳng (peer­to­peer), trong đó mỗi máy tính của hệ  thống đều có khả  năng “nói chuyện” với bất kỳ máy tính thành viên nào khác. Bất kỳ mạng máy tính   nào dựa trên cơ  sở  thiết kế  của Arpanet đều được mô tả  như  một tập hợp các   trung tâm điện toán tự  quản, mang tính địa phương và tự  điều hành, chúng được   liên kết dưới dạng “vô chính phủ  nhưng có điều tiết”. Sự  phát triển thiết kế  của  mạng Arpanet đơn thuần chỉ do những yêu cầu về quân sự: mạng này phải có khả  năng chống lại một cuộc tấn công có thể  vô hiệu hoá một số  lớn các trạm thành  viên của nó. Mạng Internet nguyên thuỷ  được thiết kế  nhằm mục đích phục vụ  việc cung cấp thông tin cho thế giới khoa học, nên công nghệ của nó cho phép mọi   hệ thống đều có thể liên kết với nó thông qua một cổng điện tử. Theo cách đó, có  hàng ngàn hệ  máy tính hợp tác, cũng như  nhiều hệ  thống dịch vụ  thư  điện tử  có  thu phí, như  MCI và Compuserve chẳng hạn, đã trở  thành thành viên của Internet.  Cũng từ  đó hệ  thống Internet ra đời, gồm các mạng máy tính được liên kết với  nhau trên phạm vi toàn thế  giới, tạo điều kiện thuận lợi cho các dịch vụ  truyền   thông dữ  liệu, đăng nhập từ  xa, truyền các tệp tin, thư  tín điện tử  và các nhóm  thông tin…Ở  một khía cạnh nào đó, có thể  coi Internet là một phương pháp ghép  nối các mạng máy tính hiện hành, phát triển rộng rãi tầm hoạt động của từng hệ  thống thành viên. Với hơn hai triệu máy chủ  phục vụ  chừng vài trăm triệu người  dùng, mạng Internet đang phát triển với tốc độ  bùng nổ, và việc sử  dụng Internet  đã đang trở thành phổ biến trong cuộc sống hiện nay. Mạng Arpanet có  ảnh hưởng lớn đến sự  tiến hoá của các mạng thương   mại, mô hình tham chiếu được sử dụng trong mạng Arpanet là tiền thân của tất cả  các mạng máy tính, kể cả  mạng Internet ra đời sau này. Về  sau, khi các mạng vệ  tinh và vô tuyến ra đời và kết nối vào Arpanet thì các giao thức sử  dụng trong   3 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  4. Điều khiển lưu lượng trong giao thức TCP Arpanet không đáp  ứng được yêu cầu liên mạng, do đó cần phải có các mô hình  kiến trúc mới, có khả  năng liên kết nhiều mạng với nhau một cách trong suốt.   Kiến trúc này được gọi là mô hình tham chiếu TCP/IP, tên này được đặt theo tên   của hai giao thức cơ bản của nó là TCP và IP. 1.2. Mô hình tham chiếu ISO/OSI và TCP/IP Việc xây dựng hệ  thống phần mềm để  kết nối các máy tính thành một   mạng nhỏ và kết nối các mạng nhỏ thành một mạng toàn cầu như Internet là một  bài toán rất phức tạp, để thực hiện công việc phức tạp này, người ta chia hệ thống   phần mềm thành các lớp, hay tầng (Layer) theo một số  nguyên tắc nhất định và   khoa học. Các lớp này chỉ  tương tác với các lớp trên và dưới của nó. Trong các  mạng khác nhau, số  tầng, tên các tầng, nội dung của các tầng và chức năng của   các tầng có thể  khác nhau; tuy nhiên, mục đích của mỗi tầng là sử  dụng các dịch  vụ do các tầng dưới cung cấp, để cung cấp những dịch vụ nhất định cho các tầng   cao hơn, sao cho các tầng này khi sử  dụng các dịch vụ  của nó, không cần phải  quan tâm tới các thao tác chi tiết mà các dịch vụ phải thực hiện. Để các mạng máy  tính khác nhau có thể truyền thông với nhau, chúng cần tuân theo các chuẩn. Người  ta đã xây dựng nên các chuẩn như vậy, chúng còn được gọi là mô hình tham chiếu,   làm cơ  sở  chung cho các nhà thiết kế  dựa vào khi thiết kế  mạng. Hai mô hình   mạng phổ biến sử dụng các lớp là mô hình OSI (Open System Interconnection) và   mô hình TCP/IP sẽ được trình bày dưới đây. 1.2.1. Mô hình tham chiếu ISO/OSI Thời kỳ đầu khi thiết kế mạng, các nhà thiết kế tự do lựa chọn kiến trúc  cho riêng mình. Từ  đó dẫn đến tình trạng không tương thích giữa các mạng máy   tính với nhau, như về phương pháp truy nhập đường truyền khác nhau, sử dụng họ  giao thức khác nhau,…vấn đề không tương thích đó làm trở ngại cho sự tương tác  giữa những người sử dụng mạng khác nhau. Nhu cầu trao đổi thông tin càng lớn,   nó càng thúc đẩy việc xây dựng khung chuẩn về kiến trúc mạng để làm căn cứ cho  các nhà thiết kế và chế tạo thiết bị mạng. Chính   vì   lý   do   đó   tổ   chức   tiêu   chuẩn   hoá   quốc   tế   ISO   (International  Organization for Standardization) đã lập ra (vào năm 1977) một tiểu ban nhằm phát  4 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  5. Điều khiển lưu lượng trong giao thức TCP triển một khung chuẩn như thế. Kết quả là năm 1984, ISO đã xây dựng và công bố  mô hình tham chiếu cho việc kết nối các hệ  thống mở  OSI (reference model for   Open Systems Interconnection). Mô hình này cung cấp các đại lý với các chuẩn  đảm bảo tạo ra tính tương thích và hoạt động giao tiếp giữa các loại công nghệ  mạng khác nhau đã được giới thiệu bởi nhiều công ty trên toàn thế  giới. Mô hình  OSI định nghĩa các chức năng của mạng ở mỗi lớp cũng như quan hệ giữa các lớp.   Quan trọng hơn, nó là một cái khuôn mẫu thuận tiện cho việc hiểu được cách   thông tin truyền qua mạng. Hơn nữa, mô hình OSI mô tả  cách thức mà thông tin,  hay cụ thể hơn là các gói dữ liệu, truyền từ các chương trình ứng dụng (như bảng  tính và các tài liệu) qua một phương tiện mạng (như các dây dẫn) tới chương trình  ứng dụng khác ở trong một máy tính trên một mạng khác, thậm chí nếu người gửi  và người nhận có các loại phương tiện mạng khác nhau. Mô hình OSI có bảy tầng  được minh hoạ trên hình 1 như sau: Hình 1. Mô hình tham chiếu OSI 5 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  6. Điều khiển lưu lượng trong giao thức TCP Mỗi tầng của mô hình OSI có một bộ  các chức năng mà nó phải thi hành  đối với các gói dữ liệu để truyền từ một nguồn tới một đích trên mạng. Sau đây là  chi tiết chức năng của mỗi tầng: Tầng vật lý (Physical layer): Tầng vật lý giải quyết các vấn đề  ghép nối  cơ khí, điện và giao thức để có thể khởi tạo, duy trì và kết thúc các liên kết  vật lý giữa các thiết bị  truyền thông. Tầng này liên quan đến việc truyền   dòng bit giữa các máy bằng kênh truyền thông vật lý, không xét đến ý  nghĩa và cấu trúc của dòng bit.  Tầng liên kết dữ liệu (Data Link layer): Nhiệm vụ chính của tầng này là  cung cấp đường truyền tin cậy của dữ  liệu qua kết nối vật lý. Để  làm  được điều này, lớp liên kết dữ liệu được liên quan với địa chỉ vật lý, tô­pô  mạng, truy cập mạng, khai báo lỗi, đảm bảo việc biến đổi các tin dạng  bits nhận được từ lớp dưới (lớp vật lý) sang khung số liệu, và điều khiển  lưu lượng. Ví dụ  các giao thức  ở  lớp hai bao gồm: Ethernet, Token Ring,   ISDN, PPP và Frame Relay. Tầng mạng (Network layer): Đảm bảo việc chuyển chính xác số liệu giữa  các thiết bị  cuối trong mạng, nó đảm bảo việc tìm đường tối  ưu cho các  gói dữ liệu bằng các giao thức chọn đường, điều khiển lưu lượng số liệu   trong mạng để tránh xảy ra tắc nghẽn bằng cách chọn các chiến lược tìm   đường khác nhau. Hơn nữa, tầng mạng liên quan đến địa chỉ lô­gíc. Ví dụ  các giao thức tầng 3 là: IP, IPX, và Appletalk. Tầng giao vận (Transport layer)  :Thực hiện vận chuyển các phân đoạn  dữ liệu của lớp Transport từ hệ thống máy gửi đến hệ thống máy nhận và   tập hợp lại thành một luồng dữ  liệu trong hệ  thống máy người nhận.  Đường biên giới giữa lớp Transport và lớp phiên có thể  coi như  là đường  biên giới giữa các giao thức  ứng dụng và các giao thức vận chuyển lưu   lượng dữ liệu. Ngược lại các tầng: ứng dụng, trình bày, phiên là liên quan   với các  ứng dụng, bốn tầng thấp nhất liên quan với việc vận chuyển dữ  liệu. Tầng Transport cố gắng cung cấp dịch vụ truyền dữ liệu tin cậy giữa   hai máy của người gửi và người nhận qua mạng. Ví dụ các giao thức tầng   4 như: TCP, UDP và SPX. 6 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  7. Điều khiển lưu lượng trong giao thức TCP Tầng phiên (Session layer):  Đảm bảo việc liên kết giữa hai thực thể  có  nhu cầu trao đổi số liệu, ví dụ như người dùng và một máy tính ở xa, được   gọi là một phiên làm việc. Nó quản lý việc trao đổi số liệu, như thiết lập  giao diện giữa người dùng và máy, xác định thông số  điều khiển trao đổi  số liệu, v.v. Tầng trình bày dữ liệu (Presentation layer). Đảm bảo việc thích ứng các  cấu trúc dữ liệu khác nhau của người dùng với cấu trúc dữ liệu thống nhất   sử dụng trong mạng. Nó có chứa các thư viện các yêu cầu của người dùng,  thư viện tiện ích, v.v. Tầng Ứng dụng (Application layer). Đảm bảo việc cung cấp các phương  tiện để  người sử dụng có thể  truy nhập được vào môi trường OSI. Ví dụ  về các giao thức tầng ứng dụng: Telnet và HTTP, .v.v. Truyền dữ liệu trong mô hình OSI: Khi ứng dụng X trên một máy tính cần  gửi dữ liệu cho  ứng dụng Y trên một máy tính khác trên mạng, nó sẽ trao dữ liệu   cho tầng ứng dụng, tầng  ứng dụng có thể gắn thêm một khối dữ liệu có cấu trúc   xác định, gọi là header, vào đầu gói số liệu của nó rồi gửi xuống tầng trình bày dữ  liệu. Tầng trình bày dữ liệu có thể  chuyển đổi gói số liệu này theo các cách khác   nhau và có thể bổ sung header của nó rồi gửi kết quả xuống tầng phiên bên dưới.   Đối với tầng này, nó không phân biệt header của tầng trên với dữ liệu trong gói số  liệu mà nó nhận được. Quá trình này cứ tiếp tục cho tới khi dữ liệu truyền xuống   tầng vật lý, tại đó dữ liệu mới thực sự được truyền tới máy nhận. Tại máy nhận,   các header lần lượt được  tách ra và loại bỏ khi gói số liệu đi qua các tầng từ dưới   lên trên, cho tới khi nó đi đến  ứng dụng Y. Tầng nào phát hiện ra lỗi thì yêu cầu   phát lại ngay tại tầng đó. 1.2.2. Mô hình tham chiếu TCP/IP Mặc dù mô hình OSI được thừa nhận là đẹp và hợp lý về  mặt mô hình,   nhưng thực tế có một chuẩn khác mang tính kỹ thuật và được sử dụng trên Internet  là TCP/IP (Transmission Control Protocol/Internet Protocol). Họ  giao thức TCP/IP  cung cấp phương tiện truyền thông liên mạng được hình thành từ  những năm 70.  Do vậy, chúng ta cần phải đặc biệt quan tâm tới các kết nối TCP trong việc điều  khiển lưu lượng. Khác với mô hình ISO/OSI, tầng mạng trong mô hình TCP/IP sử  7 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  8. Điều khiển lưu lượng trong giao thức TCP dụng giao thức liên mạng “không kết nối” (connectionless) IP, tạo thành hạt nhân   hoạt động của Internet. Cùng với các thuật toán định tuyến RIP, OSPF, BGP, tầng   liên mạng IP cho phép kết nối một cách mềm dẻo và linh hoạt các loại mạng vật  lý khác nhau, như: Ethernet, Token Ring, X.25, v.v. Giao thức trao đổi dữ liệu “có kết nối” (connection­oriented) TCP được sử  dụng ở tầng giao vận để  đảm bảo tính chính xác và tin cậy việc trao đổi dữ  liệu  dựa trên kiến trúc kết nối “không kết nối” ở tầng mạng IP. Các giao thức hỗ  trợ   ứng dụng phổ  biến như, truy nhập từ  xa (Telnet),   chuyển tệp (FTP),  dịch vụ  World Wide Web (HTTP),  thư   điện tử  (SMTP),v.v.   Ngày càng được cài đặt phổ  biến như  những bộ  phận cấu thành của các hệ  điều  hành thông dụng. Hình 2 sau đây trình bày hai mô hình tham chiếu TCP/IP và OSI để tiện so sánh. Hình 2. Mô hình tham chiếu OSI và TCP/IP Sau đây là chi tiết các tầng trong mô hình TCP/IP: Tầng Internet  :Tầng Internet đôi khi được gọi là tầng IP, có chức năng  tương tự tầng mạng trong mô hình OSI. Nhiệm vụ của tầng Internet là định   tuyến gói số liệu, điều khiển lưu lượng và điều khiển tắc nghẽn. Mỗi gói  số  liệu có thể  đi đến đích theo các con đường khác nhau; tại đích, thứ  tự  nhận các gói số  liệu có thể  khác với thứ  tự  lúc chúng được phát đi từ  nguồn, do đó tầng giao vận trên nó giải quyết vấn đề thứ tự các gói số liệu.  8 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  9. Điều khiển lưu lượng trong giao thức TCP Tầng Internet định nghĩa một khuôn dạng gói số  liệu và giao thức chính là  giao thức IP. Tầng giao vận: Tầng này phải được thiết kế  sao cho các thực thể  ngang  hàng ở máy nguồn và máy đích có thể truyền thông với nhau, tương tự như  trong mô hình OSI. Tại tầng này, người ta định nghĩa hai giao thức kiểu đầu  cuối ­ đầu cuối (end­to­end) là TCP và UDP. o TCP là giao thức hướng kết nối, bảo đảm, nó vận chuyển dòng byte   sinh ra từ máy (nguồn) tới một máy tuỳ ý khác (đích) trong liên mạng mà không có  lỗi. TCP phân mảnh dòng byte từ các tầng trên đi xuống thành các gói số liệu riêng   biệt rồi chuyển từng gói số  liệu này xuống cho tầng Internet. Tại máy đích, tiến  trình TCP nhận và thực hiện lắp ráp các gói số liệu nhận được lại thành dòng byte   rồi chuyển lên tầng trên. TCP cũng có các chức năng điều khiển lưu lượng và điều   khiển tắc nghẽn. Các chức năng này sẽ  được nghiên cứu phần sau trong tài liệu   này. o UDP là giao thức không hướng kết nối, không bảo đảm (không có sự  biên nhận cho gói số liệu UDP), dành cho các ứng dụng không muốn sử dụng các   chức năng điều khiển lưu lượng và phân phát các gói số liệu đúng thứ tự của TCP   mà muốn tự  cung cấp các chức năng này. UDP được sử  dụng rộng rãi trong các   ứng dụng kiểu dùng một lần, khách/chủ  và các ứng dụng trong đó việc phân phát  tin nhanh chóng quan trọng hơn việc phân phối tin chính xác. Mối quan hệ giữa IP,  TCP và UDP được thể hiện trên hình 3 sau: Hình 3. Các giao thức và các mạng trong mô hình TCP/IP ban đầu 9 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  10. Điều khiển lưu lượng trong giao thức TCP Tầng  ứng dụng: Tầng  ứng dụng thực chất là tầng hỗ  trợ   ứng dụng, tầng  này chứa tất cả các giao thức bậc cao, hỗ trợ cho các ứng dụng. Trong các   mô hình đầu tiên, tầng này bao gồm các giao thức Telnet (Virtual Terminal   Protocol), FTP và SMTP v.v. Tầng host­to­network: Bên dưới tầng Internet là một khoảng trống lớn, mô  hình tham chiếu TCP/IP thực tế  hầu như  không nói gì về  tầng này. Ngoài  việc chỉ ra rằng máy tính (host) phải nối với mạng bằng cách sử dụng một  số giao thức để có thể gửi các gói số liệu IP đi  trên mạng. Tầng này không  được định nghĩa và nó khác nhau trên các máy tính khác nhau cũng như trên  các mạng khác nhau. 1.3. Vấn đề  tắc nghẽn và sự  cần thiết của cơ  chế  điều khiển  lưu lượng 1.3.1. Hiện tượng tắc nghẽn Trong mạng máy tính, tắc nghẽn xảy ra khi số lượng gói số  liệu đến nút   mạng vượt quá khả  năng xử  lý của nó hoặc vượt quá khả  năng vận tải của các   đường truyền đi ra, điều đó dẫn đến việc thông lượng của mạng bị  giảm đi khi  lưu lượng đến mạng tăng lên. Hiện tượng tắc nghẽn có thể  xảy ra  ở  một hoặc  một số nút mạng, hay trên toàn mạng và được miêu tả trên hình 4 như sau: Hình 4. Sự xuất hiện tắc nghẽn trong mạng Khi số  lượng gói số  liệu đến mạng còn tương đối nhỏ, nằm trong khả  năng vận tải của nó, chúng sẽ  được phân phát đi hết, số  lượng gói số  liệu được  chuyển đi tỉ lệ thuận với số lượng gói số liệu đến mạng. Do luôn có một tỉ lệ gói   10 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  11. Điều khiển lưu lượng trong giao thức TCP số liệu phải phát lại do bị lỗi trong quá trình vận chuyển, lưu lượng mà mạng thực   sự phải vận chuyển nhìn chung lớn hơn lưu lượng đi qua mạng (thông lượng). Khi lưu lượng đến cao quá một mức nào đó, các nút mạng không còn đủ  khả  năng chứa và chuyển tiếp các gói số  liệu, do đó các nút mạng bắt đầu phải  loại bỏ các gói số liệu. Bên gửi sẽ phát lại các gói số liệu không được biên nhận  sau một khoảng thời gian nhất định, gọi là timeout (thời gian chờ). Nếu lưu lượng   đến mạng tiếp tục tăng lên nữa, tỉ  lệ gói số  liệu phát lại trên tổng số  gói số  liệu   trong mạng có thể  tăng đến 100%, nghĩa là không có gói số  liệu nào được phân   phát đi cả, thông lượng của mạng giảm xuống bằng không, mạng bị  nghẹt hoàn   toàn. Sự tắc nghẽn có thể do một số yếu tố dẫn đến. Nếu bỗng nhiên dòng các   gói tin đi đến trên hai hoặc ba lối vào của một nút mạng đều cần cùng một đường   đi ra, một hàng đợi sẽ hình thành. Nếu nút mạng không có đủ bộ nhớ để lưu tất cả  chúng, các gói tin bắt đầu bị  mất đi. Việc bổ  sung thêm bộ  nhớ  trong một chừng   mực nào đó là có ích, tuy nhiên Nagle (1987) đã chỉ ra rằng nếu một Router có một   lượng bộ  nhớ  vô hạn thì vấn đề  tắc nghẽn trở  lên tồi tệ  hơn chứ  không tốt hơn   lên, bởi vì vào lúc các gói tin đi lên đến đầu hàng đợi thì chúng đã bị  timeout (liên   tiếp) mất rồi, và các bản sao của chúng đã được gửi đi. Tất cả  các gói tin này sẽ  được gửi đi tới Router tiếp theo, làm tăng thêm tải cho mọi con đường tới đích.   Các bộ vi xử lý chậm cũng gây ra tắc nghẽn. Nếu CPU của một Router chạy chậm   khi thực hiện nhiệm vụ  kế  toán (bookeeping) của nó (queueing buffers, updating  tables..), các hàng đợi có thể  trở  thành lớn hơn, mặc dù vậy có sự  vượt quá mức   độ  (excess) của dung lượng hàng đợi. Tương tự, các đường truyền có dải thông   thấp cũng có thể gây ra tắc nghẽn. Việc nâng cấp đường truyền nhưng không đổi  bộ  xử  lý hoặc ngược lại đôi khi cũng cải thiện được tình hình chút ít, nhưng   thường là chỉ  làm dời điểm tắc nghẽn đi mà thôi. Tương tự  như  vậy, việc nâng  cấp từng phần chứ  không nâng cấp toàn bộ  hệ  thống thường cũng chỉ  cải thiện  được phần đó mà toàn bộ hệ thống ít được cải thiện. Tắc nghẽn có khuynh hướng tự nó làm gia tăng. Nếu một Router không có  bộ nhớ đệm trống, nó sẽ phải lờ các gói tin mới đi đến. Khi một gói tin bị loại bỏ,   Router gửi sẽ bị timeout và sẽ phát lại gói tin đó, việc phát lại có thể xảy ra nhiều  lần. Bởi vì nó không được phép vứt bỏ  các gói tin trong bộ  đệm khi chưa nhận   11 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  12. Điều khiển lưu lượng trong giao thức TCP được biên nhận, nên sự  tắc nghẽn  ở  bên nhận bắt buộc bên gửi nén lại (refrain)   việc giải phóng bộ  đệm mà lẽ  ra được giải phóng. Theo kiểu như  vậy, sự  tắc   nghẽn quay ngược trở lại phía bên gửi, giống như những chiếc ô tô đi tới quầy thu   lệ phí giao thông bị ùn lại thành một hàng dài dần về phía chúng đã từ đó đi đến. 1.3.2. Khái niệm điều khiển lưu lượng Một vấn đề đặt ra là phải làm gì với một người gửi luôn muốn truyền các  gói tin nhanh hơn tốc độ mà người nhận có thể nhận được. Tình huống này rất dễ  xảy ra khi người gửi đang chạy một một máy tính tốc độ  cao hoặc tải nhẹ, còn   người nhận đang chạy một máy tốc độ thấp hoặc tải nặng. Người gửi cứ tiếp tục   bơm các gói tin ra với tốc độ cao cho tới khi người nhận hoàn toàn bị lụt. Ngay cả  khi việc truyền tin không có lỗi, tại một thời điểm nhất định nào đó người nhận sẽ  không có khả năng quản lý các gói tin khi chúng đi đến và sẽ bắt đầu làm mất một  số  gói tin. Điều rõ ràng là cần phải làm một việc gì đó để  tình huống này không  xảy ra. Giải pháp thông thường là đưa vào sự kiểm soát lưu lượng (Flow Control)   để  điều tiết người gửi, làm cho người gửi không gửi nhanh hơn mức mà người   nhận có thể  xử  lý được. Việc điều tiết này thường cần một kiểu nào đó của cơ  chế phản hồi, sao cho bên gửi có thể nhận thấy được bên thu có thể chạy theo kịp  mình hay không. Người ta đã biết đến nhiều giải pháp (scheme) điều khiển lưu lượng khác  nhau, nhưng phần lớn trong chúng là sử dụng cùng một nguyên lý cơ sở. Giao thức  chứa các quy tắc được định nghĩa rõ ràng về việc khi nào bên gửi có thể truyền đi   các gói tin tiếp theo. Các quy tắc này thường không cho phép gửi các gói tin khi mà   bên nhận chưa cho phép một cách trực tiếp hoặc gián tiếp. Thí dụ, khi một kết nối   được thiết lập, bên nhận có thể  nói: “bây giờ  anh có thể  gửi cho tôi n gói tin,   nhưng sau khi gửi chúng đi, đừng có gửi thêm nữa khi mà tôi chưa bảo anh gửi   tiếp”. Để  đảm bảo việc truyền thông trên mạng được trong suốt, người ta đưa   ra một số  thuật toán giúp cho mạng lưu thông liên tục, đồng thời tăng hiệu suất   hoạt   động   của   mạng   lên   cao   nhất.   Đó   chính   là   phương   pháp   điều   khiển   lưu   lượng,  là cách phòng để tránh xảy ra tắc nghẽn mạng. 12 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  13. Điều khiển lưu lượng trong giao thức TCP Nói chung điều khiển lưu lượng liên quan tới việc vận chuyển kiểu point­ to­point giữa một người gửi đã biết nào đó với một người nhận. Công việc của nó   là đảm bảo rằng bên gửi tốc độ  nhanh không thể  tiếp tục truyền dữ  liệu nhanh   hơn mức mà bên nhận có thể  tiếp thu được. Điều khiển lưu lượng hầu như luôn   luôn liên quan tới một sự phản hồi trực tiếp nào đó từ  phía người nhận tới phía   người gửi để  báo cho người gửi về  công việc đang được làm ở  bên người nhận   như thế nào. 1.3.3. Khái niệm điều khiển tắc nghẽn Như  trên ta đã thấy, hiện tượng tắc nghẽn làm giảm hiệu suất sử  dụng   mạng, thậm chí có thể  làm cho mạng hoàn toàn bị  nghẹt, không hoạt động được.   Vậy phải có phương pháp như thế nào đó để tránh được các tắc nghẽn. Nói   chung   điều   khiển   tắc   nghẽn   (Congestion   Control)   phải   thực   hiện   nhiệm vụ  để  đảm bảo rằng mạng có khả  năng vận tải lưu lượng được đưa vào   lưu thông. Đó là vấn đề toàn cục, liên quan đến cả hành vi của mọi Host, Router,   các quá trình chứa và chuyển tiếp (store­and­forward) trong mỗi Router, và tất cả   các yếu tố khác có khuynh hướng làm giảm dung lượng vận tải của mạng. 1.3.4. Các cơ chế điều khiển lưu lượng và điều khiển tắc nghẽn 1.3.4.1 Điều khiển lưu lượng (flow control) Có thể thực hiện điều khiển lưu lượng bằng các phương pháp sau: Tận dụng tối đa đường truyền: Trong các thủ tục truyền dữ  liệu, các  gói tin được truyền đi theo một hướng. Trong hầu hết các ứng dụng thực tế chúng   ta cần truyền dữ liệu theo cả hai hướng. Một cách để  có thể  truyền dữ  liệu theo   hai hướng (full­duplex) là sử dụng hai kênh truyền thông riêng biệt, trên mỗi kênh   chỉ truyền dữ liệu theo một chiều (simplex). Như vậy ta cần hai đường truyền vật  lý, một đường truyền đi dữ liệu, còn một đường dùng cho người nhận gửi tín hiệu   ACK về cho người gửi. Ta thấy rằng đường truyền thứ hai hiệu suất sử dụng gần   như  bằng 0, rất lãng phí. Do đó, người ta đã áp dụng biện pháp tận dụng kênh  truyền được trình bày dưới đây. 13 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  14. Điều khiển lưu lượng trong giao thức TCP Trả lời ACK+Data: Cách tốt nhất là làm sao chỉ cần một đường truyền   mà vẫn có thể truyền thông tin theo cả hai hướng, theo cả hai hướng dung lượng   đường truyền là  như  nhau. Trong mô hình này các gói tin dữ  liệu đi từ  A đến B   được trộn lẫn với các biên nhận (ACK) của A gửi cho B. Bên nhận cần xem   trường loại gói tin  ở header của gói tin nhận được để  biết gói tin đó là gói tin dữ  liệu hay gói tin ACK. Sử dụng cơ chế cửa sổ (giống như cánh đập nước để điều hoà lưu   thông):   Tắc   nghẽn   cũng   có   thể   xảy   ra   khi   người   gửi   tính   thời   gian   hết   giờ  (timeout) quá sớm. Chúng ta cần thủ tục hoạt động tốt hơn, nó vẫn đồng bộ được   khi gặp các tình huống trục trặc đồng thời xảy ra: gói tin lặp đi lặp lại, mất một   số  gói tin, thời gian chờ  timeout sớm. Ba thủ  tục để  khắc phục các trục trặc đó,  chúng được gọi chung tên là sliding window. Các thủ tục này khác nhau ở tính hiệu  quả, độ phức tạp và lượng bộ nhớ cần đến. Giao thức cửa sổ trượt (sliding window) một bit – cơ chế cửa sổ: o Trong tất cả các thủ tục sliding window, mỗi gói tin gửi đi chứa một  số thứ  tự  nằm trong miền từ 0 tới một giá trị  cực đại nào đó (thường được chọn   bằng 2n­1) số thứ tự này chiếm một trường dài n bit. Trong các thủ tục tinh vi hơn   người ta dùng n>1. o Điểm căn bản nhất của các thủ  tục sliding window là tại mọi thời   điểm người gửi ghi nhớ danh sách các số thứ tự liên tiếp tương ứng với các gói tin   nó được phép gửi đi. Các gói tin này được gọi là nằm trong cửa gửi (Sending   Window).   Tương   tự   như   vậy,   bên   người   nhận   cũng   ghi   nhớ   một   cửa   nhận   (Receiving Window) tương ứng với các gói tin nó được phép nhận, hai loại cửa sổ  trên không nhất thiết phải có cùng các giới hạn trên và giới hạn dưới cũng như  kích thước. o Các số thứ tự nằm trong cửa sổ của người gửi thể hiện các gói tin đã   gửi đi nhưng còn chưa được biên nhận (ACK). Khi có một gói tin mới do tầng  mạng gửi đến, nó sẽ  được gán số  thứ  tự  cao nhất tiếp theo, do đó mép trên của  cửa sổ sẽ tăng lên 1. Khi nhận được ACK, mép dưới cửa sổ được tăng lên 1. Bằng   cách này cửa sổ luôn ghi nhớ danh sách các gói tin còn chưa được biên nhận. 14 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  15. Điều khiển lưu lượng trong giao thức TCP o Vì các gói tin trong cửa sổ gửi có thể bị hỏng hoặc bị mất trên đường  truyền, vì vậy bên gửi phải nhớ  tất cả  các gói tin mà nó đã gửi. Khi nhận được   mỗi gói tin, bên nhận sinh ra một tín hiệu biên nhận ­ ACK để gửi cho bên gửi và   sau đó cửa sổ  bên gửi sẽ  tăng lên 1. Khác với cửa sổ  bên người gửi, cửa sổ  bên   người nhận luôn luôn giữ kích thước ban đầu của nó. o Nếu kích thước cửa sổ  bên nhận bằng 1, có nghĩa là tầng Data Link  bên nhận chỉ chấp nhận các frame theo đúng thứ  tự, nếu kích thước cửa sổ nhận   lớn hơn 1 thì không phải như  vậy. Trái lại tầng mạng truyền dữ  liệu cho tầng   Data Link theo thứ tự bình thường, không phụ thuộc kích thước cửa sổ. Quản  lý   các   gói  tin   trong  cơ   chế   cửa  sổ   một  bit:  Thủ   tục   sliding  window một bit sử dụng cơ chế stop­and­wait, người gửi truyền đi một gói tin và   chờ biên nhận (ACK) trước khi gửi gói tin tiếp theo. Có hai trường hợp xảy ra: bên   A phát trước (bình thường) bên B và A, B cùng phát, đây là trường hợp bất thường. o Trường hợp có một bên A phát trước: Tầng Data Link của bên A sau  khi nhận gói tin đầu tiên từ  tầng mạng của nó, sẽ  xây dựng nên một  frame (gồm: header+data, header gồm 3 phần: Seq: số  thứ    tự  phát;  ACK­ thứ tự biên nhận và số thứ tự gói tin) và gửi đi. Tại bên thu (B)   khi nhận được frame này, tầng Data Link sẽ kiểm tra xem nó có phải   là frame bị phát lặp lại (duplicate) không? Nếu đúng thì loại bỏ đi, nếu   không thì chuyển cho tầng mạng và cửa sổ của người nhận sẽ dịch đi. Trong trường hợp này thể hiện trên hình 5 a), mọi frame gửi đi  đều được biên nhận. Mỗi gói tin đi tới đích đều mang đến một gói tin   cho tầng mạng bên nhận, không có frame lặp. o Trường hợp A và B  cùng phát: Giả sử rằng A gửi frame 0 cho B, còn   B gửi frame 0 cho A và thời gian timeout của A hơi ngắn, do đó bên A  luôn xảy ra timeout khi gửi một loạt các frame giống nhau với Seq=1   và ACK=1. Khi frame đầu tiên không có trục trặc đi tới B, B sẽ  biên nhận,   biến nhớ  giá trị  gói tin chờ  nhận framexpected được thiết lập giá trị  1. Tất cả các frame liên tiếp sau đó sẽ bị từ chối vì stt (sequence) của   chúng sai. Hơn nữa mọi gói tin lặp (duplicate) có ACK=1 và b vẫn   15 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  16. Điều khiển lưu lượng trong giao thức TCP đang đợi một ACK=0, B sẽ không nhận các gói tin từ tầng mạng của   nó chuyển xuống. Cứ  mỗi khi từ  chối nhận một frame lặp gửi tới, B lại gửi cho a   một frame có seq=0 và ACK=0. Cuối cùng có một frame như  vậy B   tới A, làm cho A bắt đầu gửi packet tiếp theo. Hình 5. Mô hình gửi nhận gói tin Bằng cách này không có một tình huống kết hợp giữa mất một số  frame và timeout quá sớm có thể làm cho thủ tục phân phối các packet   lặp lên trên tầng mạng bên trên nó, cũng như  bỏ  qua một packet,  hoặc rơi vào tắc nghẽn (deadlock). Một tình huống đặc biệt xảy ra khi cả  hai bên đồng thời gửi đi   packet đầu tiên, khi đó xảy ra sự  khó đồng bộ, tình huống này được  thể hiện trên màn hình 1.5a) Hình 1.5b) hai frame đầu của hai bên được gửi đi đồng thời, một  nửa số frame là lặp, tuy vậy không có lỗi truyền. Một  giao thức  sử   dụng  go­back­n:  Trong các  trường hợp  được  xét  trước đây ta giả  thiết rằng thời gian truyền một frame từ  bên gửi tới bên nhận   16 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  17. Điều khiển lưu lượng trong giao thức TCP cộng với thời gian truyền frame biên nhận là nhỏ, không đáng kể. Trong một số  trường hợp thực tế các giả  thiết này sẽ  hoàn toàn sai, không phù hợp. Thí dụ  khi   truyền qua vệ tinh với tốc độ 50kbps, thời gian từ khi truyền đi tới khi nhận được   ACK là 500 ms, trong khi đó thời gian phát một gói tin (khoảng 1000 bit) cỡ 20ms,   sau khi truyền 270 ms thì bên nhận nhận được đẩy đủ frame, sau 520ms thì bên gửi   nhận được ACK (giả  sử  bên nhận nhận ngay và frame biên nhận là ngắn), do đó   hiệu suất xấp xỉ  bằng 20/500 hay 4%, giá trị  này rất thấp (xấp xỉ  96 % thời gian   kênh truyền bị  chiếm không sử dụng). Điều này chính là hệ  quả  của việc đòi hỏi   bên gửi phải đợi nhận được biên nhận rồi mới được gửi frame tiếp theo. Như  vậy, bên gửi nên phát đi liên tục các frame trong khoảng thời gian bằng thời gian đi   và về  của tín hiệu rồi mới chờ  ACK, trong thí dụ  trên tốt nhất chọn w=26 (như  vậy window của người gửi có giá trị  cực đại =26). Kỹ thuật trên gọi là pinelining   (vận chuyển bằng đường ống). Việc vận chuyển liên tục các frame trên kênh truyền thông không tin   cậy cũng phải giải quyết một loạt các vấn đề  nghiêm trọng: có một   frame nằm giữa dãy các frame gửi đi bị  hỏng hoặc bị  mất, bên nhận  nhận một số frame rồi bên gửi mới phát hiện có một lỗi gì đó…Chúng   ta cần nhớ là tầng Data Link bên nhận bắt buộc phải gửi các packet lên  tầng mạng bên trên nó theo đúng thứ tự. Có hai cách giải quyết như sau: o Cách thứ 1. “go back n”­ phát lại từ gói tin thứ n: khi gặp frame có lỗi  thì nó loại bỏ các frame tiếp theo dù chúng không bị  lỗi, không gửi biên nhận các   frame bị  loại bỏ. Bên nhận sẽ  bị  hết giờ (timeout) và nó sẽ  truyền lại tất cả  các  frame chưa có biên nhận. Cách giải quyết này ứng với trường hợp cửa sổ nhận có  kích thước bằng 1 và gây lãng phí lớn dải thông, nhất là khi tần suất lỗi cao như  hình 6 sau đây:  17 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  18. Điều khiển lưu lượng trong giao thức TCP Hình 6. Ảnh hưởng của một lỗi khi kích thước cửa sổ của người nhận  là 1 o Cách thứ  2. Chỉ  phát lại một cách có chọn lọc gói tin thứ  n có lỗi –  “selective repeat”: khi gặp gói tin có lỗi bên nhận vẫn cứ nhận các gói tin tiếp sau  nếu chúng không có lỗi. Khi bên gửi nhận được ACK nó mới biết frame nào đã bị  hỏng trên đường truyền và sẽ phát lại các gói tin này. Cách giải quyết này ứng với  trường hợp cửa sổ  nhận có kích thước lớn hơn 1. Mọi frame nằm trong cửa sổ  đều có thể  được nhận và được nhớ  đệm cho tới khi frame trước chúng được   truyền cho tầng mạng. Cách giải quyết này đòi hỏi vùng nhớ  đệm của tầng Data   Link phải đủ lớn, hình 1.7 minh hoạ cách giải quyết này: Hình 7. Ảnh hưởng của một lỗi khi kích thước cửa sổ người nhận là  lớn 1.3.4.2 Điều khiển tắc nghẽn Các nguyên tắc chung của việc kiểm soát tắc nghẽn:   Nhiều vấn đề  trong các hệ  thống phức tạp, chẳng hạn mạng máy tính, có thể  nhìn nhận theo   quan điểm của lý thuyết điều khiển. Cách tiếp cận này dẫn tới việc chia các giải  pháp làm hai nhóm: vòng lặp mở (open loop) và vòng lặp đóng (close loop). Các giải pháp open loop giải quyết vấn đề bằng thiết kế tốt, về thực chất  là bảo đảm để vấn đề tắc nghẽn không xảy ra, đó là vấn đề  số một. Một khi hệ  thống đang chạy thì không sửa chữa nữa.  Các công cụ  để  thực hiện giải pháp điều khiển kiểu open loop bao gồm   việc quyết định khi nào thì chấp nhận lưu lượng mới vào mạng, quyết định khi   nào thì loại bỏ  các packet và loại bỏ các gói tin nào và ra các quyết định theo lịch  trình (scheduling decisions) tại các điểm khác nhau của mạng. Tất cả các việc này  18 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  19. Điều khiển lưu lượng trong giao thức TCP có chung một điểm là chúng ra quyết định mà không xem xét đến trạng thái hiện   thời của mạng. Trái lại, các giải pháp close­loop lại dựa trên khái niệm về vòng   phản hồi (feedback loop). Cách tiếp cận này có ba phần khi  đem áp  dụng cho việc kiểm soát tắc nghẽn. Theo dõi hệ thống để phát hiện ra tắc nghẽn xảy ra khi nào và ở đâu: có  thể sử dụng nhiều cách đo (metric) khác nhau để theo dõi subnet để phát hiện tắc   nghẽn. Một số cách chính trong số đó là tính phần trăm số các gói tin bị loại bỏ do  thiếu không gian nhớ  đệm, tính trung bình chiều dài hàng đợi, số  gói tin quá hạn   (time­out) được phát lại, thời gian trễ  trung bình của gói tin…Trong mọi trường   hợp sự gia tăng của các số đo này chỉ ra rằng sự tắc nghẽn đang tăng lên. Chuyển các thông tin này cho những nơi có thể  phản  ứng lại: đây là   bước thứ  hai trong vòng phản hồi để  chuyển các thông tin về  sự  tắc nghẽn từ  điểm nó được phát hiện tới những nơi có thể  làm một cái gì đó nhằm giải quyết  vấn đề  này. Một cách rất hiển nhiên là để  cho Router phát hiện ra tắc nghẽn gửi   một gói tin tới nguồn hoặc các nguồn sinh ra giao thông, báo cho chúng biết về sự  cố. Tất nhiên là các gói tin bổ sung này làm tăng tải đúng vào thời điểm không nên   có thêm tải­ lúc mạng (subnet) bị tắc nghẽn. Điều chỉnh lại hệ thống để  sửa chữa sự cố: trong tất cả các kế  hoạch   loại có phản hồi (feedback), người ta hy vọng rằng việc biết được sự  tắc nghẽn   sẽ  làm cho các máy tính trên mạng thực hiện các phản  ứng phù hợp để  giảm tắc  nghẽn. Để  làm việc một cách đúng đắn, tỉ  lệ  thời gian phải được điều chỉnh rất   cẩn thận. Những lúc có hai gói tin cùng đi đến, Router kêu lên "stop", những lúc  Router rỗi đến 20ms nó kêu lên "go", hệ thống sẽ dao động lớn và không bao giờ  hội tụ. Mặt khác, nếu nó lại đợi tới 30 phút để cho chắc chắn trước khi nói gì đó   thì cơ  chế  kiểm soát tắc nghẽn sẽ  phản  ứng quá chậm trễ, không có giá trị  sử  dụng trong thực tế. Để cơ chế làm việc tốt, cần đến một kiểu tính trung bình nào   đó, tuy nhiên việc chọn thời gian là hằng số không phải là một việc tầm thường. Các chính sách ngăn chặn tắc nghẽn:  Chúng ta bắt đầu nghiên cứu các  phương pháp kiểm soát tắc nghẽn bằng việc xem xét các hệ  thống open­loop. Các  hệ  thống này được thiết kế  nhằm mục đích số  một là để  giảm tối thiểu sự  tắc  19 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
  20. Điều khiển lưu lượng trong giao thức TCP nghẽn, chứ  không để  nó xảy ra rồi mới phản  ứng lại. Người ta cố gắng đạt mục  đích của mình bằng các chính sách phù hợp với các mức tầng khác nhau. 1.3.5. Cách thực hiện cơ chế điều khiển lưu lượng Điều khiển lưu lượng liên quan đến việc vận chuyển giữa một người gửi   đã biết nào đó và một người nhận. Nhiệm vụ của nó là đảm bảo rằng bên gửi có   tốc độ  nhanh không thể  tiếp tục truyền dữ  liệu nhanh hơn mức mà bên nhận có  thể tiếp thu được. Điều khiển lưu lượng luôn luôn liên quan đến một sự phản hồi   trực tiếp từ phía người nhận đến người gửi để báo cho bên gửi về khả năng nhận   số liệu thực của bên nhận. Điều khiển tắc nghẽn thực hiện nhiệm vụ  đảm bảo cho mạng có khả  năng vận chuyển lưu lượng đưa vào. Đó là một vấn đề  toàn cục, liên quan đến  hành vi của mọi nút mạng, quá trình chứa và chuyển tiếp trong mỗi nút mạng và   các yếu tố khác có khuynh hướng làm giảm thông lượng của mạng. Điều khiển lưu lượng và điều khiển tắc nghẽn là hai khái niệm khác nhau,   nhưng liên quan chặt chẽ với nhau. Điều khiển lưu lượng là để  tránh tắc nghẽn,  còn điều khiển tắc nghẽn là để  giải quyết vấn đề  tắc nghẽn khi nó xuất hiện   hoặc có dấu hiệu sắp xảy ra. Trong thực tế  triển khai thực hiện các thuật toán  điều khiển lưu lượng và điều khiển tắc nghẽn, nhiều khi cả  hai thuật toán này   cùng được cài đặt trong một giao thức, thể hiện ra như là một thuật toán duy nhất,   thí dụ trong giao thức TCP. Trong nhiều tài liệu thuộc lĩnh vực mạng máy tính, hai  khái niệm này được sử dụng như nhau và được coi là đồng nghĩa. Trong các phần  sau của luận án này, tác giả sẽ theo quan điểm đó, các vấn đề về điều khiển lưu  lượng và điều khiển tắc nghẽn sẽ  được trình bày chung, với tên gọi điều khiển   lưu lượng. Các tầng có thể  thực hiện điều khiển lưu lượng: Có thể thực hiện điều khiển  lưu lượng ở một vài tầng trong mạng, thí dụ:  Điều khiển lưu lượng  ở tầng giao vận : thường được gọi là điều khiển  lưu lượng đầu cuối­ đầu cuối (end­to­end), nhằm tránh cho bộ  đệm của quá trình   nhận tại đích khỏi bị tràn. 20 Nguyễn Thị Hạt ­ Mạng máy tính và truyền thông­ ĐHCN­ ĐHQG Hà nội
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2