2010-01-08 38 views
15

Câu hỏi về giao thức MAC của 802.11 Wifi.Tại sao phải chờ SIFS trước khi gửi ACK?

Chúng tôi đã học được rằng khi một đài đã nhận được dữ liệu, nó đợi thời gian SIFS. Sau đó, nó sẽ gửi gói tin. Khi tìm kiếm trực tuyến, lý do luôn được đề cập là cung cấp các gói ACK ưu tiên cao hơn. Điều này là dễ hiểu vì một trạm đầu tiên phải đợi DIFS thời gian khi nó muốn gửi dữ liệu bình thường (và DIFS lớn hơn SIFS).

Nhưng tại sao phải đợi? Tại sao không gửi ACK ngay lập tức? Các trạm biết dữ liệu đã đến và CRC là chính xác, vậy tại sao chờ đợi?

Trả lời

11

Về mặt lý thuyết có thể để biết rằng CRC chính xác ở phần cuối của dữ liệu nhận được từ dây, nhưng trong thực tế, bạn cần phải tích lũy tất cả các mẫu trong khối cuối cùng để chạy IFF T, deconvolution, FEC, và sau đó, cuối cùng, vào cuối cùng, sau khi cuối cùng nhận được dữ liệu đầu vào ra khỏi dạng sóng, bạn có biết rằng CRC là chính xác. Ngoài ra, đôi khi bạn cần phải bật mạch truyền để gửi ACK, điều này có thể cản trở hiệu suất. Nếu mỗi bước trong chuỗi xử lý là tức thời, và nếu mạch truyền chắc chắn không can thiệp vào mạch nhận, và nếu không có thời gian cần thiết để xây dựng dạng sóng cho ACK, thì có thể gửi ACK ngay lập tức sau khi nhận được bit cuối cùng của dạng sóng. Nhưng, trong khi mỗi phần tử trong chuỗi này mất một số thời gian xác định, nó không phải là tức thời. SIFS cung cấp cho người nhận thời gian để lấy dữ liệu từ PHY, xác minh nó và gửi phản hồi.

Tuyên bố từ chối trách nhiệm: Tôi quen với Homeplug hơn 802.11.

+0

Điều này dường như được xác nhận bằng một liên kết tôi đã tìm thấy: http://protocols.netlab.uky.edu/~calvert/classes/571/lectureslides/WiFi.pdf Ở các trạng thái "SIFS = Thời gian cần thiết cho trạm để cảm nhận cuối khung và bắt đầu truyền ". – Omega

+0

SIFS là cung cấp cho các nhà thiết kế phần cứng một giới hạn về thời gian họ có thể chi tiêu giải mã và kiểm tra khung. Điều này là cần thiết vì 802.11 ban đầu được phân phối theo thứ tự hoàn toàn, do đó người gửi không thể chuyển sang gói tiếp theo cho đến khi nó có ACK cho gói hiện tại hoặc đã từ bỏ. Để có được hiệu suất hợp lý, người nhận phải có thời gian quay vòng tối đa trên ACK. –

0

Tôi không thể nói chắc chắn nhưng có vẻ như chiến lược tối ưu hóa tương tự như IP. Nếu bạn không yêu cầu ACK cho mỗi gói dữ liệu, bạn nên giữ một chút để nếu có nhiều gói dữ liệu đến, bạn có thể thừa nhận tất cả chúng bằng một ACK.

Ví dụ: khách hàng gửi 400 gói thực sự nhanh chóng đến máy chủ. Thay vì máy chủ gửi lại 400 ACK, nó chỉ đơn giản có thể chờ cho đến khi khách hàng tạm nghỉ trước khi gửi một ACK trở lại. Kết hợp với khả năng khách hàng sẽ tạm nghỉ ngay cả khi tải nặng (nó phải là bộ đệm gói không được nhận biết của nó đầy), điều này có thể thực hiện được.

Điều này có thể trong các hệ thống nơi ACK(n) có nghĩa là "Tôi đã nhận được tất cả mọi thứ lên đến và bao gồm cả gói # n.

Bạn sẽ có được hiệu suất tốt hơn và giao thông ít bằng cách sử dụng một chiến lược như vậy. Chừng nào thời gian chờ đợi trước khi gửi-ack trên máy thu nhỏ hơn thời gian truyền lại-nếu-không-ack-trước thời gian trên người gửi (có sự chậm trễ truyền dẫn vào tài khoản), sẽ không có vấn đề gì.

