1. Trang chủ
  2. » Luận Văn - Báo Cáo

Mạng hàng đợi

19 711 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 854,32 KB

Nội dung

Mạng hàng đợi

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Viện Điện Tử Viễn Thông

BÀI TẬP LỚN

Đề tài :Mạng hàng đợi

Giảng viên hướng dẫn: TS.Trần Thị Ngọc Lan

Nhóm : 08

Hà nội, tháng 12 năm 2014

Trang 2

Mục lục

Trang

Chương I : Nghiên cứu sơ bộ 1.Giới thiệu

2.Tìm hiểu Omnet++ 2.1 Omnet++ là gì ?

2.2 Các thành phần chính của OMNET++

2.3 Ứng dụng

2.4 Mô hình trong OMNET++

2.5 Cấu trúc liên kết của một chương trình mô phỏng

3.Kế hoạch làm việc

Chương II : Phân tích hệ thống Chương III : Thiết kế hệ thống

1. Mô phỏng

2. Một số hình ảnh mô phỏng

3. Xử lí kết quả mô phỏng

4. Tính số lượng gói đi được đến đích

5. Lựa chọn tốc độ phục vụ µ nhỏ nhất để số gói truyền được đến đích là lớn nhất

Chương IV: Kết luận Tài Liệu Tham Khảo

Trang 3

Chương I : Nghiên cứu sơ bộ

1.Giới thiệu

Trong môn Cơ sở truyền số liệu , chúng em đã được làm quen với phương pháp đánh giá hoạt động của một hệ thống thông tin bằng phương pháp phân tích toán học, đặc biệt là các mô hình liên quan đến hệ thống hàng đợi đơn, mạng hàng đợi Trong phần bài tập lớn này, chúng em được làm quen với một phương pháp khác

để đánh giá hiệu năng , đó là phương pháp mô phỏng Công cụ mô phỏng được sử dụng ở đây là : công cụ mô phỏng OMNET++ - công cụ mô phỏng mạng thông dụng nhất hiện nay

2 Tìm hiểu về OMNET++

2.1 OMNET++ là gì ?

OMNeT++ là viết tắt của cụm từ Objective Modular Network Testbed in C++ OMNeT++ 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 mạng thông tin, 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

2.2 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)

Trang 4

• 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

2.3 Ứng dụng

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 hoá các mạng kiểu hàng đợi

• Mô hình hoá các hệ thống đa bộ vi xử lý (multiprocesser) hoặc các hệ thống phần cứng theo mô hình phân tán khác (distributed hardware systems)

• Đá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

