Phần mềm mô phỏng mạng NS2

Một phần của tài liệu Nghiên cứu và thử nghiệm giao thức định tuyến theo mô hình phân cấp (Trang 59)

4.1.1 Giới thiệu về NS2

NS2 là phần mềm mô phỏng mạng điều khiển sự kiện riêng rẽ hƣớng đối tƣợng,

đƣợc phát triển tại UC Berkely, viết bằng ngôn ngữ C ++ và Otcl. Nó thực hiện giao thức mạng nhƣ TCP và UDP, lƣu lƣợng truy cập mã nguồn hành vi nhƣ FTP, Telnet, Web, CBR, và VBR, cơ chế quản lý hàng đợi nhƣ Tail Drop, RED, định tuyến các thuật toán nhƣ Dijkstra v.v. NS rất hữu ích cho việc mô phỏng mạng diện rộng (WAN) mạng local (LAN) và mạng không dây. Bốn lợi ích lớn nhất của NS2 phải kể đến đầu tiên là: [2][9]

+ Khả năng kiểm tra tính ổn định của các giao thức mạng đang tồn tại. + Khả năng đánh giá các giao thức mạng mới trƣớc khi đƣa vào sử dụng. + Khả năng thực thi những mô hình mạng lớn mà gần nhƣ ta không thể thực thi đƣợc trong thực tế.

+ Khả năng mô phỏng nhiều loại mạng khác nhau.

Cấu trúc của NS-2 bao gồm các thành phần đƣợc chỉ ra trên hình 4.1

Otcl: Bộ thông dịch Tcl với phần mở rộng hƣớng đối tƣợng

Thƣ viê ̣n mô phỏng NS

 Các đối tƣợng Bộ lập lịch sự kiện

 Các đối tƣợng Thành phần mạng

 Các module Trợ giúp thiết lập mạng

Otcl Script Kết quả mô phỏng

Phân tích

Minh họa mạng NAM

Hình 4.1: Mô hình đơn giản của NS

Trong hình 4.1 chức năng của các thành phần đƣợc mô tả nhƣ sau: - OTcl Script Kịch bản OTcl

- Simulation Program Chƣơng trình mô phòng

- OTcl Bộ biên dịch Tcl mở rộng hƣớng đối tƣợng - NS Simulation Library Thƣ viện mô phỏng NS

- Event Scheduler Objects Các đối tƣợng bộ lập lịch sự kiện - Network Component Objects Các đối tƣợng thành phần mạng

- Network Setup Helping Modules Các mô đun trợ giúp thiết lập mạng - Plumbling Modules Các mô đun Plumbling

- Simulation Results Các kết quả mô phỏng

- Analysis Phân tích

- NAM Network Animator Minh họa mạng NAM

Trong hình trên, NS-2 là bộ biên dịch Tcl mở rộng hƣớng đối tƣợng; bao gồm các đối tƣợng bộ lập lịch sự kiện, các đối tƣợng thành phần mạng và các mô đun trợ giúp thiết lập mạng (hay các mô đun Plumbing).

Để sử dụng NS-2, ngƣời dùng lập trình bằng ngôn ngữ kịch bản OTcl. Ngƣời dùng có thể thêm các mã nguồn Otcl vào NS-2 bằng cách viết các lớp đối tƣợng

mới trong OTcl. Những lớp này khi đó sẽ đƣợc biên dịch cùng với mã nguồn gốc. Kịch bản OTcl có thể thực hiện những việc sau:

- Khởi tạo bộ lập lịch sự kiện

- Thiết lập mô hình mạng dùng các đối tƣợng thành phần mạng

- Báo cho nguồn traffic khi nào bắt đầu truyền và ngƣng truyền packet trong bộ lập lịch sự kiện.

Thuật ngữ plumbing đƣợc dùng để chỉ việc thiết lập mạng, vì thiết lập một mạng nghĩa là xây dựng các đƣờng dữ liệu giữa các đối tƣợng mạng bằng cách thiết lập con trỏ “neighbour” cho một đối tƣợng để chỉ đến địa chỉ của đối tƣợng tƣơng ứng. Mô đun plumbing OTcl trong thực tế thực hiện việc trên rất đơn giản. Plumbing làm nên sức mạnh của NS-2.