+0

Tôi đang bị ấn tượng rằng tiếng ồn là một vấn đề lớn và các khung hình thường được chia thành các đoạn nhỏ hơn được gửi thành cụm. Đối với mỗi đoạn, người nhận sẽ gửi ACK để xác nhận sao cho chỉ những mảnh xấu được truyền lại. –

+0

Đó là cách khối 802.11 ACK hoạt động, nhưng thông số ban đầu không có SIFS và không có khối ACK. Ngoài ra, cho đến khi MPDUs được thêm vào, 802.11 đã được giao hàng theo thứ tự nghiêm ngặt. –

3

Điều này giống như vậy bởi vì chức năng phối hợp phân phối (DCF) và chức năng phối hợp điểm (PCF) có thể cùng tồn tại trong một ô. Đó là một trạm cơ sở có thể sử dụng bỏ phiếu trong khi cùng lúc tế bào có thể sử dụng phối hợp phân tán bằng CSMA/CA.

Vì vậy, trong SIFS, khung điều khiển hoặc đoạn tiếp theo có thể được gửi đi. Trong PIFS, khung PCF có thể được gửi và trong khi các khung DIF DCF có thể được gửi đi. Trong thời gian SIFS và PIFS, PCF có thể làm việc kỳ diệu của nó.

Mặc dù không phải tất cả các trạm gốc đều hỗ trợ PCF tất cả các trạm phải đợi vì một số trạm có thể hỗ trợ nó.

Cập nhật:

Con đường tôi hiểu điều này bây giờ là trong SIFS trạm có thể gửi RTS, CTS hoặc ACK và có đủ thời gian để chuyển về chế độ nhận trước khi gửi bắt đầu truyền. Nếu đó là chính xác, nó sẽ gửi ACK trong SIFS. Sau đó, nó sẽ thay đổi để nhận chế độ và đợi cho đến khi SIFS hết hiệu lực. Khi SIFS đã trôi qua bộ phát sẽ bắt đầu gửi.

Ngoài ra, PCF được kiểm soát bởi PIFS sau SIFS và trước DIFS và không có liên quan đến cuộc thảo luận này (lỗi của tôi). Tức là, SIFS < PIFS < DIFS < EIFS.

Nguồn: This PDF (page 8)Computer Networks by Andrew S. Tanenbaum

+0

Trong cả hai chế độ (DCF và PCF), không có gì được gửi trong SIFS. Mỗi giao thức luôn đợi thời gian SIFS trước khi gửi một đoạn. Vì vậy, điều này không giải thích tại sao nó (đọc: DCF và PCF) sẽ không gửi ACK ngay lập tức sau khi nhận được dữ liệu. – Omega

+0

@Omega: Thing là, một trạm gốc phải hỗ trợ DCF nhưng có thể tùy chọn hỗ trợ PCF. Các trạm khác phải hỗ trợ DCF và có thể hỗ trợ PCF. Nếu họ không hỗ trợ PCF, họ vẫn phải đợi vì những người khác có thể hỗ trợ nó. –

0

nhanh va chạm khóa học về 802.11:

