CHƯƠNG 1 BÀI TOÁN QUẢN LÝ HÀNG ĐỢI TÍCH CỰC TRÊN MẠNG TCP/IP 1. Mạng TCP/IP và bài toán điều khiển tắc nghẽn 1. Truyền số liệu trên mạng TCP/IP Hình 1. Kiến trúc mạng đơn giản.
Trên mạng TCP/IP, thông tin muốn gửi đi được chia thành các đơn vị dữ liệu nhỏ gọi là gói tin. Ngoài việc gửi đi các gói tin, phía phát đồng thời đóng gói những thông tin điều khiển việc chuyển vận gói tin đó và đặt nó ở đầu của mỗi gói tin (Packet Header - PH). Mỗi một PH chứa địa chỉ nguồn để định rõ địa chỉ nơi gửi gói đó. PH cũng chứa địa chỉ IP đích là nơi mà gói tin phải chuyển đến.
Các bộ định tuyến sẽ dùng địa chỉ đích này để xác định đích đến của gói tin và thực hiện công việc chuyển gói tin đến đúng địa chỉ. Khi có nhiều gói tin từ nhiều nguồn khác nhau cùng đến bộ định tuyến với một lộ trình đầu ra giống nhau thì chỉ có duy nhất một gói tin được đáp ứng, các gói tin còn lại bị đẩy vào một hàng đợi tại mối liên kết đầu ra mà chúng yêu cầu. Khi nhịp độ đến bộ định tuyến của các gói tin như vậy tăng lên, chúng sẽ tiếp tục được đưa vào hàng đợi đó. Nếu tốc độ chuyển các gói tin đi của bộ định tuyến lớn hơn tốc độ các gói tin đến thì sau một khoảng thời gian nào đó hàng đợi sẽ trở nên rỗng.
Ngược lại, nếu tốc độ chuyển các gói tin đi nhỏ hơn tốc độ 5 download by : skknchat@gmail.com các gói tin đến bộ định tuyến thì sau một khoảng thời gian hàng đợi sẽ đầy và hiện tượng tắc nghẽn xảy ra [11] , [16]. Một cách cách tổng quát có thể định nghĩa tắc nghẽn như sau: “Trong quá trình hoạt động, mạng có thể rơi vào trạng thái không đủ khả năng đáp ứng các chỉ tiêu chất lượng cho các kết nối đã được thiết lập hay cho một yêu cầu kết nối mới do sự biến đổi bất thường, không dự đoán được của dòng lưu lượng cùng với tình trạng lỗi của các phần tử mạng” [16]. Các gói tin đi vào và đi ra các bộ định tuyến trên mạng TCP/IP thường dưới dạng cụm từ một hoặc nhiều nguồn khác nhau. Các hàng đợi bên trong sẽ giúp các bộ định tuyến lưu trữ các cụm gói tin này cho đến khi chúng được chuyển đi.
Khi các cụm gói tin đến đến vượt quá kích thước của hàng đợi thì sẽ xảy ra tình trạng tắc nghẽn. Các gói đến sau sẽ bị loại bỏ. Như vậy, tắc nghẽn trên mạng TCP/IP xảy ra khi lưu lượng từ nhiều tuyến đổ dồn về một tuyến và tuyến này không có khả năng xử lý hết được. Tắc nghẽn cũng xảy ra ngay bên trong bản thân bộ định tuyến tại mạng lõi của mạng khi các nút mạng nhận được nhiều lưu lượng hơn so với thiết kế của nó.
Khi mạng xảy ra tắc nghẽn nếu không được xử lý kịp thời sẽ gây ra các hậu quả nghiêm trọng: các gói tin không được xử lý kịp, không chuyển được đến đầu cuối người nhận, gây ùn tắc trong mạng, mạng không hoạt động được trong thời gian dài và như vậy không thể truyền tải được dữ liệu, các thành phần có thể bị hư hỏng. Do đó, vấn đề quan trọng là phải điều khiển được tắc nghẽn trong mạng. Để làm được điều này, việc tăng chiều dài hàng đợi không phải là giải pháp tốt vì khi tăng kích thước bộ đệm đồng nghĩa với việc tạo ra trễ lớn và làm ảnh hưởng đến QoS của các dịch vụ thời gian thực trên mạng TCP/IP. Chính vì vậy, mạng TCP/IP cần phải có một cơ chế loại bỏ gói tin một cách phù hợp để loại bỏ tắc nghẽn khi nó đã xảy ra hoặc lý tưởng hơn là phòng tránh tắc nghẽn khi nó chưa kịp xảy ra.
6 download by : skknchat@gmail. Các giải thuật điều khiển tắc nghẽn theo giao thức TCP 1. Giao thức TCP Giao thức điều khiển truyền tải - Transmission Control Protocol (TCP) là một giao thức truyền thông từ đầu cuối đến đầu cuối cho phép thiết lập một liên kết trực tiếp giữa nguồn và đích. Đặc điểm chính của giao thức này là xác minh kết quả nhận dữ liệu ở đầu thu bằng cách sử dụng cơ chế báo nhận.
Nếu gói tin bị mất, bên phát sẽ gửi lại gói tin một lần nữa. Do đó, TCP sẽ đảm bảo truyền tải toàn vẹn thông tin. TCP là một giao thức chung, không phụ thuộc vào mạng được sử dụng. Chính vì vậy, để đạt được thông lượng tối đa, TCP sẽ từng bước điều chỉnh hoạt động cho đến khi đạt đến thông lượng giới hạn thông qua các cơ chế hoạt động của nó.
Một số thuật ngữ Để làm rõ hơn hoạt động của giao thức TCP, báo cáo sử dụng một số thuật ngữ sau đây: + Hình 1. Hiện tượng Time out Bản tin báo nhận (Acknowledgement - ACK): Là một thông điệp được gửi bởi bên nhận để thông báo cho bên gửi biết số gói tin đã thu được đúng. Nếu bên gửi không nhận được ACK có nghĩa là các gói dữ liệu bị mất, kết quả là bên gửi phải phát các gói dữ liệu mất một lần nữa (Hình 1. 7 download by : skknchat@gmail.com Timeout: Liên quan đến thời gian chờ đợi một báo nhận.
Bộ đếm thời gian sẽ bắt đầu khi một gói tin được gửi đi. Khi hết thời gian chờ đợi mà chưa nhận được ACK, bên gửi sẽ giả định là gói tin đã bị mất và truyền lại. Bộ đệm: Là một vùng nhớ truy xuất ngẫu nhiên được sử dụng để lưu trữ dữ liệu tạm thời. Khi gói tin đến đầu thu, chúng sẽ được lưu vào bộ đệm để chờ xử lý.
Tắc nghẽn: Là một hiện tượng bão hòa, xảy ra khi lưu lượng truy cập quá lớn. Ví dụ khi bộ đệm nhận được số gói dữ liệu nhiều hơn so với khả năng của mình, hoặc khi chuyển tiếp dữ liệu từ một mạng dung lượng cao tới một mạng có dung lượng thấp hơn. Tắc nghẽn sẽ dẫn đến mất mát dữ liệu. Cửa sổ tắc nghẽn (Congestion Window - cwnd): Là một biến trạng thái của TCP nhằm giới hạn số lượng gói dữ liệu mà một giao thức TCP có thể gửi khi chưa nhận được một ACK.
Số lượng gói số liệu được gửi trong thực tế sẽ là giá trị nhỏ nhất của cwnd và kích thước cửa sổ nhận mà bên thu đã đề nghị. Thời gian cho một chu trình của gói tin (Round Trip Time - RTT): Là thời gian cần thiết để một gói tin đạt đến đích cộng với thời gian của ACK cho gói tin này. Nó tương ứng với thời gian trao đổi của một segment giữa bên gửi và bên nhận. Nguyên lý cửa sổ tắc nghẽn 8 download by : skknchat@gmail.com Hiện tượng lặp lại ba bản tin báo nhận: Hiện tượng này xảy ra khi một gói tin bị mất trong quá trình truyền tải.
Theo cơ chế của TCP, các gói tin đến tiếp vẫn làm cho bên nhận gửi các ACK chứa số hiệu của gói tin cuối cùng chính xác nhận được. Do vậy, số thứ tự gói trước gói bị mất sẽ được gửi cho đến khi gói bị mất được truyền lại và nhận chính xác. Khi bên gửi thu được 3 ACK giống nhau, nó sẽ gửi lại các gói tin bị mất (xem Hình 1. Nguyên lý của việc lặp lại ba bản tin báo nhận 1.
Các giải thuật tránh tắc nghẽn trên mạng TCP/IP Giải thuật tránh tắc nghẽn trên mạng TCP/IP được phát triển nhằm điều chỉnh tốc độ của các luồng lưu lượng sao cho càng gần với "giới hạn truyền tải" càng tốt để truyền tải tối đa thông tin và tránh tắc nghẽn mạng. Giả thuyết cơ bản của giải thuật này là coi việc một gói tin bị mất tương đương với tình trạng tắc nghẽn. Nguyên tắc của giải thuật là điều khiển tốc độ của từng nguồn theo trạng thái lưu lượng. Nguyên tắc này khá đơn giản.
Khi bắt đầu hoạt động, mỗi nguồn tăng dần tốc độ lưu lượng. Sự gia tăng này sẽ diễn ra liên tục cho đến khi xảy ra mất gói tin. Điều này có nghĩa là tắc nghẽn được phát hiện ở một nơi nào đó trong mạng. Do vậy, nguồn lưu lượng phải giảm tốc độ đủ để thoát khỏi tình trạng tắc nghẽn.
Đây chính là điểm cơ bản của các giải thuật điều khiển tắc nghẽn “tăng cộng giảm nhân” (Additive Increase Multiplicative Decrease- AIMD) trên mạng TCP/IP [12]. 9 download by : skknchat@gmail.com Để cải thiện khả năng hoạt động của giao thức TCP, một số giải thuật đã được thêm vào trong các phiên bản TCP khác nhau (Tahoe, Reno, Vegas, New Reno, Santa Cruz. Trong đó, TCP New Reno là giao thức được sử dụng rộng rãi nhất trong thời gian gần đây. Các giải thuật cải tiến hoạt động của TCP (Hình 1.5) bao gồm: Hình 1.
Thuật toán khởi đầu chậm, truyền lại nhanh và khôi phục nhanh [16] Giải thuật khởi đầu chậm và tránh tắc nghẽn [16] : Gồm hai pha khởi đầu chậm và tránh tác nghẽn. Ban đầu, TCP hoạt động ở pha khởi đầu chậm. Mục đích là để có được một ngưỡng dự đoán tắc nghẽn. Bắt đầu pha khởi đầu chậm, TCP thiết lập cwnd =1.
Mỗi khi nhận được một ACK, cwnd sẽ tăng lên một đơn vị (nhưng không vượt quá cửa sổ nhận mà bên thu thông báo). Do vậy, cwnd sẽ tăng lên theo hàm mũ cho tới khi đạt đến ngưỡng khởi đầu chậm (Ssthresh) thì chuyển sang pha tránh tắc nghẽn. Trong giai đoạn tránh tắc nghẽn, TCP sẽ điều chỉnh cwnd=cwnd +1/cwnd mỗi khi nhận được một ACK cho đến khi việc mất gói xảy ra. Khi phát hiện mất gói, nguồn phát sẽ đặt Ssthresh = cwnd/2, truyền lại các gói tin bị mất và trở về pha khởi đầu chậm bằng cách đặt lại cwnd bằng 1.
Giải thuật truyền lại nhanh [16] : Mục đích là để khôi phục hoạt động của TCP hiệu quả hơn từ việc mất gói. Khi nhận được hai bản tin báo nhận giống nhau, TCP xem như đây là trường hợp lặp lại ba bản tin báo nhận và đường truyền đã bị tắc nghẽn. Thay vì mất thời gian chờ đợi Timeout, nguồn sẽ giảm tốc độ và truyền lại các gói tin bị mất. 10 download by : skknchat@gmail.com Giải thuật khôi phục nhanh [16] : Khi việc mất gói được phát hiện do hiện tượng lặp lại bản tin báo nhận, TCP trở về pha khởi đầu chậm bằng cách đặt Ssthresh = cwnd/2 và cwnd=1.
Nếu kích thước cửa sổ là lớn và tỉ lệ lỗi là nhỏ thì thay vì tiếp tục giải thuật khởi đầu chậm, TCP sẽ chuyển sang giải thuật khôi phục nhanh. Lúc này, cửa sổ tắc nghẽn cwnd = Ssthresh/2 +3 và chuyển thẳng sang pha tránh tắc nghẽn.