Trong NS ngoài bộ phận quan trọng là “các đối tƣợng thành phần mạng” còn có thành phần “Bộ lập lịch sự kiện”. Một sự kiện trong NS là một ID của gói tin đƣợc lên lịch và một con trỏ trỏ tới đối tƣợng xử lí sự kiện đó. Một event scheduler theo dõi lịch của tất cả các sự kiện và triệu gọi đối tƣợng thực hiện sự kiện đó vào thời điểm thích hợp. Các đối tƣợng trong mạng trao đổi thông tin với nhau bằng cách gửi và nhận các gói tin. Với mỗi gói tin, các đối tƣợng đều phải mất một khoảng thời gian để xử lí gói tin (độ trễ), các đối tựơng tạo độ trễ bằng cách sử dụng event scheduler. Một dạng thể hiện khác của event scheduler là timer. Ví dụ TCP cần đo thời gian để theo dõi việc truyền gói tin nhằm phục vụ cho việc truyền lại trong trƣờng hợp mất gói tin (gói tin gửi lại vẫn có cùng số hiệu với gói tin trƣớc nhƣng sẽ khác ở NS packet ID). Timer đo thời gian gắn với gói tin và thực hiện hành động liên quan tới gói tin khi đến thời điểm thích hợp, và không mô phỏng độ trễ.

Phụ thuộc vào mục đích mô phỏng hệ thống mạng mà ngƣời dùng sử dụng kịch bản mô phỏng Otcl. Sau khi chạy mô phỏng, kết quả mô phỏng có thể đƣợc lƣu trữ nhƣ file trace (Hình 4.2). Định dạng file trace sẽ đƣợc tải vào trong các ứng dụng khác để thực hiện phân tích:

 File Trace (file.tr) đƣợc dùng cho công cụ lần vết và giám sát mô phỏng XGRAPH hay TRACEGRAPH.

Hình 4.2: Luồng các sự kiện cho file Tcl chạy trong NS

 NAM Visual Simulation Mô phỏng ảo NAM

 Tracing and Monitoring Simulation Mô phỏng lần vết và giám sát

Trong quá trình hoạt động, NS-2 sử dụng các file script đƣợc soạn thảo theo ngôn ngữ Tcl (có phần mở rộng là .tcl) thể thực thi hoạt động của mạng cần mô phỏng. Kết quả thu đƣợc sẽ đƣợc xuất ra file truy vết (trace file, có đuôi là .tr). Mọi sự kiện kết quả của quá trình mô phỏng đều đƣợc ghi lại trong file trace này theo trình tự thời gian. Các kết quả này bao gồm luồng gói tin trao đổi giữa những node mạng và các mốc thời gian liên quan…Ngoài ra quá trình mô phỏng còn đƣợc ghi nhận lại ở trong file có phần mở rộng là .nam hay còn gọi là file Network Animator. Do đó trong bản thân file .nam cũng có chứa các gói tin của NS-2. Mục đích của NS-2 sử dụng file .nam để tạo ra những hình ảnh có thể mô phỏng lại quá trình hoạt động và tƣơng tác của đối tƣợng mạng một cách trực quan và rõ nét hơn. Ví dụ nhƣ cấu hình topology của hệ thống mạng, quá trình trao đổi dữ liệu (phƣơng hƣớng, thứ tự) cũng nhƣ nhiều công cụ phân tích dữ liệu đƣợc NS-2 tích hợp trong NAM module. [9][15]

4.1.2 Các ngôn ngữ lập trình trong NS2

NS-2 là một phần mềm mô phỏng mạng điều khiển sự kiện riêng rẽ hƣớng đối tƣợng, đƣợc viết bằng hai ngôn ngữ là ngôn ngữ lập trình hệ thống C++ và ngôn ngữ kịch bản hƣớng đối tƣợng OTcl. Để có đƣợc hiệu suất cao, NS tách biệt việc xử

TCL file File.tcl NS NAM Visual Simulation Tracing and Monitoring Simulation Out.nam Out.tr

