Cahing trong quá trình chuyển giao có nghĩa là lƣu lại mô hình mạng và thông tin các AP nhƣ địa chỉ MAC, số kênh, thông tin chứng thực, ... để cung cấp truy cập nhanh cho STA với các thông tin cần thiết trong quá trình chuyển giao. Khi bộ nhớ đệm đƣợc sử dụng trong chuyển giao nó làm giảm tổng thời gian trễ chuyển giao. Bộ nhớ đệm có thể đƣợc lƣu trong 3 vị trí (Phía server, AP và STA). Khi bộ nhớ đệm đƣợc lƣu tại phía server thì nó đƣợc gọi là Tập trung (Centralized) và server sẽ chịu trách nhiệm cung cấp thông tin cấu trúc mạng cho STA. Tuy nhiên, khi server xảy ra sự cố thì STA không thể nhận bất kì thông tin nào từ nó và STA nên sử dụng phƣơng pháp chuyển giao nhƣ đã quy định. Nếu bộ nhớ đệm đƣợc lƣu tại phía các AP thì nó đƣợc gọi là Phân tán (Distributed), bởi vì thông tin về cấu trúc mạng đƣợc phân tán về phái tất cả các AP cấu thành ra mạng. Bộ nhớ đệm phân tán sẽ giảm nguy cơ xảy ra lỗi tại một điểm và sụp đổ hệ thống mạng. Có hai loại để lƣu lại thông tin các AP hàng xóm.
- Cố định (Static) - Thay đổi (Dynamic)
Lƣu thông tin cố định về hàng xóm nghĩa là thông tin về cấu trúc mạng đã đƣợc tạo ra một lần và không thay đổi trong suốt quá trình hoạt động. Tuy nhiên, cung cấp vị trí hàng xóm cố định trong mạng WLAN là không dễ dàng bởi vì mối quan hệ giữa các AP không cố định. Sự bất ổn của vùng phủ sóng tín hiệu do các rào cản khác nhau nhƣ sự nhiễu, tƣờng, đồ nội thất và các đối tƣợng di chuyển. Nhƣ vậy lƣu thông tin hàng xóm cố định không hỗ trợ đƣợc các mạng mà có tính thay đổi theo thời gian.
Lƣu thông tin thay đổi về hàng xóm có nghĩa là thông tin cấu trúc liên kết của mạng đƣợc tạo ra và có thể đƣợc cập nhật trong các hoạt động theo những thay đổi hay xảy ra hoặc lỗi trong cấu trúc liên kết mạng. Bộ nhớ đệm động cũng cấp tốt hơn cho di động.
Phía AP:
Để giảm độ trễ trong giai đoạn Tìm kiếm, STA có thể gửi địa chỉ IP và số kênh của AP hiện tại vào trong yêu cầu thăm dò (Probe Request) trong suốt giai đoạn Tìm kiếm. STA gửi yêu cầu thăm dò sau đó chuyển tới kênh khác mà không cần đợi phản hồi. Mục đích của phƣơng pháp này là sử dụng thông tin đƣợc gửi từ STA trong yêu cầu thăm dò (địa chỉ AP hiện tại và số kênh) và lƣu nó trong một bảng các hàng xóm (Neighbors Table) ở tất cả các AP đã nhận yêu cầu thăm dò. Trong đó, thông tin các AP hàng xóm bao gồm: BSSID, khoảng cách frame dẫn đƣờng (Beacon), tốc độ cho phép, số kênh, ... đƣợc truyền đi từ các AP nhận yêu
62 cầu thăm dò tới AP mà đã đƣợc liên kết bằng cách sử dụng gói tin câp nhật các hàng xóm (Neighbors Update Packet) thông qua giao thức IAPP, bảng 2-3
Bảng 2- 3: Phần thân gói tin cập nhật hàng xóm
STT Thông tin
1 BSSID (AP MAC) 2 SSID
3 Số kênh (Channel munber)
4 Khoảng cách frame dẫn đƣờng (Beacon interval) 5 Tốc độ dữ liệu hỗ trợ (Supported data rate)
Để chắc chắn rằng chỉ có các AP hàng xóm đang phản hồi gói lại thăm dò của STA với một gói tin cập nhật hàng xóm thì có một ngƣỡng (Threshold) đã đƣợc thêm vào các AP đó. Độ mạnh của tín hiệu nhận (RSS) phải lớn hơn so với ngƣỡng đặc biệt để cho phép AP phản hồi và gửi thông tin của mình tới AP mà đã liên kết với STA. Hình 2-36 mô tả quá trình này:
Hình 2- 36: Sơ đồ AP nhận yêu cầu thăm dò từ STA
Mỗi khi AP mà đã đƣợc liên kết nhận gói tin từ các AP khác, nó kiểm tra xem thông tin AP đó đã tồn tại trong bảng các hàng xóm của mình hay chƣa. Nếu đã tồn tại thì không có gì đƣợc thay đổ, nếu chƣa tồn tại thì AP mà đã đƣợc liên kết sẽ lƣu thông tin của các AP nhận đƣợc vào bảng hàng xóm. Hình 2-37 mô tả AP nhận gói tin cập nhật các hàng xóm thông qua giao thức IAPP:
63
Hình 2- 37: AP nhận gói tin cập nhật hàng xóm thông qua giao thức IAPP.
AP mà đã đƣợc liên kết copy nội dung của bảng hàng xóm của mình vào gói beacon và gửi nó tới STA.
Phía STA:
Khi STA nhận đƣợc một frame dẫn đƣờng với một bảng thông tin các hàng xóm lƣu trong đó và bảng đó đƣợc xem nhƣ là bảng hàng xóm của STA. Khi STA di chuyển ra xa AP đã kết nối và một chuyển giao đƣợc xem là cần thiết, STA sử dụng bảng hàng xóm của STA để chứng thực ngay lập tức với AP trong bảng đầu tiên đã sẵn sàng mà không phải Tìm kiếm. Nếu AP đầu tiên không phản hồi yêu cầu chứng thực từ STA có nghĩa là nó không sẵn sàng. Tiếp đó, STA thử chứng thực với AP thứ hai trong bảng hàng xóm. Hình 2-38 trình bày sơ đồ STA kết nối tới AP.
64
Hình 2- 38: Sơ đồ STA kết nối với AP mới
Tuy nhiên, nếu STA không thể chứng thực đƣợc với bất kì AP nào trong bảng thì STA sẽ tiến hành quá trình Tìm kiếm đầy đủ (theo chuẩn IEEE 802.11 quy định).
65
CHƢƠNG 3: NỘI DUNG THỰC HIỆN 3.1. Khái quát về Omnet++ và Inet framework
3.1.1. Giới thiệu về Omnet++ và Inet framework
Omnet++ và Inet Framework là gì?
OMNeT++ (Objective Modular Network Testbed in C++) là một ứng dụng cung cấp cho ngƣời sử dụng môi trƣờng để tiến hành mô phỏng hoạt động của mạng. Mục đích chính của ứng dụng là mô phỏng hoạt động thông tin mạng, tuy nhiên do tính phổ cập và linh hoạt của nó, OMNeT++ còn đƣợc sử dụng trong nhiều lĩnh vực khác nhƣ mô phỏng các hệ thống thông tin phức tạp, các mạng kiểu hàng đợi (Queueing Networks) hay các kiến trúc phần cứng, ...
OMNeT++ cung cấp sẵn các thành phần tƣơng ứng với các mô hình thực tế. Các thành phần này (còn đƣợc gọi là các module) đƣợc lập trình theo ngôn ngữ C++, sau đó đƣợc tập hợp lại thành những thành phần hay những mô hình lớn hơn bằng một ngôn ngữ bậc cao (NED). OMNeT++ hỗ trợ giao diện đồ hoạ, tƣơng ứng với các mô hình cấu trúc của nó đồng thời phần nhân mô phỏng (Simulation Kernel) và các module của OMNeT++ cũng rất dễ dàng nhúng vào trong các ứng dụng khác.
INET Framework là một gói mã nguồn mở mô phỏng truyền thông mạng trên môi trƣờng mô phỏng OMNeT++. INET Framework chứa nhiều mô hình cho giao thức ở mạng có dây và không dây, bao gồm UDP, TCP, SCTP, IP, IPv6, Ethernet, PPP, 802.11, MPLS, OSPF và nhiều thứ khác.
Các thành phần chính của Omnet++
- Thƣ viện phần nhân mô phỏng (Simulation Kernel)
- Trình biên dịch cho ngôn ngữ mô tả hình trạng (Topology Description Language)
- NED (nedc)
- Trình biên tập đồ hoạ (Graphical Network Editor) cho các file NED (GNED)
- Giao diện đồ hoạ thực hiện mô phỏng, các liên kết bên trong các file thực hiện mô phỏng (Tkenv)
- Giao diện dòng lệnh thực hiện mô phỏng (Cmdenv)
- Công cụ (giao diện đồ hoạ) vẽ đồ thị kết quả vector ở đầu ra (Plove) - Công cụ (giao diện đồ hoạ) mô tả kết quả vô hƣớng ở đầu ra (Scalars) - Công cụ tài liệu hoá các mô hình
- Các tiện ích khác
- Các tài liệu hƣớng dẫn, các ví dụ mô phỏng...
66 OMNET++ là một công cụ mô phỏng các hoạt động mạng bằng các module đƣợc thiết kế hƣớng đối tƣợng. OMNET++ thƣờng đƣợc sử dụng trong các ứng dụng chủ yếu nhƣ:
- Mô hình hoạt động của các mạng thông tin - Mô hình giao thức
- Mô hình hóa các mạng kiểu hàng đợi
- Mô hình hóa các hệ thống đa bộ vi sử lý (Multiprocesser) hoặc các hệ thống phần cứng theo mô hình phân tán khác.
- Đánh giá kiến trúc phần cứng
- Đánh giá hiệu quả hoạt động của các hệ thống phức tạp
Mô hình trong Omnet++ và Inet Framework
Một mô hình trong OMNET++ bao gồm các module lồng nhau có cấu trúc phân cấp. Độ sâu của các module lồng nhau là không giới hạn, điều này cho phép ngƣời sử dụng có thể biểu diễn các cấu trúc logic của các hệ thống trong thực tế bằng các cấu trúc mô hình. Các module trao đổi thông tin với nhau thông qua việc gửi các message. Các message này có thể có cấu trúc phức tạp tuỳ ý. Các module có thể gửi các message này theo hai cách, một là gửi trực tiếp tới địa chỉ nhận, hai là gửi đi theo một đƣờng dẫn đƣợc định sẵn, thông qua các cổng và các kết nối.
Các module có thể có các tham số của riêng nó. Các tham số này có thể đƣợc sử dụng để chỉnh sửa các thuộc tính của module và để biểu diễn cho topology của mô hình. Các module ở mức thấp nhất trong cấu trúc phân cấp đóng gói các thuộc tính. Các module này đƣợc coi là các module đơn giản và chúng đƣợc lập trình trong ngôn ngữ C++ bằng cách sử dụng các thƣ viện mô phỏng.
3.1.2. Tổng quan về Omnet++
a. Khái niệm mô hình hóa
OMNeT++ cung cấp cho ngƣời sử dụng những công cụ hiệu quả để mô tả c ấ u trúc của các hệ thống thực tế.
Các module lồng nhau có cấu trúc phân cấp
Các module là các đối tƣợng cụ thể của các kiểu module Các module trao đổi thông tin bằng các message qua các kênh Các tham số của module linh hoạt
Ngôn ngữ mô tả topology
b. Cấu trúc phân cấp của các module
Một mô hình trong OMNeT++ chứa các module lồng nhau có cấu trúc phân cấp, trao đổi thông tin với nhau bằng cách gửi các message. Mỗi mô hình này thƣờng biểu diễn cho một hệ thống mạng. Module mức cao nhất trong cấu trúc phân cấp đƣợc gọi là module hệ thống. Module này có thể chứa các module con, các
67 module con cũng có thể chứa các module con của riêng nó. Độ sâu phân cấp đối với các module là không giới hạn, điều này cho phép ngƣời sử dụng có thể dễ dàng biểu diễn một cấu trúc logic của một hệ thống trong thực tế bằng cấu trúc phân cấp của OMNeT++.
Cấu trúc của mô hình đƣợc mô tả bằng ngôn ngữ NED của OMNeT++
Hình 3- 1 Cấu trúc phân cấp của các module
Các module có thể chứa nhiều module con và đƣợc gọi là module kết hợp. Các module đơn giản là các module có cấp thấp nhất trong cấu trúc phân cấp. Các module đơn giản chứa các thuật toán của mô hình. Ngƣời sử dụng triển khai các module đơn giản bằng ngôn ngữ C++, sử dụng các thƣ viện mô phỏng của OMNeT++.
c. Kiểu module
Tất cả các module dù là đơn giản hay phức tạp đều là các đối tƣợng cụ thể của các kiểu module. Trong khi mô tả các mô hình, ngƣời sử dụng định nghĩa ra các kiểu module; các đối tƣợng cụ thể của các kiểu module này đƣợc sử dụng nhƣ các thành phần của các kiểu module phức tạp hơn. Cuối cùng, ngƣời sử dụng tạo module hệ thống nhƣ một đối tƣợng cụ thể của kiểu module đã đƣợc định nghĩa trƣớc đó, tất cả các module của mạng đều là module con (hoặc là con của module con) của module hệ thống.
Khi một kiểu module đƣợc sử dụng nhƣ một khối dựng sẵn (Building Block), sẽ không thể phân biệt đó là một module đơn giản hay phức tạp. Điều này cho phép ngƣời sử dụng có thể tách các module đơn giản ra thành nhiều module đơn giản đƣợc nhúng trong một module kết hợp và ngƣợc lại có thể tập hợp các chức năng của một module kết hợp trong một module đơn giản mà không ảnh hƣởng gì đến các kiểu module đã đƣợc ngƣời sử dụng định nghĩa.
Kiểu module có thể đƣợc lƣu trữ trong một file riêng rẽ. Điều này cho phép ngƣời sử dụng có thể nhóm các kiểu module lại và tạo ra một thƣ viện thành phần
68
d. Thông điệp, cổng, liên kết
Các module trao đổi thông tin bằng việc gửi các thông điệp (Message). Trong thực tế, message có dạng khung (Frame) hoặc là các gói tin (Packet) đƣợc truyền đi trong mạng. Các message có thể có cấu trúc phức tạp tuỳ ý. Các module đơn giản có thể gửi các message đi một cách trực tiếp đến vị trí nhận hoặc gửi đi theo một đƣờng dẫn định sẵn thông qua các cổng và các liên kết.
“Thời gian mô phỏng địa phƣơng” (Local Simulation Time) của một module tăng lên khi module nhận đƣợc một message. Message có thể đến từ một module khác hoặc đến từ cùng một module (Message của chính bản thân module - self- message đƣợc dùng để thực hiện bộ định thời).
Cổng (Gate) là các giao tiếp vào ra của module. Message đƣợc gửi đi qua các cổng ra và đƣợc nhận vào thông qua các cổng vào.
Mỗi kết nối (Connection) hay còn gọi là liên kết (Link) đƣợc tạo bên trong một mức đơn trong cấu trúc phân cấp của các module: bên trong một module kết hợp, một kết nối có thể đƣợc tạo ra giữa các cổng tƣơng ứng của hai module con hoặc giữa cổng của module con với cổng của module kết hợp.
Hình 3- 2: Các kiểu kết nối giữa module cha và module con
Tƣơng ứng với cấu trúc phân cấp của một mô hình, các message thƣờng di chuyển qua một loạt các kết nối với điểm bắt đầu và kết thúc là các module đơn giản. Tập các kết nối đi từ một module đơn giản và đến một module đơn giản đƣợc gọi là route. Các module kết hợp hoạt động giống nhƣ các “cardboard box” trong mô hình, “trong suốt” trong việc chuyển tiếp các message giữa các thành phần bên trong và thế giới bên ngoài.
e. Mô hình truyền gói tin
Một kết nối có thể có ba tham số đặc trƣng. Những tham số này rất thuận tiện cho các mô hình mô phỏng mạng thông tin nhƣng không hữu dụng lắm cho các kiểu mô hình khác. Ba tham số này bao gồm:
Độ trễ đƣờng truyền (Propagation Delay) tính bằng s – giây. Tỉ số lỗi bit, đƣợc tính bằng số lỗi/bit.
69 Các tham số này là tuỳ chọn. Giá trị của các tham số này là khác nhau trên từng kết nối, phụ thuộc vào kiểu của liên kết (hay còn gọi là kiểu của kênh truyền – Channel Type).
Độ trễ đƣờng truyền là tổng thời gian đến của message bị trễ đi khi truyền qua kênh. Tỉ số lỗi bit ảnh hƣởng đến quá trình truyền message qua kênh. Tỉ số này là xác suất các bit bị truyền sai. Do đó xác suất để một message độ dài n bit truyền đi chính xác là:
P(message gửi đi đƣợc nhận chính xác) = (1 - ber)n trong đó ber là tỉ số lỗi bit và n là số bit của message.
Các message truyền đi đều có một cờ lỗi, cờ này sẽ đƣợc thiết lập khi việc truyền message có lỗi.
Tỉ số dữ liệu đƣợc tính theo đơn vị bit/s, và nó đƣợc sử dụng để tính thời gian để truyền một gói tin. Khi tỉ số này đƣợc sử dụng, quá trình gửi message đi trong mô hình sẽ tƣơng ứng với việc truyền bit đầu tiên và message đƣợc tính là đến nơi sau khi bên nhận đã nhận đƣợc bit cuối cùng.
Hình 3- 3: Mô hình truyền gói tin f. Tham số
Các module có thể các tham số.Các tham số này có thể đƣợc đặt giá trị trong các file NED hoặc các file cấu hình omnetpp.ini.
Các tham số này có thể đƣợc dùng để thay đổi các thuộc tính của các module đơn giản hoặc dùng để biểu diễn cho topology của mô hình.
Các tham số có thể có kiểu là chuỗi, số học, giá trị logic hoặc cũng có thể chứa cây dữ liệu XML (XML Data Tree). Các biến kiểu số trong các biểu thức có thể
70 nhận giá trị từ các tham số khác, gọi hàm, sử dụng các biến ngẫu nhiên từ các nguồn phân tán hoặc nhận giá trị trực tiếp đƣợc nhập vào bởi ngƣời sử dụng.
Các tham số có kiểu số có thể đƣợc dùng để cấu hình topology rất dễ dàng. Nằm trong các module kết hợp, các tham số này có thể đƣợc dùng để chỉ ra số module con, số cổng giao tiếp và cách các kết nối nội bộ đƣợc tạo ra.
g. Phương pháp mô tả topology
Ngƣời sử dụng dùng ngôn ngữ NED (Network Description) để mô tả cấu trúc của các mô hình
3.1.3. Lập trình thuật toán
Các module đơn giản có thể chứa các thuật toán nhƣ các hàm của C++. Sự