802.11 là một hệ thống cơ bản khổng lồ của giờ. Việc triển khai phổ biến nhất của 802.11 sử dụng chức năng phối hợp phân tán, DCF. DCF cho phép các nút vào và ra khỏi phạm vi của kênh radio đang được sử dụng cho 802.11 và phối hợp theo kiểu phân phối, những người sẽ gửi và nhận dữ liệu (bỏ qua các vấn đề nút ẩn và bị lộ cho cuộc thảo luận này). Trước khi bất kỳ nút nào có thể bắt đầu gửi dữ liệu trên kênh, tất cả chúng phải đợi một khoảng thời gian DIFS, trong đó kênh được xác định là không hoạt động, nếu kênh không hoạt động trong thời gian DIFS, nút đầu tiên để bắt kênh truyền. Trong chuẩn 802.11, tức là các triển khai non-802.11e và non 802.11n, mọi gói dữ liệu đơn lẻ được truyền cần phải được thừa nhận bởi một lớp vật lý, PHY, gói xác nhận, không quan tâm đến giao thức tầng trên đang được sử dụng. Sau khi một gói dữ liệu được gửi một khoảng thời gian SIFS cần hết hạn, sau khi SIFS hết hạn các khung điều khiển được định trước cho nút có điều khiển "lấy" của kênh có thể được gửi, trong trường hợp này và khung xác nhận được truyền đi. SIFS cho phép nút đã gửi gói dữ liệu để chuyển từ truyền sang chế độ nhận. Nếu một gói tin bị mất và không nhận được ACK sau khi thời gian chờ SIFS/ACK xảy ra, thì lệnh trả về theo hàm mũ được gọi. Trở lại số mũ, cửa sổ tranh chấp a.k.a (CW), bắt đầu bằng giá trị CWmin, trong một số cài đặt linux, đây là 15 lần khe, trong đó thời gian khe thay đổi tùy thuộc vào giao thức 802.11 đang được sử dụng. Giá trị CW sau đó được chọn từ 1 đến bất kỳ giới hạn trên nào đã được tính cho CW. Nếu gói tin hiện tại bị mất, thì CW được tăng từ 15 lên 30, và sau đó một giá trị ngẫu nhiên được chọn giữa 1 và 30. Mỗi lần có một lần mất liên tiếp CW tăng gấp đôi lên đến 1023, tại thời điểm đó nó chạm một giới hạn. Khi một gói tin được nhận thành công, CW sẽ được thiết lập lại về CWmin.

Liên quan đến 802.11n/802.11e: Mọi gói dữ liệu vẫn cần phải được thừa nhận, nhưng khi sử dụng các gói dữ liệu 802.11e (thực hiện vào 802.11n) có thể được tổng hợp với nhau theo hai cách khác nhau A-MSDU hoặc A -MPDU. A-MSDU là một khung jumbo có một tổng kiểm tra cho toàn bộ gói được gửi đi, trong đó có nhiều khung phụ chứa mỗi khung dữ liệu cần gửi. Nếu có bất kỳ lỗi nào trong khung A-MSDU và nó cần phải được truyền lại, thì mỗi khung phụ được yêu cầu phải được gửi lại. Tuy nhiên, khi sử dụng A-MPDU, mỗi khung phụ có một tiêu đề nhỏ và tổng kiểm tra cho phép bất kỳ khung phụ nào có lỗi trong nó được truyền lại bởi chính nó/trong một khung tổng hợp khác vào lần tiếp theo. . Với các lược đồ gửi gói tổng hợp này, có khái niệm về khối-ack. Block-ack chứa một bitmap của các khung hình từ một số thứ tự bắt đầu đã được gửi trong gói tổng hợp và nhận được chính xác hoặc không chính xác. Việc sử dụng khung tổng hợp gửi rất nhiều cải thiện hiệu suất thông lượng vì có thể gửi nhiều dữ liệu hơn cho mỗi lần thu thập kênh bằng nút gửi, đồng thời cho phép gửi gói tin không theo thứ tự. Tuy nhiên, gói tin out-order gửi rất phức tạp cho lớp MAC 802.11.

0

SIFS = D + M + Rx/Tx

đâu,

D = (Receiver chậm trễ (RF chậm trễ) và giải mã của thủ tục lớp hội tụ vật lý (PLCP) lời mở đầu/tiêu đề)

M = (chậm trễ xử lý MAC)

Rx/Tx = (thời gian quay vòng thu phát)

Trên tất cả sự chậm trễ không thể tránh khỏi nên Nó phải chờ đợi thời gian SIFS trước khi gửi xác nhận

1

SIFS = RTT (dựa trên tốc độ truyền PHY) + CHẾ BIẾN KHUNG TRƯỚC KHI GHI (PHY CHẾ BIẾN DELAY + CHẾ BIẾN MAC DELAY) + CHẾ BIẾN KHUNG TRÒN (ĐỂ CỘNG ĐỒNG CTS/ACK) + TẮT TẮT RF (THAY ĐỔI TỪ RX tới TX)

Bên phát, sau biểu tượng PHY cuối cùng (của RTS, ví dụ), thời gian cần thiết để chuyển sang chế độ RX (tại RF). Vì vậy, tôi sẽ thấy SIFS như một tính toán bên RX hơn là một bên TX.

Các vấn đề liên quan