2.4 Mô hình trong OMNET++

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ủ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 (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

Trang 5

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

2.5 Cấu trúc liên kết của một chương trình mô phỏng

Trang 6

3 Kế hoạch làm việc

Sau khi đánh giá sơ bộ về thực trạng, yêu cầu đề ra, khả năng nhóm phát triển cũng như quá trình vận hành dự án có thể được phát triển theo trình tự:

Chương II : Phân tích hệ thống

Hệ thống gồm :

Mạng hàng đợi bao gồm 2 hàng đợi Q1 μ1= 80 (gói/s) và Q2 μ2= 50 (gói/s) Nguồn phát tuân theo phân bố Poisson với tham số λ=30 (gói/s)

Yêu cầu :

1 Hãy chạy kịch bản mô phỏng trên cho khoảng thời gian 5s và 200s Tính toán số lượng gói TB, Trễ trung bình trong mạng hàng đợi So sánh với kết quả mô phỏng

2 Giả sử hàng đợi 1 có chiều dài hàng đợi K =2 các hàng đợi khác vần có độ dài bằng vô cùng Các thông số khác giữ nguyên Hãy tính toán các tham số của hàng

đợi như: N, T và Nq, Tq của từng hàng đợi và tốc độ gói đến đích So sánh với kết

quảmô phỏng trong thời gian 200s

Trang 7

3 Giả sử hàng đợi 2 có chiều dài hàng đợi K =0 các hàng đợi khác vần có độ dài bằng vô cùng Các thông số khác giữ nguyên Hãy tính toán các tham số của hàng

đợi như: N, T và Nq, Tq của từng hàng đợi và tốc độ gói đến Q1 và Q2 So sánh

với kết quả mô phỏng trong thời gian 200s

Chương III : Thiết kế hệ thống

1 Mô phỏng :

Các bước tiến hành :

B1 : Chạy chương trình Omnet++ Tạo “new omnet++ project” , đặt tên cho

project mới vừa tạo.

B2 : Add thư viện “ queueinglib” vào project vừa tạo bằng cách: chuột phải

vào project properties project references queueinglib ok

B3 : Tạo file NED ( file này dùng để mô tả mạng )

B4 : Design Trên giao diện của file NED vừa tạo  “Creat network type”.

Sau đó thiết kế mạng hàng đợi theo yêu cầu bài : 2 hàng đợi (Q1, Q2).Ở đây ta

còn thêm nguồn (source)và đích (sink) và delay(delay) trong mô phỏng, sau

đó kết nối chúng lại với nhau.

B5 : Tạo file omnetpp.ini (file cấu hình - các tham số được gán giá trị từ file

này) Chọn network tương ứng ở bước này

B6 : Trong file omnetpp.ini vừa tạo chọn mục “ Parameters“  add các tham

số thời gian như thời gian phục vụ , thời gian đến, số gói công việc Cài đặt

thời gian chạy mô phỏng thì vào General simulation time limit

B7 : Vào Run run configurations new_configuration

B8: Tạo file anf Sau đó vào Results kéo thả 2 file ( sca và vec ) Xem các

thông số thu được.

B9 : Chạy mô phỏng.

Trang 8

2 Một số hình ảnh mô phỏng :

2.1.Tạo file ned để mô tả cấu trúc mạng hàng đợi:

Code :

[General]

network = manghangdoi

sim-time-limit = 200s

**.source.interArrivalTime = exponential(1s/20)

**.source.stopTime = 200s

*.delay.delay = 1s/1000000

*.source.startTime = 0s

*.Q2.serviceTime = exponential(1s/50)

*.Q2.tyle = 1/2

*.Q1.serviceTime = exponential(1s/80)

*.Q1.tyle = 1/4

Code hàng đợi thay đổi :

//

// This file is part of an OMNeT++/OMNEST simulation example //

// Copyright (C) 2006-2008 OpenSim Ltd.

//

// This file is distributed WITHOUT ANY WARRANTY See the file // `license' for details on this and other legal matters //

Trang 9

#include "Queue.h"

#include "Job.h"

namespace queueing {

Define_Module( Queue );

Queue::Queue()

{

jobServiced = NULL;

endServiceMsg = NULL;

}

Queue::~Queue()

{

delete jobServiced ;

}

void Queue::initialize()

{

droppedSignal = registerSignal( "dropped" );

queueingTimeSignal = registerSignal( "queueingTime" );

queueLengthSignal = registerSignal( "queueLength" );

emit( queueLengthSignal , 0);

busySignal = registerSignal( "busy" );

emit( busySignal , 0);

endServiceMsg = new cMessage( "end-service" );

fifo = par( "fifo" );

capacity = par( "capacity" );

queue setName( "queue" );

}

void Queue::handleMessage(cMessage *msg)

{

if (msg== endServiceMsg )

{

endService( jobServiced );

if ( queue empty())

{

jobServiced = NULL;

emit( busySignal , 0);

}

else

{

jobServiced = getFromQueue();

emit( queueLengthSignal , length());

simtime_t serviceTime = startService( jobServiced ); scheduleAt( simTime()+serviceTime, endServiceMsg ); }

}

else

{

Trang 10

Job *job = check_and_cast< Job *>(msg);

arrival(job);

if (! jobServiced )

{

// processor was idle

jobServiced = job;

emit( busySignal , 1);

simtime_t serviceTime = startService( jobServiced );

scheduleAt( simTime()+serviceTime, endServiceMsg );

}

else

{

// check for container capacity

if ( capacity >=0 && queue length() >= capacity )

{

EV << "Capacity full! Job dropped.\n" ;

if (ev.isGUI()) bubble( "Dropped!" );

emit( droppedSignal , 1);

delete job;

return;

}

queue insert( job );

emit( queueLengthSignal , length());

job->setQueueCount(job->getQueueCount() + 1);

}

}

if (ev.isGUI()) getDisplayString().setTagArg( "i" ,1, ! jobServiced ? "" : "cyan3" ); }

Job *Queue::getFromQueue()

{

Job *job;

if ( fifo )

{

job = ( Job *) queue pop();

}

else

{

job = ( Job *) queue back();

// FIXME this may have bad performance as remove uses linear search

queue remove(job);

}

return job;

}

int Queue::length()

{

return queue length();

}

void Queue::arrival(Job *job)

{

job->setTimestamp();

Trang 11

simtime_t Queue::startService(Job *job)

{

// gather queueing time statistics

simtime_t d = simTime() - job->getTimestamp();

emit( queueingTimeSignal , d);

job->setTotalQueueingTime(job->getTotalQueueingTime() + d);

EV << "Starting service of " << job->getName() << endl; job->setTimestamp();

return par( "serviceTime" ).doubleValue();

}

void Queue::endService(Job *job)

{

EV << "Finishing service of " << job->getName() << endl; simtime_t d = simTime() - job->getTimestamp();

job->setTotalServiceTime(job->getTotalServiceTime() + d); double tl=par( "tyle" );

int test = bernoulli (tl,0);

if (test)

send( jobServiced , "out" ,0);

else send( jobServiced , "out" ,1);

}

void Queue::finish()

{

}

}; //namespace

2.2 Thiết lập các thông số và lựa chọn cấu hình :

Trang 12

Cài đặt các thông số mô phỏng :

2.3 Một số hình ảnh chạy mô phỏng :

Trang 13

2.4 File elog

3 Xử lí kết quả mô phỏng:

3.1.Lý thuyết liên quan:

3.1.1 Lý thuyết mạng hàng đợi :

Một mạng hàng đợi được định nghĩa bằng k nút mạng, mỗi nút mạng i là một hệ thống hàng đợi đơn bao gồm 1 hàng đợi và ci server Các yêu cầu

đi vào hàng đợi tại một số nút xác định và đi ra từ một số nút khác

Điều khiển luồng và kiểm soát tắc nghẽn trong mạng

Sau khi được phục vụ xong ở một nút mạng yêu cầu có thể:

Trang 14

- Rời khỏi nút mạng

- Đi vào nút kế tiếp

- Quay trở lại nút nó đã đi qua trước đó

Giả thiết dòng lưu lượng đi vào nút i tuân theo phân bố Poisson với tham số λ1 Tốc độ phục vụ của server tại nút mạng j tuân theo phân bố Poisson với tham số μj

Xác suất để 1 yêu cầu sau khi rời nút i được gửi tới nút j là rij( gọi là xác

suất định tuyến), xác suất để nó rời khỏi mạng là ri0.

3.1.2 Hàng đợi M/M/1

Lược đồ trạng thái:

Chuỗi Markov của hàng đợi M/M/1.

Tiến trình đến và tiến trình phục vụ có thuộc tính Markov (tiến trình không nhớ, tức trạng thái tiếp theo chỉ phụ thuộc trạng thái hiện tại, nhưng độc lập với việc nó đã có được như thế nào)

- Thời gian giữa hai lần đến và thời gian phục vụ tuân theo phân bố mũ

- Hệ thống có 1 server, dung lượng đệm là vô hạn

- Tốc độ gói đến là λ (gói/s)

- Tốc độ phục vụ là μ (gói/s)

- Mật độ lưu luợng: ρ =

- Số lượng gói trung bình trong hệ thống: N=

- Số luợng gói trung bình trong server: Ns =P(N≥1)= 1-P(N=0) = 1- (1- ρ) = ρ

Trang 15

-Số lượng gói trung bình trong hàng đợi: Nq = N - Ns = -Thời gian trung bình lưu trong hệ thống của mỗi gói: T = =

3.1.3 Hàng đợi M/M/1/K

Lược đồ trạng thái:

Chuối Markov của hàng đợi M/M/1/k

Với số khách hàng là k

Pn=.Po; 0<=n<=k

Pn=

L=-Xác suất khách hang đến hệ thống bị từ chối là Pk

Pk=

Tốc độ đến thực tế λ=λ(1- Pk)

3.2 Tính toán lý thuyết

Tính toán các tham số N, T và Nq, Tq của từng hàng đợi

1/ 1 = + +

2=

Trang 16

1 = = x 20 =

2 = 2 = 2 x 20 = 40

1 = =

2 = =

Hàng đợi Q1:

N1 = = = 2

Trễ TB : T – Ts = - = - = 0,025

Hàng đợi Q2 :

N2 = = = 4

Trễ TB : T – Ts = - = - = 0,08

Số gói trung bình trong hệ thống : N = N1+ N2 = 2+4= 6 Trễ trung bình : 0,025 +0,08 = 0,105

2/ Hàng đợi Q1 có k = 2

xác suất khách hàng đến bị từ chối : Pk =1kx =

Ta có:

1 = + +

x(1-2=

Tính lại 1 = ,2 =

1 =

2 = 0,58

Hàng đợi Q1: N1 = + = 1,015

T1 = = 0,026

Trang 17

Nq1 = N1 = = 0,43

Tq1 = 0,011

Hàng đợi Q2 : N2 = = 1,4

T2 = = 0,048

Nq2 = N2 – Ns2 = 1,4 - = 0,82

Tq2 = T2 – Ts2 = 0,048 – = 0,028

3/ Hàng đợi Q2 có k = 0

Hàng đợi Q2

N= = 0,44

Ta có:

1/ 1 = + +

2= (1-0,44)

1 = 37

Hàng đợi Q1 :

N1 = =

T1 = = 0,023

Nq1 = N1 – Ns1 = 0,86 - = 0,4

Tq1 = T1 – Ts1 = 0,023 – = 0,0105

Câu 1:

Trang 18

Câu 2:

Câu 3

Nhận xét kết quả mô phỏng với lý thuyết

- Dựa vào các số liệu thu được từ mô phỏng và so sánh với lý thuyết, chúng em nhận thấy với thời gian chạy mô phỏng nhỏ thì kết quả sai lệch lớn so với lý thuyết Khi tăng thời gian chạy kịch bản lên, thì kết quả mô phỏng gần với lý thuyết hơn Trong trường hợp này ta xét với thời gian chạy mô phỏng 5s và 200s có kết quả như trên

Đánh giá và kết luận :

Qua số liệu tính toán theo lý thuyết và kết quả mô phỏng, ta nhận thấy:

-Với thời gian mô phỏng 5s thì kết quả mô phỏng có sai số khá nhiều so với lý thuyết

- Với thời gian mô phỏng 200s thì kết quả mô phỏng xấp xỉ với tính toán theo lý thuyết

Trang 19

Chương IV : Kết Luận

Trong môn Cơ sở truyền số liệu , chúng em đã được làm quen với phương pháp đánh giá hoạt động của một hệ thống thông tin bằng phương pháp phân tích toán học, đặc biệt là các mô hình liên quan đến hệ thống hàng đợi đơn, mạng hàng đợi Trong phần bài tập lớn này, chúng em được làm quen với một phương pháp khác để đánh giá hiệu năng , đó

là phương pháp mô phỏng Công cụ mô phỏng được sử dụng ở đây là : công cụ mô phỏng OMNET++ - công cụ mô phỏng mạng thông dụng nhất hiện nay Do hạn chế về mặt thời gian cũng như là kiến thức, bài làm không thể tránh khỏi những thiếu sót, chúng

em mong được sự nhật xét, đánh giá của Cô giáo

Cuối cùng, chúng em xin chân thành cảm ơnCô: TS Trần Thị Ngọc Lan đã tận tình

hướng dẫn chúng em trong bài tập lớn này !

Tài liệu tham khảo

[1] website: http://vntelecom.org/diendan/showthread.php?t=7968

[2] website: http://www.omnetpp.org/home/videos

[3] website: http://www.scribd.com/doc/31770594/Omnet-Tieng-Viet

[4] Sách: Cơ sở mạng thông tin-Viện điện tử viễn thông,ĐHB HN

Ngày đăng: 27/07/2016, 08:36

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w