Mục Lục Giới Thiệu 2 I. Mạng không dây 2 II. Giao thức truyền thông trên mạng không dây TCPIP 2 III. Vấn đề trong mạng không dây 3 Nâng Cao Hiệu Suất TCP Trên Mạng Không Dây 4 I. Phương pháp tái truyền mức Datalink 4 II. Giao thức Snoop 4 Cài Đặt Snoop 6 I. Các khái niệm 6 1. Bộ nhớ tạm Snoop (Snoop cache) 6 2. Bảng dữ liệu kết nối Snoop (Snoop Connection Table) 6 II. Sơ đồ trạng thái 7 1. Trạng thái khởi tạo 8 2. Trạng thái Đợi 8 3. Trạng thái Snoop_Data 8 4. Trạng thái Snoop_Ack 8 5. Trạng thái Timeout 9 Kết Luận 10 Giới Thiệu I. Mạng không dây Mạng không dây là hình thức truyền thông sử dụng sóng vô tuyến (băng tầng 2,4GHz hoặc 5GHz) để truyền dữ liệu trong không gian. Hình 1 Sơ đồ mạng không dây Vì truyền bằng sóng nên mạng không dây dễ bị tổn thương bởi các yếu tố thời tiết, khí hậu, vật cản, nhiễu với sóng khác... nên tốc độ truyền cũng như độ ổn định không bằng mạng có dây. Tuy nhiên mạng không dây có những ưu điểm vượt trội so với mạng không dây như giá thành rẻ, có thể lắp đặt và truyền sóng ở những nơi mà mạng có dây không thể thi công được. II. Giao thức truyền thông trên mạng không dây TCPIP TCP là một giao thức truyền thông đáng tin cậy, nó sử dụng giao thức Goback N và một cơ chế phát lại gói tin dựa trên bộ định thời. Bộ định thời được tính toán dựa vào ước lượng độ trễ của một vòng truyền gói tin (roundtrip delay). Nếu không có một thông tin nào về gói tin được nhận trong thời gian định thời thì gói tin sẽ được gửi lại. Thông thường trong việc truyền lại gói tin, TCP giả sử rằng có tắc nghẽn gây mất gói tin và nó triệu gọi thuật toán điều khiển tắc nghẽn thực thi. Khi kích thước khung cửa sổ truyền giảm xuống, tỉ lệ truyền gói tin cũng giảm. Việc điều chỉnh cửa sổ này nhằm ngăn ngừa nguồn phát khỏi việc làm tràn ngập đích nhận bởi số lượng gói tin vượt quá giới hạn.
ĐẠI HỌC DUY TÂN KHOA SAU ĐẠI HỌC BÁO CÁO Mạng và Truyền Dữ Liệu Nâng Cao Đề Tài: Tìm hiểu Giao thức Snoop Người thực hiện: Hoàng Anh Vũ Lớp : K4MCS Đà Nẵng, 2012 - 2 - Mục Lục Giới Thiệu 3 I. Mạng không dây 3 II. Giao thức truyền thông trên mạng không dây TCP/IP 3 III. Vấn đề trong mạng không dây 4 Nâng Cao Hiệu Suất TCP Trên Mạng Không Dây 5 I. Phương pháp tái truyền mức Data-link 5 II. Giao thức Snoop 5 Cài Đặt Snoop 7 I. Các khái niệm 7 i. Bộ nhớ tạm Snoop (Snoop cache) 7 ii. Bảng dữ liệu kết nối Snoop (Snoop Connection Table) 7 II. Sơ đồ trạng thái 8 1. Trạng thái khởi tạo 9 ii. Trạng thái Đợi 9 iii. Trạng thái Snoop_Data 9 iv. Trạng thái Snoop_Ack 9 v. Trạng thái Time-out 10 Kết Luận 11 - 3 - Giới Thiệu I. Mạng không dây Mạng không dây là hình thức truyền thông sử dụng sóng vô tuyến (băng tầng 2,4GHz hoặc 5GHz) để truyền dữ liệu trong không gian. Hình 1 Sơ đồ mạng không dây Vì truyền bằng sóng nên mạng không dây dễ bị tổn thương bởi các yếu tố thời tiết, khí hậu, vật cản, nhiễu với sóng khác nên tốc độ truyền cũng như độ ổn định không bằng mạng có dây. Tuy nhiên mạng không dây có những ưu điểm vượt trội so với mạng không dây như giá thành rẻ, có thể lắp đặt và truyền sóng ở những nơi mà mạng có dây không thể thi công được. II. Giao thức truyền thông trên mạng không dây TCP/IP TCP là một giao thức truyền thông đáng tin cậy, nó sử dụng giao thức Goback N và một cơ chế phát lại gói tin dựa trên bộ định thời. Bộ định thời được tính toán dựa vào ước lượng độ trễ của một vòng truyền gói tin (round-trip delay). Nếu không có một thông tin nào về gói tin được nhận trong thời gian định thời thì gói tin sẽ được gửi lại. Thông thường trong việc truyền lại gói tin, TCP giả sử rằng có tắc nghẽn gây mất gói tin và nó triệu gọi thuật toán điều khiển tắc nghẽn thực thi. Khi kích thước khung cửa sổ truyền giảm xuống, tỉ lệ truyền gói tin cũng giảm. Việc điều chỉnh cửa sổ này nhằm ngăn ngừa nguồn phát khỏi việc làm tràn ngập đích nhận bởi số lượng gói tin vượt quá giới hạn. TCP lúc khởi động sẽ tăng kích thước khung cửa sổ truyền theo hàm mũ để nhanh chóng tìm ra tỉ lệ truyền thích hợp. Khi nguồn phát nhận thấy lỗi truyền gói tin, nó sẽ giảm kích thước cửa sổ truyền xuống một nửa, rồi bắt đầu từ đây nguồn phát sẽ tăng dần kích thước khung cửa sổ truyền từng đơn vị theo mỗi thời gian Round-trip trung - 4 - bình. Khi một gói tin bị mất, kích thước cửa sổ truyền lại bị giảm đi và thuật toán lại lặp lại. Hình 2 Kích thước cửa sổ truyền dữ liệu TCP III. Vấn đề trong mạng không dây Trong môi trường có tỉ lệ lỗi truyền cao như mạng không dây, TCP thực hiện cùng cách như trong mạng có dây, nó giảm kích thước cửa sổ truyền trước khi truyền lại gói tin. Việc điều chỉnh này làm giảm khả năng sử dụng băng thông một cách không cần thiết, gây ra giảm thiểu hiệu năng hoạt động bởi thông lượng giảm và độ trễ tăng. Điều này làm ảnh hưởng đến toàn bộ kết nối truyền tín hiệu từ trạm phát đến trạm nhận. Hình 3 Tỉ lệ bit lỗi cao trong kênh truyền không dây làm giảm kích thước cửa sổ truyền TCP - 5 - Nâng Cao Hiệu Suất TCP Trên Mạng Không Dây I. Phương pháp tái truyền mức Data-link Trong phương pháp này, mạng không dây được thiết lập một cơ chế truyền lại gói tin tại tầng data-link. Mục đích chính của phương pháp này là để nâng cao khả năng truyền thông của liên kết không dây mà không cần đến những chính sách về truyền lại gói tin và giảm kích thước cửa sổ truyền tại tầng transport.Phương thức này thử nâng cao hiệu năng truyền thông bằng cách tái truyền tập tin ở mức local mà không thực hiện ở tầng transport phía trên. Một cơ chế mà dùng phương pháp này là giao thức Snoop. II. Giao thức Snoop Giao thức Snoop được thực thi trên một Snoop Agent, được cài đặt ở trạm phát hay trên một thiết bị không dây. Nó hướng đến việc cải thiện hiệu năng của giao thức TCP trên kết nối không dây. Snoop Agent giám sát các gói tin được truyền quan trạm cơ sở và lưu tạm thời các gió tin trong một bảng dữ liệu ở bộ nhớ cache. Sau khi lưu, Agent sẽ chuyển tiếp các gói tin đến trạm đích và giám sát các gói tin ACK phản hồi. Trong TCP, mỗi ACK được liên kết với một sô thứ tự. Số này dùng để thông báo với bên gửi gói tin cuối cùng được nhận thành công ở trạm nhận. Nếu trạm gửi nhận được cùng một số thứ tự hơn một lần, nó sẽ “nghĩ” rằng những dữ liệu được gửi từ số thứ tự ACK cuối cùng đã bị mất. Hiện tượng gói tin ACK nhận về chứa số thứ tự nhỏ hơn ACK cuối được gọi là trùng lặp ACK. Chúng ta hãy xem xét một hệ thống có một Snoop Agent và một TCP gửi các gói tin 1, 2, 3, 4, 5. Giả sử rằng gói tin 2 bị mất vì lỗi trên kết nối không dây. Trạm nhận nhận được các gói tin 3, 4, 5 liền trả về gói tin ACK với số thứ tự 1 – trùng lặp với số thứ tự của gói tin cuối cùng trong thứ tự nhận được thành công. Khi trạm gửi nhận được những gói tin ACK trùng lặp, nó truyền lại các gói tin bắt đầu từ gói tin tiếp theo của gói tin lỗi, với kích thước cửa sổ truyền bị giảm đi. - 6 - Hình 4 Trạm gửi TCP phát lại gói tin Công việc chính của Snoop Agent là lưu gói dữ liệu vào bộ nhớ tạm, Khi gói dữ liệu bị phát hiện mất trên đường truyền (dựa vào hiện tượng trùng lặp ACK), Snoop Agent sẽ truyền lại các gói dữ liệu. Snoop Agent sẽ truyền lại một cách cục bộ mà không cần gửi ACK đến nguốn phát. Như vậy TCP sẽ không nhận biết được có xảy ra mất gói tin và thuật toán điều khiển tắc nghẽn không kích hoạt. Thêm vào đó, Snoop Agent khởi động một bộ định thời truyền lại gói tin cho mỗi kết nối TCP. Khi vượt quá thời gian hạn định của bộ định thời, Snoop Agent sẽ truyền lại những gói tin mà không có ACK trả về. Giao thức Snoop chặn bắt các gói tin TCP, phân tích chúng và truyền lại các gói tin này nếu cần thiết. Tất yếu, không có định dạng gói tin nào là không tương đồng với giao thức Snoop và tất cả các gói tin gửi và nhận vẫn phù hợp với giao thức TCP và như vậy không cần có thay đổi nào đối với các tầng khác trong mô hình TCP/IP. Điều này cực kỳ quan trọng vì giao thức TCP/IP được thiết kết sử dụng cho mạng có dây, mà đang được sử dụng rộng rãi hiện nay. - 7 - Cài Đặt Snoop I. Các khái niệm i. Bộ nhớ tạm Snoop (Snoop cache) Bộ nhớ tạm Snoop được dùng để lưu giữ tạm thời những gói tin mà nhận được từ tầng trên. Những gói tin được lưu trữ trong một mảng tuyến tính. Cấu trúc dữ liệu của bộ nhớ tạm Snoop viết bằng ngôn ngữ C như sau typedef struct { Packet cached_pkp[SNOOP_CACHE_SIZE]; //gói tin lưu int ici_addr[SNOOP_CACHE_SIZE]; //ICI lưu int max_cached; //Số gói tin tối đa được lưu tại trong một thời điểm int num_cached; //Số gói tin đã được lưu int num_removed; //Số gói tin đã được xoá int curr_cached; //Số gói tin hiện thời đang lưu } struct_snCache; ii. Bảng dữ liệu kết nối Snoop (Snoop Connection Table) Snoop Agent lưu giữ một bảng dữ liệu các kết nối của TCP. Bảng này là cần có vì hai trạm truyền - nhận dữ liệu có thể có nhiều đường kết nối được thiết lập, và mỗi đường kết nối này lại đòi hỏi cần được duy trì, quản lý một cách độc lập (vì số hiệu của các gói tin là không duy nhất giữ các kết nối). Dưới đây là định dạng một bản ghi trong bảng dữ liệu kết nối của Snoop typedef struct { unsigned int src_ip; /* IP Nguồn*/ unsigned int dest_ip; /* IP Đích*/ int src_port; /* Cổng nguồn */ - 8 - int dest_port; /* Cổng đích*/ unsigned int last_seq_num; /* Số sequence gửi cuối cùng */ unsigned int last_ack_num; /* Số sequence nhận cuối cùng*/ int repeat_ack; /* đánh dấu nếu nhận được trùng lặp ACK */ int fin_flag; /* đánh dấu nếu nhận được gói tin kết thúc */ unsigned fin_seq_num; /* Số sequence của gói tin kết thúc */ Evhandle timeout_evt; /* event handle của sự kiện timeout*/ } struct_snTable; Mỗi bản ghi chỉ định một kết nối TCP bởi cặp thông tin (IP và cổng) của trạm nhận và trạm phát. Nó cũng lưu giữ dấu vết của số sequence cuối cùng và số ACK cuối cùng nhận được. Tham số timeout_evt được dùng cho bộ định thời phát lại gói tin. II. Sơ đồ trạng thái Hình 5 Sơ đồ chuyển trạng thái của Snoop - 9 - 1. Trạng thái khởi tạo Tiến trình Snoop bắt đầu với trạng thái khởi tạo, trong trạng thái này, bảng dữ liệu tạm và bảng dữ liệu những kết nối TCP được khởi tạo. ii. Trạng thái Đợi Sau khi trạng thái khởi tạo hoàn thành, tiến trình sẽ chuyển sang trạng thái Đợi. Không có tác vụ nào được thực thi trong trạng thái đợi ngoại trừ việc đợi các sự kiện sau xảy ra: • Sự kiện gói tin đến từ tầng dưới • Sự kiện gói tin đến từ tầng TCP/IP ở trên • Sự kiện hết hạn của bộ định thời iii. Trạng thái Snoop_Data Khi một gói tin đến từ tầng TCP/IP phía trên, tiến trình sẽ chuyển từ trạng thái Đợi sang trạng thái Snoop_Data. Snoop Agent sẽ lưu vết số thứ tự ACK cuối cùng đến từ tâng cao hơn. Tuỳ thuộc vào số thứ tự này, gói tin được xử lý theo những cách khác nhau. Một gói tin mới trong dãy tuần tự các gói tin đến Đây là trường hợp thông thường khi một gói tin với số thứ tự (sequence) lớn hơn đến. Gói tin được thêm vào trong bộ nhớ tạm và chuyển tiếp đến tầng thấp hơn. Một gói tin có số thứ tự nằm ngoài dãy tuần tự cần lưu. Điều nà xảy ra khi gói tin bị mất đã gây ra sự kiện vượt quá thời gian định thời tại nơi gửi. Nếu số thứ tự là lớn hơn gói tin ACK cuối cùng được nhận diện bởi Snoop Agent, nó sẽ giả định rằng gói tin tiếp theo trong dãy đã mất. Gói tin hiện đang nhận được sẽ được chuyển đến trạm nhận. Trái lại nếu số thứ tự gói tin là nhỏ hơn số thứ tự của ACK cuối cùng, thì gói tin bị bỏ qua. Sau khi gói tin được xử lý, tiến trình Snoop quay trở lại trạng thái Đợi để đợi sự kiện tiếp theo. iv. Trạng thái Snoop_Ack Khi một gói tin từ tầng dưới đến Snoop Agent, tiến trình sẽ chuyển từ trạng thái Đợi sang trạng thái Snoop_Ack. Tuỳ thuộc vào số thứ tự của ACK, gói tien được xử lý theo các cách sau: Một ACK mới Đây là một gói tin ACK với số thứ tự lớn hơn cái cuối cùng Snoop Agent đã nhận được. Snoop Agent sẽ xoá bộ nhớ tạm của ACK cuối, lưu cái hiện thời vào, đồng thời gói tin ACK sẽ được chuyển tiếp lên tầng TCP/IP cao hơn. - 10 - Một ACK lỗi Đày là khi gói tin ACK có số thứ tự nhỏ hơn cái cuối cùng nhận được. Điều này hiếm khi xảy ra và trong trường hợp này gói tin ACK bị bỏ qua. Một ACK trùng lặp Đây là trường hợp gói tin ACK giống như cái nhận được cuối cùng. Snoop Agent sẽ nhận định rằng những gói tin đã gửi với số thứ tự cao hơn đã mất. Và snoop sẽ truyền lại các gói tin từ gói tin bị mất đầu tiên. v. Trạng thái Time-out Khi hết hạn thời gian chờ của bộ định thời, tiến trình sẽ chuyển từ trạng thái Đợi sang trạng thái Timeout. Xử lý trong trạng thái time-out cũng tương tự như trong trạng thái Snoop_Ack mà nhận được trùng lặp các gói tin. Snoop Agent sẽ truyền lại các gói tin mà chưa có ACK. [...]... tác động tích cực: • Giảm thiểu việc truyền phát lại nhiều lần giữ trạm gửi và trạm nhận bởi việc truyền phát cục bộ của Snoop Agent • Nhận biết và truyền lại gói tin khi không nhận được ACK nhờ bộ định thời • Ngăn giao thức TCP không giảm kích thước cửa sổ truyền quá mức làm giảm hiệu suất kết nối truyền dữ liệu - 12 - TÀI LIỆU THAM KHẢO [1] IEEE 802.11 Workgroup: http://grouper.ieee.org/groups/802/11/index.html... chế hoạt động của Snoop: tạo ra một Snoop Agent tại trạm cơ sở (trạm phát) và lưu trữ các gói tin ở mức local bởi bộ nhớ tạm (cache) của nó Snoop sao chép các gói tin vào bộ nhớ cache của nó, đặt thời gian định thời cho việc truyền lại gói tin Nó truyền lại gói tin nếu nó nhận được các gói ACK lặp lại hoặc quá thời gian định thời Cơ chế này có nhiều tác động tích cực: • Giảm thiểu việc truyền phát lại