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
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
-1). 802.15.4 coi trọng việc thiết lập chế độ làm việc (tiết kiệm năng lượng hay không ) để đưa ra giao thức truy cập môi trường truyền phù hợp.
3.7. Một số chức năng của tầng MAC
3.7.1 Quét kênh
Tất cả thiết bị đều có khả năng thực hiện quét bị động, quét lại kênh, quét phát hiện năng lượng và quét chủ động qua một danh sách các kênh. Tầng trên sẽ đưa ra một danh sách kênh được chọn bởi thuộc tính phyChannelsSupported. Một thiết bị sẽ được cung cấp thông tin để bắt đầu quét kênh thông qua chỉ thị MLME-SCAN.request. Trong thời gian quét, thiết bị đó sẽ tạm dừng việc truyền Beacon, nếu có thể hoặc khi có kết quả của việc quét kênh, thiết bị sẽ thực hiện tiếp việc truyền Beacon. Kết quả của việc quét sẽ được trả về thông qua chỉ thị MLME-SCAN.confirm.
3.7.1.1 Quét kênh phát hiện năng lượng
Quét kênh phát hiện năng lượng cho phép các thiết bị đầy đủ chức năng FFD thu được các đơn vị năng lượng tối đa trong mỗi kênh được yêu cầu. PAN Coordinator sử dụng kiểu quét này để lựa chọn kênh truyền trong chu kỳ hoạt động của mình khi nó bắt đầu thiết lập một PAN mới. Trong mỗi lần quét kênh phát hiện năng lượng, tầng con MAC sẽ từ chối tất cả các khung nhận được trên dịch vụ dữ liệu tầng vật lý. Kiểu quét kênh này được thực hiện trên một tập các kênh logic cụ thể được yêu cầu trong chỉ thị MLME-SCAN.request với một tập biến ScanType. Với mỗi kênh logic, thiết bị sẽ chuyển đến kênh đó bằng cách đặt giá trị phyCurrentChannel phù hợp, sau đó thực hiện đo phát hiện năng
lượng một cách lặp lại trong khoảng [aBaseSuperframeDuration * (2n + 1)] symbol, ở đây n là giá trị của ScanDuration trong MLME-SCAN.request. Việc quét phát hiện năng lượng sẽ kết thúc khi số kênh đã được quét bằng số các thực hiện đề ra lớn nhất hoặc năng lượng đã được đo trên tất cả các kênh logic
3.7.1.2 Quét kênh chủ động
Quét kênh chủ động cho phép một thiết bị đầy đủ chức năng xác định vị trí của Coordinator đang truyền khung Beacon trong khoảng cách hoạt động của nó. Việc quét kênh này có thể được sử dụng bởi một thiết bị sẽ là coordinator tương lai lựa chọn định danh PAN để bắt đầu một PAN mới hoặc nó có thể sử dụng bởi thiết bị để liên kết. Trong khi quét chủ động, MAC sẽ từ chối tất cả các khung nhận được trên dịch vụ dữ liệu tầng vật lý ngoại trừ khung Beacon.
Trước khi bắt đầu quét kênh chủ động, MAC sẽ lưu giữ giá trị của
macPANId và sẽ đặt giá trị 0xffff cho khoảng thời gian quét. Điều này cho phép
bộ lọc bên nhận truy cập tất cả những Beacon xa hơn so với những Beacon từ PAN hiện tại của nó. Khi hoàn thành việc quét, MAC sẽ lưu lại giá trị của
Việc quét kênh chủ động trên một tập các kênh logic sẽ sử dụng MLME- SCAN.request. Trong chỉ thị lệnh này, biến ScanType được đặt giá trị tương ứng với giá trị của việc quét kênh chủ động. Đối với mỗi kênh logic, đầu tiên thiết bị chuyển đến kênh này bằng cách đặt phyCurrentChannel giá trị phù hợp và gửi
khung lệnh yêu cầu Beacon. Sau đó, thiết bị sẽ chờ nhận trong [aBaseSuperframeDuration *(2n + 1)] symbol, ở đây n là giá trị của ScanDuration. Trong khoảng thời gian này, thiết bị sẽ từ chối tất cả các khung không phải là Beacon và nó sẽ ghi lại tất cả những thông tin chứa trong tất cả các Beacon duy nhất mà nó nhận được. Một Beacon được xem là duy nhất nếu nó chứa cả định danh của PAN và địa chỉ nguồn mà nó chưa biết trước khi quét kênh.
Thiết bị có thể lưu một giá trị từ 1 đến số thực hiện theo lý thuyết lớn nhất trong bộ miêu tả PAN. Nếu Coordinator của PAN trong chế độ cho phép truyền Beacon nhận được khung lệnh yêu cầu Beacon, nó sẽ bỏ qua khung lệnh này và tiếp tục truyền Beacon của nó như bình thường. Nếu Coordinator của PAN được phép truyền các khung ngoài khung Beacon nhận được khung lệnh này thì nó sẽ truyền một khung Beacon đơn sử dụng kỹ thuật unslotted CSMA/CA.
Việc quét kênh chủ động sẽ kết thúc khi số lượng Beacon tìm được bằng giới hạn thực hiện theo lý thuyết hoặc kênh được quét đủ thời gian. Nếu điều