Tập hợp các lệnh được định danh bằng 8-bit dữ liệu, mỗi lệnh có một ID lệnh riêng, phần ID này sẽ cùng phần dữ liệu tải của lệnh sẽ hợp thành tải của tầng mạng. Bảng 3.3 chứa các tập lệnh tương ứng với mã định danh:
Định danh của từng lệnh
Lệnh Ý nghĩ lệnh
00000001 Route request Yêu cầu định tuyến
00000002 Route reply Phản hồi định tuyến
00000003 Route error (network status) Báo lỗi định tuyến
00000004 Leave Yêu cầu rời bỏ khỏi mạng
00000005 Route record Ghi lại định tuyến
00000006 Rejoin request Yêu cầu tham gia lại
00000007 Rejoin response Phản hồi lại rejoin request
00000008 Link status (ZigBee-Pro) Cập nhật trạng thái liên kết
00000009 Network report (ZigBee-Pro) Báo cáo tình hình mạng
0000000A Network update (ZigBee-Pro) Cập nhật tình hình mạng
3.7.3. Chức năng định tuyến của tầng mạng
Do mạng Zigbee (IEEE 802.15.4) là mạng khơng dây có khả năng hỗ trợ nhiều dạng tô-pô mạng, cũng như mạng hỗ trợ số lượng lớn các nút trong mạng (hơn 65000 nút mạng) nên việc định tuyến trong mạng Zigbee (IEEE 802.15.4) cũng là một phần khá quan trọng đóng vai trị quyết định cho sự thành công của mạng Zigbee (IEEE 802.15.4).
Trong mạng Zigbee (IEEE 802.15.4), các nút mạng có hai địa chỉ là địa chỉ IEEE 64-bit quy định bởi chuẩn IEEE 802.15.4 và 16-bit địa chỉ mạng được đánh theo chuẩn Zigbee Alliance quy định, đây cũng là địa chỉ phục vụ cho mục đích định tuyến trong mạng. Việc định tuyến được hướng đến với hai phương pháp định
tuyến là phương pháp định tuyến AODVjr , một phương pháp được đơn giản hóa từ phương pháp định tuyến AODV (Ad hoc On Demand Distance Vector) và phương pháp định tuyến theo cách đánh địa chỉ cho cây phân cấp (Cluster-Tree Network Addresss Allocation).
Trong mạng Zigbee, các nút mạng có thể được phân chia thành 2 loại, đó là các nút RN+ và các nút RN- :
- RN+ : đây là các nút có đủ bộ nhớ và năng lực xử lí, có thể vận hành được việc định tuyến theo phương pháp AODVjr.
- RN- : đây là các nút có bộ nhớ giới hạn, chỉ có thể hoạt động được với phương pháp đánh địa chỉ mạng cây phân cấp Cluster-Tree.
Trong mạng Zigbee (IEEE 802.15.4), nút ZC (Zigbee Coordinator) và các nút ZR (Zigbee Router) khởi tạo và duy trì bảng định tuyến, được sử dụng để xác định nút (chặng) tiếp theo mà một gói tin đang cần định tuyến nên đi qua. Bảng đinh tuyến này bao gồm:
Bảng 3. 4: Bảng định tuyến trong tầng mạng Zigbee
Mục Mơ tả
Destination address Địa chỉ đích, 2 byte
Status Trạng thái định tuyến: Active, Inactive, Fail
Many-to-one 1 bit, là 1 nếu có yêu cầu định tuyến many-to-one
Route record required 1 bit, là 1 nếu muốn ghi lại con đường định tuyến
Group ID flag 1 bit, bật nếu muốn thiết lập ID trong truyền multicast
Next-hop address Địa chỉ mạng 16bit của chặng tiếp theo
Hai bảng định tuyến nữa cũng có liên quan đến q trình định tuyến, đó là bảng khám phá tuyến (Route Discovery Table) và bảng hàng xóm (Neighbor Table). Bảng khám phá tuyến sẽ chỉ ra chi phí đường đi (path cost), địa chỉ nguồn, địa chỉ nút định tuyến ... bao gồm:
Mục Mô tả
Route request ID Số đinh danh của yêu cầu định tuyến
Source address Địa chỉ nguồn của nút gửi, 16bit địa chỉ mạng
Sender address Địa chỉ nguồn của nút gửi gói tin lúc đầu. Địa chỉ này được dùng khi gửi lại các gói phản hồi route reply
Forward cost Chi phí chuyển tiếp gói tin, được cập nhật mỗi khi gói được chuyển qua một nút mạng
Residual cost Chi phí cịn lại để đến đích, cập nhật khi có route reply
Expiration time Thời gian hết hạn của bảng định tuyến
Các thiết bị trong mạng Zigbee (IEEE 802.15.4) cũng duy trì thêm một bảng thơng tin định tuyến nữa là bảng hàng xóm, bảng này được cập nhật mỗi lần khi thiết bị nhận được gói tin từ hàng xóm của nó. Bảng hàng xóm rất hữu dụng khi thiết bị cần tìm nút có khả năng định tuyến gần nhất hoặc tìm nút cha mới khi vào mạng (trong mạng cây phân cấp). Bảng có các trường thơng tin sau:
Mục Mơ tả
Extended address 64-bit địa chỉ IEEE 802.15.4
Network address 16 bit địa chỉ mạng của nút
Device type Dạng thiết bị: ZC / ZR / ZED
RxOnWhenIdle TRUE nếu thiết bị thức khi chờ
Relationship Quan hệ với nút hàng xóm với thiết bị: cha, con, khơng có quan hệ
Transmit failure Truyền lỗi trước đó
LQI Giá trị LQI
Incoming beacon timestamp
Thời điểm nhận gói beacon cuối cùng
Potential parent Tùy chọn, xem nút có phải nút cha hay khơng
3.7.3.1. Phương pháp định tuyến AODV
AODV là phương pháp định tuyến vectơ khoảng cách theo yêu cầu, các nút không nằm trên con đường cần định tuyến trong mạng thì khơng cần phải duy trì bất kì thơng tin định tuyến đường nào và cũng khơng tham gia vào bất kì q trình trao đổi định tuyến nào. Hơn nữa, một nút mạng cũng không cần phải gửi đi gói tin phát hiện tuyến, hay duy trì một thơng tin định tuyến nào đến nút khác cho đến khi hai nút cần truyền thông với nhau, trừ khi nút đó được coi như là một trạm chuyển tiếp trung gian duy trì kết nối đến hai hay nhiều nút khác. Mục đích chính của phương pháp là quảng bá ra các gói phát hiện (discovery packet) để phân biệt giữa việc quản lí kết nối cục bộ giữa các nút cần truyền thông và sự duy trì mơ hình mạng tổng thể với việc phổ biến thông tin về các thay đổi trong mạng cục bộ đến
các nút lân cận cần cập nhật thông tin.
Khi một nút nguồn muốn giao tiếp (truyền) với nút khác mà khơng có thơng tin định tuyến, nó sẽ khởi tạo q trình tìm đường (Path Discovery). Mỗi nút sẽ duy trì hai biến trạng thái: Số thứ tự (sequence number) và định danh quảng bá (broadcast id). Nút nguồn sẽ khởi tạo quá trình tìm đường bằng cách quảng bá đi một gói yêu cầu định tuyến RREQ (Route Request) đến nút lân cận của nó, bao gồm các trường:
- Địa chỉ nguồn, số thứ tự ở nguồn (source addr, source sequence number). - Mã định danh quảng bá (broadcast id).
- Địa chỉ đích, số thứ tự ở đích (dest addr, dest sequence number ). - Số bước nhảy (hop count).
Trong đó, số thứ tự nguồn phục vụ cho việc làm tươi để duy trì các thơng tin mới về đường dẫn trong khi số thứ tự đích lại được dùng để duy trì sự cập nhật mới của tuyến định tuyến trước khi nó được chấp nhận bởi phía nút nguồn.
Cặp [địa chỉ nguồn, định danh quảng bá] (source addr, broadcast id) là duy nhất với mỗi RREQ, và định danh quảng bá sẽ được tăng lên một đơn vị mỗi lần nút nguồn gửi một RREQ. Khi nút đích nhận RREQ, nếu nó đã nhận một RREQ trước đó có cùng số id và địa chỉ đích, nó sẽ bỏ qua RREQ này và không quảng bá tới các nút lân cận. Nếu khơng có sự trùng lặp, gói RREQ sẽ được quảng bá với trường hop count được tăng thêm một đơn vị.
Khi gói RREQ truyền từ nguồn đến đích, nó tự động thiết lập một đường quay ngược từ tất cả các nút trở về lại nút nguồn. Để thiết lập đường đi ngược này, nút ghi lại địa chỉ của hàng xóm mà nó nhận được gói RREQ đầu tiên. Đường định tuyến ngược về này được duy trì trong thời gian ít nhất đủ để gói RREQ đi qua mạng và gửi trả lời về cho nút gửi.
Mỗi nút trên đường định tuyến sẽ lưu giữ : thơng tin IP nguồn, IP đích, định danh quảng bá, thời gian hết hạn của đường định tuyến ngược và số thứ tự của nút nguồn.
Hình 3. 30: Định tuyến AODV và hình thành định tuyến ngƣợc
Khi một nút nhận RREQ đến một nút, nút nhận sẽ kiểm tra xem gói RREQ có phải được nhận qua một đường liên kết hai chiều hay không. Nếu nút này khơng phải là nút đích nhưng có tuyến đến nút đích, nó xác định đường đi hiện thời bằng cách so sánh số thứ tự đích (destination sequence number) trong mục định tuyến của nó với số thứ tự đích trong gói RREQ. Nếu số thứ tự đích của gói RREQ lớn hơn giá trị được ghi lại ở nút này, nút này sẽ không sử dụng tuyến này để trả lời cho gói RREQ, thay vì quảng bá lại gói RREQ. Ngược lại, nếu thứ tự đích của RREQ nhỏ hơn hoặc bằng nhưng số hop count ít hơn, nút sẽ truyền một gói tin hồi đáp tuyến đường (Route Reply -RREP) đến hàng xóm của nó mà nó nhận được gói RREQ. Một gói RREP chứa các thơng tin sau: Địa chỉ nguồn, địa chỉ đích, số thứ tự đích, hop count và thời gian sống (lifetime). Khi gói RREP quay trở về nút nguồn, mỗi nút trên đường đi đó sẽ thiết lập một điểm chuyển tiếp (forward pointer) đến nút mà gói tin đã từng đến, cập nhật thông tin timeout cho mỗi tuyến đường từ nguồn tới đích, và ghi lại số thứ tự đích mới nhất của nút đích được yêu cầu.
Các nút trên đường đi được xác định bởi gói RREP sẽ bị hết giờ (timeout) sau khi thời gian yêu cầu tuyến đường đi hết hạn và sẽ bị xoá. Giá trị của thời gian timeout phụ thuộc vào kích cỡ của mạng Adhoc, được gắn với mỗi tuyến đường để thể hiện thời gian sau đó tuyến đường đó bị cho là không thể đến đích. Mỗi lần tuyến đường được sử dụng để truyền dữ liệu từ nút nguồn tới nút đích , thời gian timeout của tuyến đó lại được được đặt lại (reset) bằng thời gian hiện thời cộng với thời gian timeout của tuyến đường hoạt động (ART- active-route-timeout).
tiên và có thể cập nhật thơng tin định tuyến sau đó nếu nó thấy đường đi tốt hơn. Mỗi bảng định tuyến bao gồm các trường: nút đích, chặng tiếp theo, số chặng, số thứ tự đích, các nút hàng xóm lân cận hoạt động trên tuyến đường này, thời gian hết hạn của bảng định tuyến.
Để duy trì đường đi, mỗi nút giữ địa chỉ của các nút hoạt động thông qua các gói tin đã nhận được. Một khi chặng kế tiếp trên đường đi từ nút nguồn đến nút đích khơng thể đến được (không “nghe” thấy thông điệp HELLO từ nút kế tiếp), nó thơng báo cho nút lân cận ở phía ngược lại của đường đi qua nó về việc đứt liên kết bằng gói tin RREP với số thứ tự mới. Tiến trình này tiếp tục cho đến khi tất cả nút nguồn hoạt động được thông báo. Khi nhận được thông báo về đường kết nối đứt gãy, thông điệp báo lỗi RERR (Route Errors) sẽ được thơng báo đến tồn mạng và nút nguồn có thể khởi tạo lại tiến trình phát hiện đường đi tới đích nếu tuyến đường tới đích vẫn cần đến. Nếu nó quyết định xây dựng lại tuyến đường tới đích, nó sẽ gửi gói tin RREQ với số thứ tự đích là giá trị lớn hơn số thứ tự đã biết trước đó, để đảm bảo nó tạo lại tuyến đường mới, có thể xây dựng được và khơng có nút nào trả lời nếu chúng vẫn giữ lại tuyến đường trước đó.
3.7.3.2. Giao thức định tuyến trong mạng Cây Phân Cấp
Trong phương pháp định tuyến mạng cây phân cấp, ZC (Zigbee
Coordinator) có thể quyết định được số lượng các nút con của ZR (Zigbee Router) và chiều sâu của mạng cây phân cấp. Khi một nút mạng muốn tham gia vào mạng cây phân cấp đã được tạo ra sẵn, nó sẽ chọn nút cha với khả năng định tuyến thích hợp và nút cha sẽ có nhiệm vụ tính tốn địa chỉ cho nút con.
Trong giao thức định tuyến cây phân cấp, có ba tham số được tính đến, đó là độ sâu của mạng cây phân cấp, số lượng các nút con mà một nút cha có thể nhận và số lượng nút con có khả năng định tuyến.
- Độ sâu của một nút trong mạng cây phân cấp: là số lượng chặng nhỏ nhất cần được đi qua từ nút lá – là thiết bị ZED (Zigbee End Device) đến nút gốc ZC (Zigbee Coordinator). Độ sâu của mạng là giá trị lớn nhất trong các độ sâu của các nút lá. Nút gốc ZC sẽ có độ sâu là 0, các nút con của nó có độ sâu là 1.
- Số lượng các nút con mà nút cha có thể chấp nhận: nút cha sẽ được định xem có thể có bao nhiêu nút con được kết nối đến mình. Số lượng nút con tăng đồng nghĩa với năng lực cần thiết của nút cha để xử lí định tuyến sẽ tăng lên.
- Số lượng các ZR mà nút cha có thể tiếp nhận : số lượng nút con có khả năng định tuyến mà nút cha có thể tiếp nhận. Số lượng tăng đồng nghĩa với năng lực cần thiết của nút cha để xử lí định tuyến sẽ giảm đi.
Hình 3. 31: Độ sâu của mạng trong mơ hình Cây phân cấp [4, tr 87]
Các tham số chính cần thiết để thiết lập định tuyến ZBR bao gồm:
Lm : độ sâu lớn nhất của mạng.
Cm: số nút con lớn nhất mà nút cha có thể nhận.
Rm : số nút con có thể định tuyến lớn nhất mà nút cha có thể chọn .
d : độ sâu của một nút trong mạng.
Ở mỗi độ sâu của mạng, tham số Cskip(d) được định nghĩa với công thức :
Việc đánh địa chỉ bắt đầu tính từ nút gốc ZC (độ sâu d =0), các nút sẽ có địa chỉ là các số nguyên và cách đánh địa chỉ ở nút có khả năng định tuyến (ZR) khác với nút khơng có khả năng định tuyến (ZC). Địa chỉ ở các nút có khả năng định tuyến được tính cách nhau theo giá trị Cskip của nút cha, cịn các nút khơng có khả năng định tuyến (nút lá) được tính theo cơng thức : Địa chỉ nút thứ lá n = địa chỉ nút cha +
Giá trị Cskip(d) sẽ hữu ích khi được gói tin được gửi qua nút là gói tin chuyển tiếp (forward packet). Các thiết bị chuyển tiếp cần được biết liệu thiết bị đích có phải hậu duệ của thiết bị chuyển tiếp hay khơng (nghĩa là thiết bị đích có nằm trong nhánh của thiết bị chuyển tiếp hay không). Nếu thiết bị chuyển tiếp ở độ sâu d và có địa chỉ là A, thiết bị đích có địa chỉ là D nếu là hậu duệ của thiết bị chuyển tiếp thì biểu thức sau sẽ đúng A < D < A + Cskip(d-1).
Sau khi nhận ra thiết bị đích là hậu duệ của nút chuyển tiếp, bước tiếp theo là tính tốn địa chỉ của các chặng tiếp theo. Nếu thiết bị đích là một trong các nút con, địa chỉ của chặng tiếp theo đơn giản sẽ là địa chỉ đích. Nếu đích đến khơng phải là nút con nhưng là hậu duệ trong nhánh cây, công thức địa chỉ chặng tiếp theo sẽ được tính theo cơng thức :
Hàm int() sẽ trả lại giá trị nguyên sau giá trị của biểu thức được tính trong ngoặc. Ví dụ một mạng có cấu trúc cây phân cấp như hình vẽ 3.32, các giá trị sẽ được tính tốn như sau:
Hình 3. 32: Ví dụ về mạng cây phân cấp đƣợc đánh địa chỉ [4, tr88]
Các giá trị Lm=3, Cm=Rm=2, d = 0,1,2,3.
Nếu nút gốc có địa chỉ Addr=0, nút X có địa chỉ là Addr(X) = 1 (bắt đầu đánh địa chỉ) thì nút Y có địa chỉ cách nút X một khoảng Cskip(0) =7. Vậy nút Y được đánh địa chỉ là Addr(Y) = 1+7 = 8.
Khi Cskip(3)=0, điều đó có nghĩa là thiết bị ở độ sâu này là cấp cuối cùng, khơng có nút con nào nữa, vì vậy, bất kì thiết bị nào ở cấp thứ 3 đều có thể hoạt động như ZED. Ví dụ như trên hình 3.32, hai nút mạng gắn với thiết bị Z sẽ được đánh địa chỉ lần lượt như sau:
Nút 1 có địa chỉ = 9 + 0x2+1 = 10. Nút 2 có địa chỉ = 9 + 0x2+1 = 11.
Chúng ta cũng có thể nhìn được sự hữu ích của Cskip khi xét trường hợp nút 8 muốn tìm nút 11 có phải hậu duệ của nó, nó sẽ xét theo cơng thức 8<11<8+7, vậy là 11 sẽ là hậu duệ trong nhánh của nó.
Khi thiết bị Y hoạt động như một thiết bị định tuyến và muốn chuyển tiếp gói tin tới thiết bị đích là nút 11, địa chỉ tiếp theo của nó chuyển gói tin sẽ là nút 9 với cơng thức : địa chỉ chặng tiếp theo = 8 + 1 + int ( (11-(8+1) / 3)) x 3 = 9.
Thiết bị nguồn là thiết bị khởi động việc truyền dẫn. Trong mơ hình mạng cây phân cấp, một thiết bị sẽ chuyển tiếp gói tin chỉ khi nó nhận ra một con đường hợp lệ với