lý và điều khiển dữ liệu. Để giảm thời gian xử lý gói và các sự kiện (không phải thời gian mô phỏng), bộ lập lịch các sự kiện và các thành phần đối tƣợng mạng cơ bản trong phần dữ liệu đƣợc viết và biên dịch sử dụng trình biên dịch C++. Các đối tƣợng đƣợc biên dịch này có thể đƣợc sử dụng bằng trình thông dịch OTcl qua một mối liên kết OTCL, mối liên kết tạo lên sự phù hợp giữa đối tƣợng OTcl cho mỗi đối tƣợng C++ và tạo nên các chức năng, các tham số cấu hình bởi đối tƣợng C++ tƣơng ứng với các hàm thành phần và các biến thành phần của đối tƣợng OTclL. Theo cách đó, các đối tƣợng điều khiển của C++ đƣợc trao cho OTcl. Nó cũng có thể thêm các hàm thành phần và các biến vào C++ đã đƣợc liên kết với đối tƣợng OTcl. Các đối tƣợng trong C++ không cần đƣợc điều khiển trong mô phỏng hoặc đƣợc sử dụng bên trong bởi đối tƣợng khác không đƣợc liên kết tới OTcl. Cũng nhƣ vậy, một đối tƣợng (không phải phần dữ liệu) có thể đƣợc triển khai hoàn toàn bằng OTcl. Đây là lý do để hệ mô phỏng NS-2 đạt hiệu quả. [2][9][15]

NS hỗ trợ cấu trúc lớp kiểu phân cấp trong C++ (đƣợc gọi là cấu trúc lớp biên dịch), và một cấu trúc lớp tƣơng tự trong ngôn ngữ Otcl (gọi là cấu trúc lớp thông dịch). Hai cấu trúc lớp phân cấp này có quan hệ tƣơng đồng với nhau, dƣới góc độ ngƣời sử dụng (không phải ngƣời lập trình phát triển NS), có tƣơng ứng 1-1 giữa lớp trong cấu trúc lớp biên dịch và lớp trong cấu trúc lớp thông dịch. Sơ đồ sau là ví dụ về sự phân cấp và tƣơng đồng trong C++ và Otcl

Hình 4.3: Sự tƣơng đồng giữa C++ và OTcl

Lý do để NS sử dụng hai ngôn ngữ lập trình là do hệ mô phỏng phải thực hiện hai dạng yêu cầu xử lý khác nhau. Một mặt, việc mô phỏng chi tiết các giao thức đòi hỏi một ngôn ngữ lập trình hệ thống có khả năng thao tác hiệu quả với các byte,

C++ OTcl

packet header, và thực hiện những giải thuật với tập dữ liệu lớn. Với những công việc dạng này, tốc độ của thực hiện khi chạy rất quan trọng, và thời gian xử lý quay vòng (chạy mô phỏng, tìm lỗi, gỡ lỗi, dịch lại, chạy lại) kém quan trọng hơn. Mặt khác, khi nghiên cứu mạng, rất cần nhanh chóng thay đổi tham số hay cấu hình, hoặc đƣa ra nhiều kịch bản hoạt động khác nhau. Trong những trƣờng hợp nhƣ vậy, thời gian quay vòng (thay đổi mô hình và chạy lại) quan trọng hơn thời gian cấu hình ban đầu và thời gian chạy. NS thỏa mãn cả hai yêu cầu này với C++ và Otcl. C++ chạy nhanh nhƣng lại chậm khi cần có thay đổi, rất phù hợp cho việc triển khai chi tiết các giao thức. Otcl chạy chậm hơn nhiều, song lại có khả năng thay đổi rất nhanh (và có tính tƣơng tác tốt), có thể thỏa mãn tốt nhu cầu cấu hình hệ thống mô phỏng. NS sử dụng Tclcl (tcl – c linkage) nhƣ một lớp keo gắn kết các đối tƣợng và biến trong hai ngôn ngữ. Mỗi ngôn ngữ đƣợc sử dụng với mục đích riêng. Otcl có thể đƣợc sử dụng:

- Trong việc cấu hình, cài đặt và các công việc thực hiện “một lần” - Chỉnh sửa các đối tƣợng C++ đã có sẵn

Và sử dụng C++ cho:

- Khi làm các công việc đòi hỏi xử lý từng gói tin của luồng dữ liệu - Khi phải thay đổi các hành vi của các lớp C++ đã tồn tại

Có thể hình dung tổ chức của NS qua sơ đồ sau:

