Nâng cao hiệu năng bằng đường ống Pipeline

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 87 - 88)

Mặc dù hoạt động đúng nhưng hiệu suất hoạt động của rdt 3.0 chưa cao, điểm yếu của vấn đề là do thao tác dừng và chờ. Sau khi phát một đoạn dữ liệu, bên phát dừng gửi dữ liệu để chờ nhận thông báo trả lời của bên nhận. Nếu kết quả đúng, bên phát sẽ gửi đoạn tin kế tiếp. Nếu kết quả sai, bên phát sẽ gửi lại đoạn dữ liệu đó. Để ước lược hiệu suất của giao thức stop and wait, hãy xét trường hợp lý tưởng với hai thiết bị đầu cuối, một ở bờ biển phía đông, một ở bờ biển phía tây nước Mỹ. Thời gian trễ giữa hai thiết bị (dù tín hiệu lan truyền với tốc độ ánh sáng, trong thực tế độ trễ trên các thiết bị mạng lớn hơn rất nhiều) là Pprop xấp xỉ 15 ms. Giả sử hai thiết bị được kết nối bằng đường truyền tốc độ C =1 Gbit/s. Kích thước của đoạn dữ liệu SP=1Kbyte/packet, thời gian cần thiết để truyền toàn bộ gói dữ liệu trên kênh truyền tốc độ 1 Gbps được tính bởi công thức:

Ttrans= SP = 8Kbit / packet =8 microseconds

C 1Mbit / sec

Với giao thức stop and wait, nếu phía gửi bắt đầu gửi gói dữ liệu tại thời điểm t = 0 thì tại thời điểm t = 8 microsecond, bit cuối cùng mới được bên gửi đẩy ra đường truyền. Tiếp theo phải mất 15 ms để cả gói dữ liệu đi từ phía gửi sang phía nhận như vậy bit cuối cùng của gói dữ liệu đến đích tại thời điểm t = 15.008ms. Để đơn giản, ta giả thiết gói ACK có cùng độ dài với gói dữ liệu và phía nhận gửi ngay gói ACK khi nhận được bit cuối cùng của gói dữ liệu. Khi vậy bit cuối cùng của gói ACK được truyền tới đích tại thời điểm t = 30.016 ms. Trong khoảng thời gian 30.016ms, phía gửi chỉ hoạt động (gửi hoặc nhận) trong 0.016 ms. Nếu định nghĩa hiệu suất của bên gửi (hay kênh truyền) là tỷ lệ thời gian phía gửi hoạt động (gửi dữ liệu trên kênh truyền), chúng ta có hiệu suất

Usender rất thấp:

Usender= 0.008 =0.00015

30.016

Điều đó có nghĩa là phía gửi chỉ hoạt động trong khoảng 0.15 phần nghìn thời gian. Theo cách tính khác, phía gửi gửi 1 Kbyte trong 30,016 milisecond tương đương với tốc độ truyền là 33 Kbyte/s thấp hơn nhiều so với tốc độ có thể là 1 Gigabit/s. Người quản trị mạng “bất hạnh” này phải trả một số tiền khổng lồ để thuê đường truyền 1 Gigabit/s nhưng cuối cùng chỉ nhận được một đường truyền có tốc độ 33 Kbyte/s. Đây là một ví dụ sống động minh họa việc phần

mềm có thể giới hạn các khả năng của phần cứng phía dưới. Trong trường hợp này Chúng ta đã bỏ qua thời gian xử lý của các giao thức tầng dưới ở cả phía gửi và phía nhận cũng như thời gian xử lý và thời gian trễ của gói tin tại các router trung gian. Nếu tính cả những yếu tố này, hiệu suất hoạt động thực sự sẽ còn thấp hơn nữa.

Giải pháp cho vấn đề hiệu suất sẽ là cho phép phía gửi gửi đồng thời nhiều gói dữ liệu mà không cần phải đợi ACK. Có thể hình dung các gói dữ liệu nối tiếp nhau trên đường truyền từ phía gửi đến phía nhận giống như Nước chảy trong một đường ống. Vì thế kỹ thuật gửi liên tiếp này được gọi là kỹ thuật đường ống (pipeline). Kỹ thuật này làm tăng hiệu suất của giao thức lên nhiều lần, tuy nhiên nó đòi hỏi những yêu cầu sau:

- Khoảng số thứ tự phải tăng, bởi vì mỗi gói dữ liệu được truyền đi (không tính các gói dữ liệu truyền lại) phải có một số thứ tự duy nhất. Trên đường truyền có thể có đồng thời nhiều gói dữ liệu được gửi chưa được biên nhận. - Phía gửi và phía nhận có thể phải có bộ đệm (buffer) cho nhiều gói dữ liệu. Ít

nhất phía gửi có vùng đệm cho các gói dữ liệu đã được truyền đi nhưng chưa được biên nhận. Phía nhận cũng có thể cần vùng đệm cho cả các gói dữ liệu đã nhận đúng, như sẽ thảo luận dưới đây.

Yêu cầu về khoảng số thứ tự cần thiết cũng như về vùng đệm phụ thuộc vào cách giao thức xử lý việc mất dữ liệu, dữ liệu bị lỗi, bị trễ. Có hai cách tiếp cận chính được trình bày ở đây: Quay lại N (Go-Back-N) và lặp lại có Lựa chọn (Sesective Repeat).

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 87 - 88)