Như đã giới thiệu, phần mềm mô phỏng NS-2 là sự kết hợp của hai thành phần được viết trên hai ngôn ngữ là C++ và Otcl. Để có thể cài đặt được kỹ thuật này trong NS-2, một số công việc chính đã được thực hiện như sau:
(1). Thiết kế và cài đặt một lớp agent mới (FloodAgent) thừa kế từ lớp Agent đã có sẵn trong NS-2. Mã cài đặt (flood.h và flood.cc) được đặt trong thư mục ~/ns- 2.29/flood. Hai phương thức chủ yếu cần quan tâm là recv(packet*, handler*) (nhận và xử lý gói tin) và sentBroadcastPacket(packet*) (gửi gói tin broadcast).
(2). Cài đặt hai phương thức trong flood.cc:
sentBroadcastPacket(packet*): phải gán địa chỉ đích là IP_BROADCAST. recv(packet*, handler*): việc xử lý gói tin broadcast nhận được sẽ được cài đặt theo thuật toán sau:
pkt = getPacket(); //Thu nhận gói tin pkt;
If (received(pkt)) //Nếu không phải lần đầu tiên nhận được pkt
{
free(pkt); //Hủy bỏ gói tin;
return; //Kết thúc phương thức;
}
//Nếu là lần đầu tiên nhận được gói tin pkt
//Ghi nhận ID của gói tin dùng để kiểm tra các gói tin nhận được //tiếp theo có phải là lần đầu tiên không
savePacket(pkt);
If (isFloodingPacket(pkt)) //Nếu là gói tin broadcast {
randP = random(); //Khởi tạo biến ngẫu nhiên xác suất randP;
If (randP ≥ fP)
{ //fP là giá trị xác suất ngưỡng dùng để broadcast
sentBroadcastPacket(pkt); }
Else //Không gửi gói tin {
free(pkt); //Hủy gói tin
return; //Kết thúc phương thức
} }
(3). Viết script mô phỏng bằng Otcl (flood.tcl) để: - Khởi tạo hình trạng mạng
- Tạo và cấu hình các node sử dụng lớp FloodAgent vừa xây dựng. - Khởi tạo vị trí và tốc độ di động của các node.
- Lập lịch broadcast gói tin từ node nguồn. - Khai báo tệp lưu vết kết quả mô phỏng.
Các cài đặt trên mã C++ được biên dịch sang dạng object (flood.o) để NS-2 có thể sử dụng được trong quá trình mô phỏng.