Bộ lập lịch sự kiện Tctcl OTcl Tcl NS-2 T hƣ v iê ̣n c ác th àn h p hầ n m ạn g Hình 4.4: Kiến trúc của NS

Sơ đồ kiến trúc của NS thể hiện kiến trúc NS, trong hình 4.4 có thể coi ngƣời dùng nhƣ đang đứng ở góc dƣới bên trái, thiết kế và chạy hệ mô phỏng bằng ngôn

ngữ Tcl và sử dụng các đối tƣợng OTcl trong thƣ viện. Event Scheduler và hầu hết các đối tƣợng Network Component đều đƣợc viết bằng C++, và có thể triệu gọi từ OTcl thông qua giao tiếp Tclcl, cả hệ thống kết hợp lại thành NS.

Sơ đồ mô hình đơn giản của NS cũng chỉ ra , khi kết thúc quá trình mô phỏng, NS có thể sinh ra một hay nhiều file text chứa số liệu chi tiết phục vụ cho việc phân tích quá trình mô phỏng, hoặc cũng có thể là đầu vào cho hệ mô phỏng bằng đồ họa (Network Animator: NAM). Hình dƣới đây sẽ mô tả sự hoạt động của NS thông cua 3 mức (hình 4.5), nhƣ chúng ta thấy có mức kịch bản mô phỏng, mức kịch bản Tcl và cuối cùng là ngôn ngữ C++. Tất cả những công việc của NS đều thông qua các kịch bản của NS để gọi các hàm của C++ ở mức dƣới cùng

Hình 4.5: Sự hoạt động của NS

Trong môi trƣờng Linux hình 4.6 biểu diễn kiến trúc thƣ mục NS2 và NAM. NS2 và NAM đều là các thƣ mục con của ns-allinone-2.xx. NS2 bao gồm các thực thi mô phỏng (bằng mã C++ và mã Otcl), các kịch bản Otcl kiểm tra tính hiệu lực và các kịch bản Otcl minh họa [9][15]

Hình 4.6: Tổ chức thƣ mục NS2

Để chạy một chƣơng trình mô phỏng NS2, theo tổ chức thƣ mục trong hình trên cần chuyển vào thƣ mục NS-2.33, gọi chƣơng trình bằng lệnh ns <tênfile.tcl>

4.1.3 Mã MIT

Trong NS-2 hiện nay để cấu hình cho mạng không dây ta cần thiết lập một vài thông số: đặc tả kênh, radio-propagation, loại anten, loại tầng kết nối, hàng đợi giao tiếp, giao diện mạng, kiểu routing, số lƣợng node mạng, kích thƣớc gói tin lớn nhất trong hàng đợi. Các thông số này đƣợc khai báo trong file ns2.34\tcl\ex\wireless.tcl [11]

Để chạy giao thức LEACH cho mạng cảm biến không dây, hình 4.7 mô tả các file liên quan khi thực hiện chạy mô phỏng trong kiến trúc MIT. [11][15]

Hình 4.7: Kiến trúc MIT

Các thành phần chính trong kiến trúc MIT:

- Wireless.tcl: lƣu trữ các thông số chính của môi trƣờng truyền sóng vô tuyến nhƣ tốc độ kênh truyền, năng lƣợng tổn hao trên kênh truyền...

- uAMPS.tcl: lƣu trữ các thông số vật lý, các thông số giả thiết đầu vào của bài toán mô phỏng nhƣ: số lƣợng, vị trí các nút trong toàn mạng, mức ngƣỡng năng lƣợng để truyền, nhận tín hiệu thành công, kích thƣớc, năng lƣợng ban đầu của gói tin, các thông số của anten...

- ns-leach.tcl: thƣc hiện các chức năng của giao thức LEACH nhƣ chọn nút chủ cụm, phân chia cluster, truyền, nhận các bản tin của các nút.

- start.tcl: lƣu trữ các thông số của quá trình mô phỏng, các thông số này có thể dùng các chƣơng trình đồ họa để hiển thị trực quan thông qua các đồ thị

- Các file Resource Adaptive Node: lƣu trữ các thông số của nút nhƣ: năng lƣợng, trạng thái hoạt động.

Để sử dụng MIT, ngoài các nguồn lực và đối tƣợng có sẵn trong lớp NS2, các nhà phát triển đã thêm một số gói cài đặt, bao gồm: app. [Cc, h], channel.cc, cmu-

