Trong mạng cho phép truyền Beacon, khi một Coordinator muốn truyền dữ liệu đến một thiết bị nó sẽ thông báo trong khung Beacon rằng đang có dữ liệu cần truyền. Khi thiết bị mạng lắng nghe Beacon và thấy Coordinator đang có dữ liệu cần truyền thì nó sẽ truyền khung lệnh MAC để yêu cầu dữ liệu thông qua kỹ thuật slotted CSMA/CA. Coordinator báo nhận bằng một khung báo nhận và dữ liệu sẽ được gửi đi thông qua kỹ thuật slotted CSMA/CA. Thiết bị nhận sẽ gửi một khung báo nhận để thông báo việc nhận thành công. Khi nhận được báo nhận, Coordinator sẽ loại bỏ danh sách các dữ liệu cần truyền. Quá trình truyền dữ liệu kết thúc.
Hình 3.5: Truyền dữ liệu từ Coordinator đến thiết bị trong chế độ có Beacon
Đối với mạng không sử dụng Beacon, khi Coordinator muốn truyền dữ liệu đến một thiết bị, nó lưu trữ dữ liệu cho thiết bị thích hợp để tạo mối liên hệ và yêu cầu dữ liệu. Một thiết bị có thể tạo mối liên hệ bằng cách truyền khung lệnh MAC để yêu cầu dữ liệu, nó sử dụng kỹ thuật unslotted CSMA/CA để truy cập đường truyền. Coordinator sẽ báo nhận bằng một khung báo nhận. Nếu dữ liệu đang bị treo, Coordinator sẽ truyền khung dữ liệu. Ngược lại, Coordinator sẽ truyền một khung dữ liệu có trường độ dài tải đặt là 0 để thông báo rằng không có dữ liệu bị treo. Thiết bị nhận sẽ gửi lại một khung báo nhận.
Hình 3.6: Truyền dữ liệu từ Coordinator đến thiết bị trong chế độ không truyền Beacon
3.4.3 Truyền dữ liệu trên các thiết bị ngang hàng
Trong topo mạng ngang hàng, mỗi thiết bị giao tiếp với các thiết bị khác trong vùng ảnh hưởng của sóng radio, để làm việc một cách hiệu quả các thiết bị muốn giao tiếp với nhau phải luôn đồng bộ với nhau. Các thiết bị có thể truyền dữ liệu của nó bằng cách sử dụng kỹ thuật truy cập unslotted CSMA/CA để truy cập môi trường truyền.
3.5 Cấu trúc khung
Bao gồm 3 phần:
- Tiêu đề đầu của khung - Tải của khung
- Tiêu đề cuối của khung
Hình 3.7: Cấu trúc khung MAC của IEEE 802.15.4
Tiêu đề đầu của khung bao gồm:
- Trường Frame Control: Trường này có độ dài 2 octet (byte) chứa các thông tin như: Kiểu khung, chế độ bảo mật và các cờ điều khiển khác. - Trường Sequence Number: Trường này có độ dài là 1 byte là dãy số
định danh của khung.
- Các trường địa chỉ: Các trường này cho biết định danh của PAN đích (Destination PAN Identifier), địa chỉ đích (Destination Address), địa chỉ nguồn (Source Address), định danh của PAN nguồn (Source PAN Identifier).
- Trường tiêu đề bảo mật phụ (Auxiliary Security Header): Trường này có độ dài không cố định và chứa các thông tin để xử lý bảo mật. Trường này được sử dụng khi trường con Security Enabled của trường điều khiển khung được đặt là 1.
Trường tải của khung (Frame Payload): Trường này có kích thước không cố định, chứa các thông tin riêng của từng kiểu khung.
Tiêu đề cuối khung: Chứa trường FCS, trường này có độ dài 2 byte, chứa mã dư vòng 16 bit.
3.5.2 Cấu trúc các kiểu khung 3.5.2.1 Khung Beacon 3.5.2.1 Khung Beacon
Cấu trúc khung Beacon bao gồm ba phần: Tiêu đề đầu, tải của khung và tiêu đề cuối.
Phần tải của khung Beacon có những trường như sau:
- Trường đặc tả siêu khung (Superframe Specification): Trường này có độ dài 16 bit, chứa các thông tin như thứ tự Beacon, thứ tự siêu khung, khe CAP cuối và các cờ điều khiển khác.
- Trường GTS: Trường này có độ dài 8 bit, chứa các thông tin như: Số lượng bộ miêu tả GTS và cờ điều khiển cho phép truy cập GTS.
- Trường địa chỉ đang chờ (Pending Address): Trường này cho biết số các địa chỉ 16 bit, 64 bit được liệt kê trong danh sách địa chỉ của Beacon.
- Trường tải của Beacon: là số byte muốn truyền lên lớp trên của khung Beacon, tối đa là aMaxBeaconPayloadLength byte.
3.5.2.2 Khung dữ liệu
Tương tự như cấu trúc chung của khung MAC: Bao gồm 3 phần và có cấu trúc như sau:
Hình 3.9: Cấu trúc khung dữ liệu
3.5.2.3 Khung báo nhận:
Cấu trúc khung báo nhận như sau:
Hình 3.10: Cấu trúc khung báo nhận
Khung báo nhận không có phần tải của khung, phần tiêu đề đầu chỉ có 2 trường: Trường điều khiển khung và trường định danh của khung.
3.5.2.4 Khung lệnh MAC
Khung lệnh MAC có cấu trúc như sau:
Phần tải (Command Payload) của khung MAC bao gồm 2 trường:
- Trường Kiểu khung lệnh: Cho biết khung lệnh là loại khung nào. - Trường tải khung lệnh: Chứa tải của khung lệnh
3.6 Điều khiển truy cập môi trƣờng truyền
Trong LR-PAN có hai kỹ thuật truy cập kênh truyền: Truy cập dựa trên tranh chấp và truy cập không tranh chấp. Truy cập dựa trên tranh chấp cho phép các thiết bị truy cập kênh theo kiểu phân tán sử dụng kỹ thuật CSMA/CA. Truy cập không tranh chấp là kỹ thuật được điều khiển bởi PAN Coordinator thông qua việc sử dụng các GTS trong cấu trúc siêu khung.
3.6.1 Cấu trúc siêu khung
Trong LR-WPAN cho phép tùy chọn sử dụng cấu trúc siêu khung, những định dạng của cấu trúc siêu khung này được định nghĩa bởi các Coordinator. Mỗi một siêu khung được giới hạn bởi hai gói Beacon và nó được chia thành 16 slot bằng nhau. Khung Beacon được truyền trong slot đầu tiên của mỗi siêu khung. Nó được dùng để đồng bộ các thiết bị khác, định danh PAN và miêu tả cấu trúc siêu khung. Khi Coordinator không muốn sử dụng cấu trúc siêu khung, nó sẽ không truyền khung Beacon. Các thiết bị muốn giao tiếp với nhau trong chu kỳ truy cập có tranh chấp – CAP (Contention Access Period) thì chúng sẽ sử dụng kỹ thuật slotted CSMA/CA.
Một siêu khung được giới hạn bằng khung Beacon và có thể có hai phần: phần chia chủ động (active portion) và phần chia bị động. Cấu trúc của siêu khung được miêu tả bởi giá trị macBeaconOrder(BO) và macSuperframeOrder.
Thuộc tính macBeaconOrder miêu tả khoảng thời gian mà Coordinator sẽ truyền các khung Beacon, Khoảng cách giữa Beacon (BI) được tính như sau: BI =
aBaseSuperframeDuration * 2BO với 0BO14, giá trị của
macSuperframeOrder sẽ được bỏ qua nếu BO=15. Thuộc tính
macSuperframeOrder(SO) chỉ độ dài của phần chia chủ động của siêu khung, kể
cả khung Beacon. Khoảng thời gian siêu khung SD được tính như sau: SD =
aBaseSuperframeDuration * 2SO với 0 SOBO 15. Nếu SO =15 thì siêu
khung không còn phần chia chủ động sau Beacon. Nếu BO=15 cấu trúc siêu khung không tồn tại, giá trị macSuperframeOrder sẽ được bỏ qua và giá trị
macRxOnWhenIdle sẽ được định nghĩa bất kỳ khi nào bên nhận được phép nhận
trong chu kỳ phần chia bị động của bên truyền. Phần chia chủ động của mỗi một siêu khung sẽ chia khoảng thời gian 2SO * aBaseSlotDuration thành aNumSuperframeSlots khe bằng nhau, và nó tạo thành 3 phần: một Beacon,
0; CAP sẽ bắt đầu ngay lập tức sau Beacon. CFP (nếu có) sẽ bắt đầu ngay lập tức sau CAP, và kéo dài cho đến khi kết thúc phần chia chủ động của siêu khung. CFP sẽ được chia thành các GTS. Các PAN muốn sử dụng cấu trúc siêu khung sẽ đặt giá trị macBeaconOrder từ 0 đến 14 và đặt giá trị macSuperframeOrder nằm giữa 0 và giá trị của macBeaconOrder. Nếu PAN không muốn sử dụng cấu trúc siêu khung sẽ đặt cả macBeaconOrder và
macSuperframeOrder là 15. Trong trường hợp này, Coordinator sẽ không truyền
các Beacon, việc truyền các khung sẽ sử dụng kỹ thuật unslotted CSMA/CA để truy cập kênh truyền (ngoại trừ khung báo nhận) và các GTS sẽ không được phép sử dụng.
Hình 3.12: Cấu trúc siêu khung
3.6.1.1 CAP (Contention Access Period)
CAP sẽ bắt đầu ngay sau Beacon và hoàn thành trước khi bắt đầu CFP trên siêu khung. Nếu CFP có độ dài là 0, CAP sẽ hoàn thành tại thời điểm kết thúc của siêu khung.
CAP có ít nhất là aMinCAPLength symbols (1 symbol = 16 μs), nếu không một phần sẽ được sử dụng để tăng độ dài khung Beacon cần thiết để thực hiện duy trì GTS. Nó có thể co lại hoặc dãn ra một cách động để sử dụng kích thước của CFP. Các khung dữ liệu (trừ khung báo nhận) sẽ được truyền trong CAP sẽ sử dụng kỹ thuật CSMA/CA để truy cập kênh truyền. Một thiết bị đang truyền sẽ đảm bảo rằng việc đang thực hiện sẽ hoàn thành xong trước một khoảng thời gian khung (IFS), bao gồm cả việc nhận được khung báo nhận, nếu không nó sẽ trì hoãn cho đến CAP của siêu khung tiếp theo.
3.6.1.2 CFP (Contention Free Period)
CFP sẽ bắt đầu ngay sau CAP và nó sẽ hoàn thành trước khi bắt đầu Beacon tiếp theo. Nó được chia thành các GTS (Guaranteed Time Slot). Nếu GTS được dùng bởi PAN Coordinator thì chúng sẽ được xác định trong CFP.
Một thiết bị đang truyền trong CFP sẽ đảm bảo rằng việc thực hiện của nó hoàn thành trước một khoảng thời gian khung trước khi kết thúc GTS của nó.
GTS được xác định bởi bộ điều phối PAN, nó được sử dụng để truyền thông giữa PAN và các thiết bị đã liên kết với PAN. Một GTS có thể được đặt trên một hoặc nhiều khe thời gian trong siêu khung. PAN sẽ xác định GTS dựa vào yêu cầu trong GTS Request và không gian sẵn có của siêu khung. Việc xác định GTS dựa trên cơ sở ―yêu cầu đến trước thì đặt chỗ trước‖. Các GTS được đặt liên tiếp cho đến khi kết thúc siêu khung. Trong GTS không sử dụng kỹ thuật CSMA/CA.
3.6.1.3 IFS
Lớp con MAC cần thời gian để kết thúc xử lý dữ liệu nhận được ở tầng vật lý. Để thực hiện được điều này, Hai khung được truyền từ một thiết bị sẽ được phân cách bởi một khoảng IFS. Nếu lần truyền đầu tiên yêu cầu báo nhận thì khoảng cách giữa khung báo nhận và lần truyền thứ 2 ít nhất là một khoảng IFS. Chiều dài của khoảng IFS phụ thuộc vào kích thước của khung đã được truyền. Các khung có chiều dài nhỏ hơn hoặc bằng aMaxSIFSFrameSize(18 byte) sẽ sử dụng chu kỳ SIFS (ít nhất là aMinSIFSPeriod symbol, giá trị mặc định là 12 symbol), ngược lại nếu lớn hơn sẽ sử dụng LIFS (ít nhất là
aMinLIFSPeriod symbol, giá trị mặc định là 40 symbol).
Hình 3.13: Các khoảng IFS
3.6.2 Thuật toán CSMA/CA
Thuật toán CSMA/CA sẽ được sử dụng trước khi truyền dữ liệu hoặc truyền các khung lệnh MAC trong CAP. Thuật toán CSMA/CA sẽ không sử
dụng để truyền các khung Beacon, khung báo nhận, hoặc các khung dữ liệu truyền trong CFP.
Nếu các Beacon được sử dụng trong PAN, lớp con MAC sẽ sử dụng slotted CSMA/CA để truyền trong CAP, ngược lại MAC sẽ sử dụng unslotted CSMA/CA. Trong cả hai trường hợp, thuật toán sử dụng đơn vị là chu kì backoff, ở đây một đơn vị chu kỳ backoff sẽ bằng aUnitBackoffPeriod symbol (giá trị mặc định là 20 symbol).
Trong slotted CSMA/CA giới hạn chu kỳ backoff của mỗi thiết bị trong PAN sẽ được sắp thẳng hàng với giới hạn khe của siêu khung của PAN Coordinator. Thời điểm bắt đầu của chu kỳ backoff đầu tiên của mỗi thiết bị được sắp thẳng hàng với thời điểm bắt đầu của truyền Beacon.
Mỗi thiết bị duy trì ba giá trị cho mỗi lần truyền:
- NB là lượng thời gian kỹ thuật CSMA/CA được yêu cầu để rút lui trong khi đang cố gắng truyền. Giá trị này sẽ được khởi tạo là 0 trước khi thử truyền đợt mới.
- CW là kích thước cửa sổ tranh chấp, định nghĩa số lượng chu kỳ backoff cần thiết để làm sạch kênh một cách chủ động trước khi việc truyền được thực hiện. Giá trị này sẽ được khởi tạo là 2 trước mỗi lần thử truyền và sẽ được khởi tạo lại là 2 mỗi lần kênh truyền được quyết định là bận. CW chỉ sử dụng cho slotted CSMA/CA
- BE là số mũ của backoff
Trong hệ thống unslotted CSMA/CA hoặc slotted CSMA/CA, nếu
macBattLifeExt sẽ đặt giá trị là FALSE thì BE sẽ được khởi tạo giá trị là macMinBE. Trong slotted CSMA/CA, nếu macBattLifeExt có giá trị là TRUE
thì BE sẽ nhận giá trị là min(2, macMinBE)
Khi sử dụng slotted CSMA/CA, MAC sẽ khởi tạo NB, CW và BE và xác định giới hạn của chu kỳ backoff tiếp theo (bƣớc 1). Với unslotted CSMA/CA, MAC sẽ khởi tạo NB và BE, sau đó thực hiện bước 2. MAC sẽ làm trễ trong một khoảng ngẫu nhiên của chu kỳ backoff trong khoảng từ 0 đến 2BE -1 (bƣớc
2) sau đó yêu cầu lớp vật lý thực hiện CCA (bƣớc 3). Với hệ thống slotted
CSMA/CA, CCA sẽ bắt đầu trong giới hạn của chu kỳ backoff, còn với unslotted CSMA/CA, CCA sẽ bắt đầu ngay lập tức.
Trong slotted CSMA/CA, nếu trường con BLE (Battery Life Extension) đặt là 0 thì lớp con MAC sẽ đảm bảo rằng sau thủ tục backoff ngẫu nhiên, hoạt động còn lại của CSMA/CA được đảm bảo và toàn bộ việc truyền sẽ được thực hiện trước khi kết thúc CAP. Nếu số lượng chu kỳ backoff lớn hơn chu kỳ
backoff còn lại trong CAP, thì lớp con MAC sẽ tạm dừng việc đếm lùi backoff lúc kết thúc CAP và bắt đầu lại khi bắt đầu CAP trong siêu khung tiếp theo.
Nếu số chu kỳ backoff nhỏ hơn hoặc bằng số chu kỳ backoff còn lại trong CAP thì MAC sẽ áp dụng các độ trễ backoff của nó và tính toán xem khi nào nó có thể được xử lý. Lớp con MAC sẽ được xử lý các bước còn lại của thuật toán nếu việc truyền khung và báo nhận được hoàn thành trước khi kết thúc CAP. Khi được xử lý nó sẽ yêu cầu tầng vật lý thực hiện CCA trong siêu khung hiện tại, nếu không được xử lý nó sẽ đợi cho đến khi bắt đầu CAP trong siêu khung tiếp theo và lặp lại việc tính toán.
Nếu trường con BLE được đặt giá trị là 1 thì tầng con MAC sẽ đảm bảo rằng sau thủ tục backoff ngẫu nhiên, hoạt động còn lại của CSMA/CA sẽ được đảm bảo và toàn bộ việc truyền sẽ được thực hiện trước khi kết thúc CAP. Việc đếm ngược backoff sẽ chỉ xảy ra trong 6 chu kỳ backoff đầy đủ đầu tiên sau khi kết thúc chu kỳ IFS của Beacon. Tầng con MAC sẽ được xử lý các bước còn lại của thuật toán nếu việc truyền các khung và các báo nhận được hoàn thành trước khi kết thúc CAP và việc truyền khung bắt đầu ở một trong 6 chu kỳ backoff đầu tiên sau chu kỳ IFS của Beacon. Khi được xử lý nó sẽ yêu cầu tầng vật lý thực hiện CCA trong siêu khung hiện tại, nếu không được xử lý nó sẽ đợi cho đến khi bắt đầu CAP trong siêu khung tiếp theo và lặp lại việc tính toán.
Nếu kênh được quyết định là bận (bƣớc 4), lớp con MAC sẽ tăng cả NB và BE lên 1 và đảm bảo rằng BE không lớn hơn aMaxBE. Trong slotted CSMA/CA, nó sẽ đặt lại CW bằng 2, nếu giá trị NB nhỏ hơn hoặc bằng
macMaxCSMABackoffs thì thuật toán quay về bước 2. Ngược lại nếu giá trị NB
lớn hơn thuật toán sẽ kết thúc với trạng thái lỗi truy cập kênh truyền.
Nếu kênh được quyết định là rỗi, lớp con MAC sẽ đảm bảo rằng cửa sổ tranh chấp phải rỗi trước khi bắt đầu truyền. Để thực hiện điều này, lớp con MAC sẽ giảm CW đi 1 sau đó quyết định xem khi nào thì nó bằng 0. Nếu nó khác 0 thuật toán quay về bước 3. Nếu nó bằng 0, MAC sẽ bắt đầu truyền khung trong giới hạn chu kỳ backoff tiếp theo.
Trong unslotted CSMA/CA, nếu kênh truyền được quyết định là rỗi thì MAC sẽ truyền ngay lập tức.
Hình 3.14: Thuật toán của slotted CSMA/CA và Unslotted CSMA/CA
Nhận xét: Ta thấy được rằng trong 802.15.4, sử dụng 2 kỹ thuật CSMA/CA khác nhau cho từng trường hợp cụ thể. Mặt khác kích thước cửa sổ tranh chấp được sử dụng trong 802.15.4 không tăng lên gấp đôi trong mỗi lấn tranh chấp không thành công (nó được gán là 2) như trong 802.11. Các trạm trong 802.15.4 không phải đợi một khoảng DIFS trước khi truy cập kênh truyền vì trong quá trình thực hiện tranh cháp truy cập đường truyền các trạm đã tự làm trễ một khoảng thời gian ngẫu nhiên từ (0, 2BE