III. CSMA (Carrier Sense Multiple Access) (tiếp)
3. Thuật toán CSMA
Sơ đồ luồng thuật toán CSMA được tạo thành bao gồm thành phần khác nhau:
- Yêu cầu truyền dữ liệu: Một nút (điểm cuối) trong mạng muốn truyền dữ liệu.
- Đường truyền bận?: Nút kiểm tra để xem kênh truyền có đang bận hay không. Nếu đường truyền không bận, quá trình sẽ tiếp tục; nếu không, quá trình sẽ lặp lại việc kiểm tra này cho đến khi đường truyền rảnh.
- Tổ chức data thành frame: Dữ liệu được tổ chức thành các khung (frames) để chuẩn bị truyền đi.
- Truyền frame: Khung dữ liệu được gửi đi.
- Có đụng độ?: Nếu xảy ra va chạm trong quá trình truyền (thường được phát hiện bởi sự giảm sút đột ngột trong tín hiệu truyền đi), quá trình sẽ chuyển sang bước 9.
- Tiếp tục truyền: Nếu không có va chạm, nút sẽ tiếp tục quá trình truyền dữ liệu.
- Hết dữ liệu cần truyền?: Kiểm tra xem tất cả dữ liệu đã được truyền đi chưa.
- Kết thúc: Nếu tất cả dữ liệu đã được truyền đi, kết thúc quá trình.
- Truyền tín hiệu JAM: Nếu xảy ra va chạm, nút sẽ gửi một tín hiệu JAM để báo hiệu cho tất cả các nút khác biết đã xảy ra va chạm.
- Inc(attempts): Tăng số lần cố gắng truyền (attempts).
- attempts > Max Attempts: Kiểm tra xem số lần cố gắng truyền đã vượt quá số lần cho phép hay chưa.
- Error!!!: Nếu số lần cố gắng vượt quá giới hạn, quá trình sẽ thông báo lỗi.
- Tính toán khoảng thời gian backoff = t: Nếu vẫn còn cơ hội để thử lại, thuật toán sẽ tính toán khoảng thời gian chờ ngẫu nhiên (backoff time) trước khi thử truyền lại.
- Delay(t): Nút sẽ đợi một khoảng thời gian (t) trước khi thử truyền lại.
Quá trình này đảm bảo rằng nếu xảy ra va chạm, các nút sẽ không tiếp tục gửi dữ liệu ngay lập tức, giảm xác suất xảy ra va chạm tiếp theo. Thay vào đó, chúng chờ đợi một khoảng thời gian ngẫu nhiên, giúp phân tán các nỗ lực truyền lại trên thời gian và giảm bớt sự cạnh tranh cho băng thông.
4. CSMA/CA (CSMA Collision Avoidance)
CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) là một cơ chế truy cập mạng được thiết kế để giảm thiểu nguy cơ xảy ra va chạm khi nhiều thiết bị cố gắng gửi thông tin cùng một lúc trên cùng một kênh truyền. CSMA/CA cố gắng tránh va chạm ngay từ đầu thông qua một loạt các biện pháp như dùng gói tin RTS (Request to Send) và CTS (Clear to Send) để đàm phán quyền truyền dữ liệu, và ACK (Acknowledgement) để xác nhận việc nhận dữ liệu thành công.
Nguyên lý hoạt động
CSMA/CA hoạt động theo các nguyên tắc sau:
- Cảm nhận kênh (Carrier Sensing): Khi một thiết bị (gọi là nút) muốn gửi dữ liệu, nó trước hết sẽ "nghe" hoặc cảm nhận kênh truyền để xác định xem kênh đó có đang được sử dụng bởi một thiết bị khác hay không. Điều này được thực hiện để tránh gửi dữ liệu khi kênh đã bận, do có thể dẫn đến va chạm.
- Đợi khi kênh bận (Wait if Busy): Nếu kênh truyền được phát hiện là bận, nút sẽ đợi cho đến khi kênh rảnh rỗi. Trong thời gian chờ đợi này, nút sẽ áp dụng một thuật toán back-off để tránh va chạm khi nhiều nút cùng thử truyền tại cùng một thời điểm ngay sau khi kênh rảnh rỗi.
- Gửi yêu cầu truyền (Transmission Request): Khi kênh rảnh, nút sẽ truyền một gói tin RTS (Request to Send) đến nút đích thông báo rằng nó muốn gửi dữ liệu. Điều này giúp đảm bảo rằng các nút khác sẽ biết rằng kênh sẽ sớm được sử dụng và cần tránh truyền trong thời gian này.
- Chờ phản hồi (Waiting for Acknowledgment): Nút đích sẽ phản hồi với một gói tin CTS (Clear to Send) nếu nó sẵn sàng nhận dữ liệu. CTS này cũng thông báo cho các nút khác rằng một phiên truyền dữ liệu sắp bắt đầu, và chúng cần phải tránh truyền trong một khoảng thời gian nhất định.
- Truyền dữ liệu (Data Transmission): Sau khi nhận được CTS, nút gửi sẽ truyền dữ liệu của mình.
- Xác nhận nhận được dữ liệu (Acknowledging Receipt): Khi nút đích nhận được dữ liệu một cách thành công, nó sẽ gửi một gói tin xác nhận (ACK) trở lại nút gửi để thông báo rằng dữ liệu đã được nhận đúng.
- Xử lý va chạm (Collision Handling): Nếu một nút không nhận được CTS sau khi gửi RTS, hoặc không nhận được ACK sau khi gửi dữ liệu, nó sẽ giả định rằng đã xảy ra va chạm hoặc một sự cố nào đó và sẽ áp dụng thuật toán back-off trước khi thử gửi lại.
Ngoài ra bạn đọc có thể tham khảo thêm sơ đồ hoạt động:
Hiệu suất
Hiệu suất của CSMA/CA có thể không cao như CSMA/CD vì nó dành một lượng thời gian đáng kể để nghe và chờ đợi, đặc biệt là trong môi trường có nhiều thiết bị truy cập mạng cùng một lúc. Tuy nhiên, trong môi trường không dây, việc phát hiện va chạm là khó khăn hoặc không khả thi, CSMA/CA đạt hiệu quả tối ưu bằng cách giảm thiểu số lần va chạm, đặc biệt là khi băng thông hạn chế. Điều này làm cho CSMA/CA trở nên lý tưởng cho các mạng không dây (Wi-Fi IEEE 802.11).
5. CSMA/CD (CSMA Collision Detection)
Collision Detection (CD) là một tính năng quan trọng trong CSMA/CD (Carrier Sense Multiple Access with Collision Detection), cho phép các thiết bị trên một mạng Ethernet có dây phát hiện va chạm. Khi hai thiết bị truyền dữ liệu cùng một lúc, tín hiệu từ cả hai thiết bị có thể va chạm, làm hỏng thông tin được gửi. CSMA/CD giúp giải quyết vấn đề này bằng cách ngăn chặn việc truyền dữ liệu tiếp tục khi phát hiện va chạm và sau đó thực hiện các bước để khôi phục truyền thông.
Nguyên lý hoạt động
CSMA/CD hoạt động dựa trên một số nguyên tắc cơ bản:
- Carrier sensing: Trước khi truyền dữ liệu, một thiết bị sẽ "nghe" hoặc kiểm tra kênh truyền để xác định xem có thiết bị nào khác đang truyền dữ liệu hay không.
- Multiple access: Nhiều thiết bị có khả năng truy cập kênh truyền chung và gửi dữ liệu.
- Collision detection: Trong quá trình truyền, nếu một thiết bị phát hiện ra va chạm, nó sẽ ngưng truyền và gửi một tín hiệu JAM để thông báo cho các thiết bị khác biết đã có va chạm xảy ra.
Hiệu suất
Hiệu suất của CSMA/CD không phải lúc nào cũng cao, đặc biệt trong môi trường mạng có tải trọng cao. Hiệu suất cao nhất đạt được khi có ít va chạm và ít nghẽn mạng. Khi tải trọng mạng tăng lên, số lần va chạm tăng theo, dẫn đến sự giảm hiệu suất do mỗi va chạm yêu cầu thời gian phục hồi và thời gian chờ trước khi thử gửi lại. Tuy nhiên, CSMA/CD vẫn có hiệu suất cao hơn các giao thức truy cập ngẫu nhiên không có cơ chế phát hiện va chạm vì nó giảm thiểu thời gian và năng lượng lãng phí trong các va chạm.
Tài liệu tham khảo
- https://www.geeksforgeeks.org/carrier-sense-multiple-access-csma/
- https://www.geeksforgeeks.org/multiple-access-protocols-in-computer-network/
- https://csc-knu.github.io/sys-prog/books/Andrew%20S.%20Tanenbaum%20-%20Computer%20Networks.pdf
- https://www.ucg.ac.me/skladiste/blog_44233/objava_64433/fajlovi/Computer%20Networking%20_%20A%20Top%20Down%20Approach,%207th,%20converted.pdf