trace. [Cc, h], mac.cc, gói. [ cc, h], phy. [cc, h], và wireless-phy, [cc, h]. Thêm vào các tập tin mac-sensor. [cc, h] và mac-Sensor-timers. [Cc, h].

Những tập tin để thực hiện chức năng thích nghi nguồn tài nguyên node, tác nhân, và lớp liên kết nằm trong thƣ mục mit/RCA và bao gồm: ns-ranode.tcl, rcagent. [Cc, h], RCA-ll. [Cc, h], resource. [cc, h], energy. [cc, h].

Các tập tin giao thức định tuyến nằm trong thƣ mục mit/uAMPS và bao gồm: ns-leach.tcl, ns-Leach-c.tcl, ns-mte.tcl, và ns-stats-clus.tcl và ns-pegasis.tcl. Ngoài ra, các tập tin ns-bsapp.tcl, extras.tcl, và stats.tcl chứa các chức năng cần thiết để chạy các giao thức định tuyến. Những tập tin bsagent. [Cc, h] chứa chức năng các trạm cơ sở đại diện.

Để xuất ra các tập tin số liệu thống kê sau khi chạy mô phỏng các giao thức. Trong chƣơng trình mà chúng tôi sử dụng đã khai báo tên thƣ mục trùng với tên của giao thức tƣơng ứng. Thƣ mục cho các tập tin đầu ra số liệu thống kê nhƣ vậy sẽ có tên LEACH, LEACH-C, STAT-CLUS, PEGASIS và MTE. Mỗi lần chạy xong thử nghiệm chúng tôi sao chép lƣu trữ số liệu để phân tích sau. Các tập tin số liệu thống kê trong thƣ mục LEACH dùng để phân tích có tên

 conditions.txt  Distance.x.txt ….  leach.alive  leach.alive.txt  leach.data  leach.data.txt  leach.energy  leach.energy.txt  leach.err  leach.out  leach.tr  TDMAschedule.20.txt  TDMAschedule.40.txt  TDMAschedule.60.txt  ….

Trong các thƣ mục LEACH-C, SAT-CLUS, PEGASIS và MTE chứa các tập tin số liệu có tên tƣơng ứng. Đây chính là cơ sở để chúng tôi thực hiện phân tích đánh giá các giao thức trong mạng cảm biến không dây.

4.2. Mô phỏng các giao thức định tuyến theo mô hình phân cấp và đánh giá giá

Chúng tôi sử dụng phần mềm NS2 để mô phỏng WSN. Chƣơng trình NS2 đã cài đặt các giao thức định tuyến phân cấp nhƣ LEACH, LEACH-C, STAT-CLUS, PEGASIS và giao thức định tuyến phẳng MTE.

Các tham số mạng dùng để thực nghiệm các giao thức định tuyến trên và báo cáo trong luận văn này nhƣ sau

 Nút mạng: 101 (Bao gồm nút BS)

 Kích thƣớc mạng: 100m x 100m, 1000m x 1000m  Địa điểm trạm cơ sở BS: (50, 50), (50, 150),

 Số cụm (cũng là số nút CH): 1, 2, 3, 4, 5, 7, 9, 11  Thời gian mô phỏng: 600s, 800s, 1600s, 3000s  Năng lƣợng khởi tạo của node: 2 J

 Chiều cao ăng ten trên mặt đất: 1,5m  Kích thƣớc dữ liệu: 500byte  Tần số vô tuyến của node: 914MHz

 Băng thông: 1Mbps

 Công suất phát: 0.21818W, 0.063W

 Topo mạng: mit/uAMPS/sims/100nodes.txt  Thời gian cho mỗi vòng: 20s

Trong đó các tham số có một giá trị sẽ không đổi khi thực nghiệm trên các kịch bản khác nhau, các tham số có nhiều giá trị sẽ chọn một giá trị trong từng kịch bản cụ thể.

4.2.1 Thực hiện mô phỏng các giao thức LEACH, LEACH-C, STAT- CLUS và PEGASIS

Một phần của tài liệu Nghiên cứu và thử nghiệm giao thức định tuyến theo mô hình phân cấp (Trang 59)

Tải bản đầy đủ (PDF)

(89 trang)