Báo Cáo Cơ Sở Truyền Số Liệu

33
ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG ---------- BÁO CÁO BÀI TẬP LỚN CƠ SỞ TRUYỀN SỐ LIỆU Bài 2: Đánh giá hiệu năng mạng Ethernet Giảng viên HD: PGS.TS. Nguyễn Hữu Thanh Nhóm sinh viên thực hiện: Nhóm 37 Nguyễn Đức Quý 20112019 Đỗ Trung Thanh 20112269 Hà Nội, 11/2014 1

Transcript of Báo Cáo Cơ Sở Truyền Số Liệu

Page 1: Báo Cáo Cơ Sở Truyền Số Liệu

ĐẠI HỌC BÁCH KHOA HÀ NỘIVIỆN ĐIỆN TỬ - VIỄN THÔNG

----------

BÁO CÁO BÀI TẬP LỚN

CƠ SỞ TRUYỀN SỐ LIỆU

Bài 2: Đánh giá hiệu năng mạng Ethernet

Giảng viên HD: PGS.TS. Nguyễn Hữu Thanh

Nhóm sinh viên thực hiện: Nhóm 37

Nguyễn Đức Quý 20112019Đỗ Trung Thanh 20112269

Hà Nội, 11/2014

1

Page 2: Báo Cáo Cơ Sở Truyền Số Liệu

MỤC LỤC

PHẦN

MỤC LỤC.......................................................................................................................................2PHẦN 1 – PHÂN TÍCH YÊU CẦU BÀI TẬP LỚN......................................................................2

1 .Mục đích bài tập lớn :..............................................................................................................4

2. Tìm hiểu sơlược về mạng Ethernet :........................................................................................4

PHẦN 2 – PHÂN CÔNG CÔNG VIỆC..........................................................................................91.Phân công chung : cả nhóm tìm hiểu và làm quen với công cụ mô phỏng OMNET++ qua các

tài liệu Thầy giáo đã cho..............................................................................................................9

2. Phân công cụ thể thực hiện đề tài :..........................................................................................9

PHẦN 3 -THỰC HIỆN ĐỀ TÀI....................................................................................................10

PHẦN 1 – PHÂN TÍCH YÊU CẦU BÀI TẬP LỚN

2

Page 3: Báo Cáo Cơ Sở Truyền Số Liệu

Mạng Ethernet với tốc độ 10Mbit/s, sử dụng cấu hình kênh truyền bus (coaxial cable).Trễ

truyền dẫn 100ms.Biết rằng card mạng của máy tính đều liên tục có các gói được gửi đến

với tốc độ như nhau λ =200 gói/s,tuân theo phân bố Poisson.Độ dài của gói Ethernet tuân

theo phân bố Poisson với chiều dài trung bình là 1500bytes (hình vẽ).

2.1. Chạy mô phỏng dùng Omnet trong khoảng thời gian 30s.Đánh giá và vẽ đồ thị tổng

dung lượng băng thông chiếm trên bus khi truyền gói b(t) và tốc độ mất gói e(t) (tính

bằng gói/s) khi số máy tính nối mạng là:

• 3 máy

• 5 máy

• 10 máy

Giả thiết mỗi máy x sẽ phát gói đến mộtđích là máy y bất kỳ (do sinh viên tự chọn)

2.2. Lặp lại mô phỏng trên trong trường hợp trễ truyền dẫn là 1s.Có nhận xét gì so với

trường hợp đầu tiên ?

3

Page 4: Báo Cáo Cơ Sở Truyền Số Liệu

2.3. Lặp lại mô phỏng cho 10 máy, trễ truyền dẫn 100ms cho trường hợp độ dài gói thay

đổi. Đánh giá kết quả.

1 .Mục đích bài tập lớn :

Trong môn cơ sở mạng thông tin sinh viên đã 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 toán học, đặc biệt là mô hình liên

quan đến hàng đợi đơn, mạng hàng đợi, cơ sở cho các cơ chế điều khiển luồng và định tuyến

trong mạng. Trong phần bài tập lớn, sinh viên sẽ đượ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.Bài tập lớn này có một số mục đích

sau:

* Kiểm nghiệm các kết quả phân tích, đánh giá hệ thống khi dùng phương pháp

phân tích toán học và phương pháp mô phỏng.

* Làm quen với công cụ mô phỏng OMNET++ – công cụ mô phỏng mạng

thông dụng nhất hiện nay.

* Phát triển kỹ năng làm việc theo nhóm.

* Phát triển kỹ năng làm việc độc lập.

2. Tìm hiểu sơlược về mạng Ethernet :

Ethernet là mạng cục bộ do các công ty Xerox, Intel và Digital equipment xây dựng

và phát triển. Ethernet là mạng thông dụng nhất đối với các mạng nhỏ hiện nay. Ethernet

LAN được xây dựng theo chuẩn 7 lớp trong cấu trúc mạng của ISO, mạng truyền số liệu

Ethernet cho phép đưa vào mạng các loại máy tính khác nhau kể cả máy tính mini. Ethernet

có các đặc tính kỹ thuật chủ yếu sau đây:

• Có cấu trúc dạng tuyến phân đoạn, đường truyền dùng cáp đồng trục, tín hiệu

truyền trên mạng được mã hoá theo kiểu đồng bộ (Manchester), tốc độ truyền dữ liệu là 10

Mb/s.

4

Page 5: Báo Cáo Cơ Sở Truyền Số Liệu

• Chiều dài tối đa của một đoạn cáp tuyến là 500m, các đoạn tuyến này có thể được

kết nối lại bằng cách dùng các bộ chuyển tiếp và khoảng cách lớn nhất cho phép giữa 2 nút

là 2,8 km.

• Sử dụng tín hiệu bǎng tần cơ bản, truy xuất tuyến (bus access) hoặc tuyến token

(token bus), giao thức là CSMA/CD, dữ liệu chuyển đi trong các gói. Gói (packet) thông tin

dùng trong mạng có độ dài từ 64 đến 1518 byte.

2.1. Hệ thống Ethernet

- Ethernet là 1 công nghệ mạng cục bộ (LAN) nhằm chuyển thông tin giữa các máy tính

với tốc độ từ 10 đến 100 triệu bít một giây (Mbps) . Hiện thời công nghệ Ethernet thường

được sử dụng nhất là công nghệ sử dụng cáp đôi xoắn 10-Mbps.

- Công nghệ truyền thông 10-Mbps sử dụng hệ thống cáp đồng trục cỡ lớn , hoặc cáp đôi,

cáp sợi quang . Tốc độ chuẩn cho hệ thống Ethernet hiện nay là 100-Mbps .

2.2.Các thành phần của Ethernet

Hệ thống Ethernet bao gồm 3 thành phần cơ bản :

• Hệ thống trung gian truyền tín hiệu Ethernet giữa các máy tính.

• Các nhóm thiết bị trung gian đóng vai trò giao diện Ethernet làm cho nhiều máy

tính có thể kết nối tới cùng 1 kênh Ethernet.

• Các khung Ethernet đóng vai trò làm các bit chuẩn để luân chuyển dữ liệu trên

Ethernet.

Phần tiếp sau đây sẽ miêu tả quy tắc thiết lập cho các thành phần đầu tiên, các mảng truyền

thông vật lí , thiết lập quy tắc truy cập trung gian cho Ethernet và các khung Ethernet.

2.3.Hoạt động của Ethernet

Mỗi máy Ethernet, hay còn gọi là máy trạm , hoạt động độc lập với tất cả các trạm khác trên

mạng , không có một trạm điều khiển trung tâm.Mọi trạm đều kết nối với Ethernet thông qua

5

Page 6: Báo Cáo Cơ Sở Truyền Số Liệu

một đường truyền tín hiệu chung còn gọi là đuờng trung gian. Tín hiệu Ethernet được gửi

theo chuỗi , từng bit một , qua đường trung gian tới tất cả các trạm thành viên. Để gửi dữ

liệu trước tiên trạm cần lắng nghe xem kênh có rỗi không , nếu rỗi thì mới gửi đi các gói ( dữ

liệu).

Cơ hội để tham gia vào truyền là bằng nhau đối với mỗi trạm . Tức là không có sự ưu tiên .

Sự thâm nhập vào kênh chung được quyết dịnh bởi nhóm điều khiển truy nhập trung gian

( Medium Access Control-MAC) được đặt trong mỗi trạm . MAC thực thi dựa trên cơ sở sự

phát hiện va chạm sóng mang ( CSMA/CD).

- Giao thức CSMA/CD .

- Xung đột

- Truyền dữ liệu

2.3.1.Giao thức CSMA/CD.

Để truyền thông tin, mỗi giao tiếp mạng phải lắng nghe cho tới khi không có tín hiệu

trong kênh chung , lúc này nó mới có thể truyền thông tin . Nếu một giao tiếp mạng thực

hiện truyền thông tin trong kênh thì gọi là sóng và các trạm khác phải chờ đợi cho tới khi sự

truyền dẫn này kết thúc . Quá trình này gọi là phát hiện sóng mang. Mọi giao tiếp Ethernet

đều có cơ hội ngang nhau trong việc truyền thông tin trong mạng (Đa truy nhập ) . Trong

quá trình truyền từ đầu này tới đầu kia của Ethernet , những bít đầu tiên của khung cần phải

đi tới mọi vùng của mạng . Tức là có thể có 2 giao tiếp mạng cùng thấy mạng rỗi và gửi đi

cùng 1 lúc. Khi đó Ethernet phát hiện sự “ va chạm “ và dừng việc truyền và gửi lại các

khung . ĐÓ là quá trình phát hiện va chạm.

Giao thức CSMA/CD được thiết kế nhằm cung cấp cơ hội ngang bằng truy nhập kênh chung

cho mọi trạm trong mạng . Sau khi gói tin được gửi đi mỗi trạm trong mạng sẽ sủ dụng giao

thức CSMA/CD để xem trạm nào sẽ được gửi tiếp sau.

2.3.2.Va chạm

Nếu có có hơn 1 trạm cùng gửi thông tin cùng lúc thì tín hiệu được nói rằng đang va

chạm , Các trạm sẽ nhận ra biến cố này và dừng việc truyền bằng thuật toán backoff . Sau đó

mỗi trạm sẽ chọn 1 thời gian ngẫu nhiên sau đó để truyền tiếp .

6

Page 7: Báo Cáo Cơ Sở Truyền Số Liệu

Thông thường khoảng thời gian trễ này là rất ngắn chỉ khoảng phần nghìn hoặc phần

triệu của giây . Nếu như sau đó lại có va chạm thì lại phải truyền lại . Nếu sau một số lần liên

tiếp nào đó va chạm thì hệ thống sẽ thôi truyền gói tin này nữa , thường Ethernet chọn 16 lần

để hảy bỏ truyền gói tin. Nếu mạng càng lớn và càng nhiều trạm thì khả năng huỷ bỏ càng

lớn .

2.3.3.Truyền dữ liệu

Cũng như các mạng LAN khác , Ethernet luôn tìm cách truyền dữ liệu tốt nhất , Tuy

nhiên ngay cả với những mạng Ethernet đắt tiền nhất và được thiết kế tốt nhất thì dữ liệu

truyền đi vẫn không hoàn hảo.

Nhiễu điện có thể xuất hiện mọi lúc trên hệ thống cable và làm dữ liêu bị hỏng . Trong

trường hợp kênh LAN bị tắc nghẽn làm cho số lần va chạm vượt quá 16 làm cho các khung

bị mất . Không thể có mạng LAN nào hoàn hảo , vì thế những phần mềm ở lớp giao thức

mạng cao hơn được thiết kế để cứu dữ liệu khỏi lỗi.

Cần thiết phải nâng lên các giao thức mạng mức cao để chắc chắn dữ liệu nhận được

là chính xác .Các giao thức bậc cao làm được điều nàu nhờ phương thức truyền đáng tin cậy

và sự xác nhận chuỗi thông tin truyền qua mạng .

2.4.Khung và địa chỉ Ethernet

Quả tim của Ethernet là là khung , khung được sử dụng để truyền dữ liệu giữa các

máy tính ,Khung gồm các bit được chia thành các trường . Các trường này bao gồm trường

địa chỉ , trường dữ liệu chứa từ 46 tới 15000 byte dữ liệu , và 1 trường kiểm tra lỗi để kiểm

tra các bit nhận được có giống với các bit được truyền đi không.

Trường đầu tiên mang 48 bit địa chỉ , gọi là địa chỉ nhận và địa chỉ gửi, IEEE quản lí

các địa chỉ bởi trường địa chỉ. IEEE cung cấp 24 bit nhận dạng gọi là “ định danh tổ chức

duy nhất “ (OUI) , mỗi tổ chức tham gia vào Ethernet sẽ được cung cấp 1 định danh duy

nhất .Tổ chức sẽ tạo ra 48 bit địa chỉ sử dụng OUI của 24 bit địa chỉ đầu tiên . 48 bit này

được biết đến như là địa chỉ vật lí , phần cứng hoặc địa chỉ MAC. 48 bít địa chỉ là dấu hiệu

nhận biết chung cho mỗi giao tiếp Ethernet khi nó được tạo ra , nhờ đó mà làm đơn giản hơn

cấu trúc của Ethernet. Với cách định danh này bạn có thể nhóm nhiều tổ chức Ethernet vì thế

7

Page 8: Báo Cáo Cơ Sở Truyền Số Liệu

dễ dàng hơn trong việc quản lí Ethernet.

Mỗi khung Ethernet được gửi tới 1 kênh chung , khi đó mỗi giao tiếp mạng sẽ xem xét

trường 48 bit đầu tiên có chứa địa chỉ , giao tiếp mạng sẽ so sánh địa chỉ của chính nó với

địa chỉ này . Giao tiếp mạng có địa chỉ trùng với địa chỉ nhận sẽ đọc toàn bộ khung và gửi

những dữ liệu này tới phần mềm trong máy . Mọi giao tiếp mạng sẽ ngừng đọc thông tin

trong khung sau khi chúng phát hiện địa chỉ của chúng không trùng với địa chỉ nhận.

2.5.Địa chỉ Multicast and Broadcast

Một địa chỉ multicast cho phép một khung đơn có thể nhận được một nhóm trạm.Phần

mềm mạng có thể cho phép giao tiếp mạng lắng nghe những địa chỉ multicast chỉ định. Điều

này cho phép một nhóm trạm có thể được nhận biết bởi một nhóm multicast đã được gán cho

địa chỉ multicast riêng. Một gói đơn gởi tới 1 địa chỉ multicast sẽ được nhận bởi mọi trạm

trong nhóm này. Có một trường hợp đặc biệt của multicast là broadcast , đó là 48 bit địa chỉ

của mỗi phần tử. Mọi giao tiếp Ethernet nếu thấy 1 khung với địa chỉ đến kiểu này sẽ đọc

khung và gửi nó đến hần mềm trong trạm.

8

Page 9: Báo Cáo Cơ Sở Truyền Số Liệu

PHẦN 2 – PHÂN CÔNG CÔNG VIỆC

1. Phân công chung : cả nhóm tìm hiểu và làm quen với công cụ mô phỏng

OMNET++ qua các tài liệu Thầy giáo đã cho.

Cài đặt gói INET Framework tham khảo.

2. Phân công cụ thể thực hiện đề tài :

- Nguyễn Đức Quý: Tạo mô hình mô phỏng mạng và cài đặt các thông số mô phỏng.

- Đỗ Trung Thanh: Viết lại thuật toán tính toán tổng dung lượng băng thông bị chiếm và

tốc độ mất gói.

- Đỗ Trung Thanh: Dựa vào kết quả mô phỏng từ OMNET++ vẽ đồ thị tổng dung lượng

băng thông bị chiếm khi truyền gói và tốc độ mất gói.

9

Page 10: Báo Cáo Cơ Sở Truyền Số Liệu

PHẦN 3 -THỰC HIỆN ĐỀ TÀI

1.Thực hiện mô phỏng với trễ truyền dẫn 100ms, độ dài gói 1500bytes1.1. Mô phỏng với 3 máy tính kết nối

- Tạo mô hình mô phỏng mạng:

network ethernet{submodules: hostA: EtherHost {parameters:@display("p=100,150"); } hostB: EtherHost {parameters:@display("p=200,150"); } hostC: EtherHost {parameters:@display("p=300,150"); } bus: EtherBus {parameters: positions = "0 10 20"; propagationSpeed = 2e8 mps;@display("p=250,100;b=400,6;o=#408060");gates: ethg[3]; }

10

Page 11: Báo Cáo Cơ Sở Truyền Số Liệu

connections: bus.ethg[0] <--> hostA.ethg; bus.ethg[1] <--> hostB.ethg; bus.ethg[2] <--> hostC.ethg;}

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

[General]

network = ethernet

sim-time-limit = 30s

tkenv-plugin-path = ../../../etc/plugins

**.vector-recording = true

[Config ethernet]

**.mac.address = "auto"

**.mac.txrate = 0# autoconfig

**.mac.txQueueLimit = 100000

**.hostA.cli.destAddress = ""

**.cli.destAddress = "hostA"

**.cli.waitTime = exponential(0.005s)

**.cli.reqLength = 1500B

**.cli.respLength = truncnormal(1000B,1000B)

Trong đó, các thông số đề bài đưa ra được thiết lập như sau:

- Thời gian mô phỏng 30s: sim-time-limit = 30s

- Các gói được gửi đi với tốc độ λ=200 gói/s, tuân theo phân bố Poisson: **.cli.waitTime = exponential(0.005s)

- Độ dài của gói Ethernet 1500 bytes: **.cli.reqLength = 1500B

11

Page 12: Báo Cáo Cơ Sở Truyền Số Liệu

- Trễ truyền dẫn 100ms và tốc độ mạng Ethernet 10Mbps được thiết lập trong

file EtherBus.cc:

voidEtherBus::initialize()

{

numMessages = 0;

WATCH(numMessages);

propagationSpeed = par("propagationSpeed").doubleValue();

// initialize the positions where the hosts connects to the bus

taps = gateSize("ethg");

// read positions and check if positions are defined in order (we're lazy to sort...)

std::vector<double> pos;

tokenize(par("positions").stringValue(), pos);

int numPos = pos.size();

if (numPos>taps)

EV <<"Note: `positions' parameter contains more values ("<< numPos <<") than "

"the number of taps ("<<taps<<"), ignoring excess values.\n";

elseif (numPos<taps&& numPos>=2)

EV <<"Note: `positions' parameter contains less values ("<< numPos <<") than "

"the number of taps ("<<taps<<"), repeating distance between last 2 positions.\n";

elseif (numPos<taps&& numPos<2)

EV <<"Note: `positions' parameter contains too few values, using 5m distances.\n";

12

Page 13: Báo Cáo Cơ Sở Truyền Số Liệu

tap = new BusTap[taps];

int i;

double distance = numPos>=2 ? pos[numPos-1]-pos[numPos-2] : 5;

for (i=0; i<taps; i++)

{

tap[i].id = i;

tap[i].position = i<numPos ? pos[i] : i==0 ? 5 : tap[i-1].position+distance;

}

for (i=0; i<taps-1; i++)

{

if (tap[i].position>tap[i+1].position)

error("Tap positions must be ordered in ascending fashion, modify 'positions' parameter and rerun\n");

}

// Calculate propagation of delays between tap points on the bus

for (i=0; i<taps; i++)

{

tap[i].propagationDelay[UPSTREAM] = 0;

tap[i].propagationDelay[DOWNSTREAM] = 0.1;

}

// Prints out data of parameters for parameter checking...

EV <<"Parameters of ("<<getClassName() <<") "<<getFullPath() <<"\n";

EV <<"propagationSpeed: "<<propagationSpeed<<"\n";

for (i=0; i<taps; i++)

{

13

Page 14: Báo Cáo Cơ Sở Truyền Số Liệu

EV <<"tap["<< i <<"] pos: "<<tap[i].position<<

" upstream delay: "<<tap[i].propagationDelay[UPSTREAM] <<

" downstream delay: "<<tap[i].propagationDelay[DOWNSTREAM] << endl;

}

EV <<"\n";

// autoconfig: tell everyone that bus supports only 10Mb half-duplex

EV <<"Autoconfig: advertising that we only support 10Mb half-duplex operation\n";

for (i=0; i<taps; i++)

{

EtherAutoconfig *autoconf = new EtherAutoconfig("autoconf-10Mb-halfduplex");

autoconf->setHalfDuplex(true);

autoconf->setTxrate(10000000); // 10Mb

send(autoconf,"ethg$o",i);

}

}

- Tính toán tổng dung lượng băng thông bị chiếm và tốc độ mất gói:

• Để tính tổng dung lượng băng thông bị chiếm ta tính tổng dung lượng lưu lượng

mỗi máy đích nhận được chia cho khoảng thời gian truyền .rồi cộng tổng lại để ra

băng thông bị chiếm trên bus.

• Để tính tốc độ mất gói ta lấy số gói bị mất của mỗi máy chia cho khoảng thời gian

mất số gói này, đưa số liệu ra rồi cộng lại để tính tốc độ mất gói trên bus.

Ta tính toán dựa vào các hàm trong file EtherMacBase.cc:

14

Page 15: Báo Cáo Cơ Sở Truyền Số Liệu

Số gói bị mất sau mỗi khoảng thời gian 0.1s:

boolEtherMACBase::checkDestinationAddress(EtherFrame *frame){// If not set to promiscuous = on, then checks if received frame contains destination MAC address// matching port's MAC address, also checks if broadcast bit is setif (!promiscuous&& !frame->getDest().isBroadcast() && !frame->getDest().equals(address)){EV <<"Frame `"<< frame->getName() <<"' not destined to us,

discarding\n";numDroppedNotForUs++;delete frame; timer=simTime();if(timer>moc1){

numDroppedNotForUsVector.record(numDroppedNotForUs/timer);moc1+=0.1;

}returnfalse;

}returntrue;}

Lưu lượng mỗi máy nhận được sau mỗi khoảng thời gian 0.1s:

voidEtherMACBase::processReceivedDataFrame(EtherFrame *frame){// bit errorsif (frame->hasBitError()) {numDroppedBitError++;numDroppedBitErrorVector.record(numDroppedBitError);delete frame;return; }

// strip preamble and SFD frame->addByteLength(-PREAMBLE_BYTES-SFD_BYTES);

// statisticsnumFramesReceivedOK++;numBytesReceivedOK += frame->getByteLength();

numFramesReceivedOKVector.record(numFramesReceivedOK); timer=simTime();

if(timer>moc){numBytesReceivedOKVector.record(numBytesReceivedOK*8/timer/1000000);moc+=0.1;

}

if (!checkDestinationAddress(frame))

15

Page 16: Báo Cáo Cơ Sở Truyền Số Liệu

return;

numFramesPassedToHL++;numFramesPassedToHLVector.record(numFramesPassedToHL);

// pass up to upper layer send(frame, "upperLayerOut");}

- Vẽ đồ thị tổng dung lượng bị chiếm trên bus và tốc độ mất gói

Sau khi thực hiện mô phỏng thành công, ta thu được giá trị các thông số cần tính

toán theo dạng vector ghi lại các kết quả ứng với mỗi khoảng thời gian 0.1s:

Lưu lượng mỗi máy nhận được: numBytesReceivedOKVector

Số gói bị mất: numDroppedNotForUsVector

Dựa vào các kết quả thu được, ta xuất dữ liệu các thông số này ra MATLAB và

thực hiện tính toán và vẽ đồ thị dựa vào phần mềm MATLAB.

- Kết quả mô phỏng thu được:

16

Page 17: Báo Cáo Cơ Sở Truyền Số Liệu

Hình 1.2 – Tốc độ mất gói

1.2. Mô phỏng với 5 máy tính kết nối

Để mô phỏng với số máy nhiều hơn, ta chỉ cần tạo mô hình mạng với 5 máy. Các

thông số mô phỏng cũng như việc tính toán các thông số đã được trình bày ở phần

trên.

network ethernet{submodules:

17

Page 18: Báo Cáo Cơ Sở Truyền Số Liệu

hostA: EtherHost {parameters:@display("p=100,150"); } hostB: EtherHost {parameters:@display("p=200,150"); } hostC: EtherHost {parameters:@display("p=300,150"); } hostD: EtherHost {@display("p=131,37"); } hostE: EtherHost {@display("p=238,34"); } bus: EtherBus {parameters: positions = "0 10 20 30 40"; propagationSpeed = 2e8 mps;@display("p=250,100;b=400,6;o=#408060");gates: ethg[5]; } connections: bus.ethg[0] <--> hostA.ethg; bus.ethg[1] <--> hostB.ethg; bus.ethg[2] <--> hostC.ethg; bus.ethg[3] <--> hostD.ethg; bus.ethg[4] <--> hostE.ethg;}

Kết quả mô phỏng:

18

Page 19: Báo Cáo Cơ Sở Truyền Số Liệu

Hình 2.1 – Đồ thị tổng dung lượng bị chiếm trên bus khi truyền gói

Hình 2.2 – Tốc độ mất gói

1.3. Mô phỏng với 10 máy tính kết nối

network ethernet{@display("bgb=564,311");submodules: hostA: EtherHost {parameters:@display("p=102,253"); } hostB: EtherHost {

19

Page 20: Báo Cáo Cơ Sở Truyền Số Liệu

parameters:@display("p=214,253"); } hostC: EtherHost {parameters:@display("p=316,261"); } hostD: EtherHost {@display("p=402,261"); } hostE: EtherHost {@display("p=485,261"); }

hostA1: EtherHost {@display("p=92,43"); } hostB1: EtherHost {@display("p=214,42"); } hostC1: EtherHost {@display("p=303,42"); } hostD1: EtherHost {@display("p=402,43"); } hostE1: EtherHost {@display("p=485,43"); } bus: EtherBus {parameters: positions = "0 10 20 30 40 50 60 70 80 90"; propagationSpeed = 2e8 mps;@display("p=266,164;b=400,6;o=#408060");gates: ethg[10]; }connections: bus.ethg[0] <--> hostA.ethg; bus.ethg[1] <--> hostB.ethg; bus.ethg[2] <--> hostC.ethg; bus.ethg[3] <--> hostD.ethg; bus.ethg[4] <--> hostE.ethg; bus.ethg[5] <--> hostA1.ethg; bus.ethg[6] <--> hostB1.ethg; bus.ethg[7] <--> hostC1.ethg; bus.ethg[8] <--> hostD1.ethg; bus.ethg[9] <--> hostE1.ethg;}

Kết quả mô phỏng:

20

Page 21: Báo Cáo Cơ Sở Truyền Số Liệu

Hình 3.1 – Đồ thị tổng dung lượng bị chiếm trên bus khi truyền gói

Hình 3.2 – Tốc độ mất gói

21

Page 22: Báo Cáo Cơ Sở Truyền Số Liệu

2.Thực hiện mô phỏng với trễ truyền dẫn 1s, độ dài gói 1500bytes

Trong phần này ta thực hiện mô phỏng với trễ truyền dẫn 1s. Các thông số khác

vẫn được giữ nguyên so với phần trên. Để thiết lập trễ truyền dẫn ta thực hiện tương tự

như trên với file EtherBus.cc:

voidEtherBus::initialize()

{

numMessages = 0;

WATCH(numMessages);

propagationSpeed = par("propagationSpeed").doubleValue();

// initialize the positions where the hosts connects to the bus

taps = gateSize("ethg");

// read positions and check if positions are defined in order (we're lazy to sort...)

std::vector<double> pos;

tokenize(par("positions").stringValue(), pos);

22

Page 23: Báo Cáo Cơ Sở Truyền Số Liệu

int numPos = pos.size();

if (numPos>taps)

EV <<"Note: `positions' parameter contains more values ("<< numPos <<") than "

"the number of taps ("<<taps<<"), ignoring excess values.\n";

elseif (numPos<taps&& numPos>=2)

EV <<"Note: `positions' parameter contains less values ("<< numPos <<") than "

"the number of taps ("<<taps<<"), repeating distance between last 2 positions.\n";

elseif (numPos<taps&& numPos<2)

EV <<"Note: `positions' parameter contains too few values, using 5m distances.\n";

tap = new BusTap[taps];

int i;

double distance = numPos>=2 ? pos[numPos-1]-pos[numPos-2] : 5;

for (i=0; i<taps; i++)

{

tap[i].id = i;

tap[i].position = i<numPos ? pos[i] : i==0 ? 5 : tap[i-1].position+distance;

}

for (i=0; i<taps-1; i++)

{

if (tap[i].position>tap[i+1].position)

error("Tap positions must be ordered in ascending fashion, modify 'positions' parameter and rerun\n");

}

23

Page 24: Báo Cáo Cơ Sở Truyền Số Liệu

// Calculate propagation of delays between tap points on the bus

for (i=0; i<taps; i++)

{

tap[i].propagationDelay[UPSTREAM] = 0;

tap[i].propagationDelay[DOWNSTREAM] = 1;

}

// Prints out data of parameters for parameter checking...

EV <<"Parameters of ("<<getClassName() <<") "<<getFullPath() <<"\n";

EV <<"propagationSpeed: "<<propagationSpeed<<"\n";

for (i=0; i<taps; i++)

{

EV <<"tap["<< i <<"] pos: "<<tap[i].position<<

" upstream delay: "<<tap[i].propagationDelay[UPSTREAM] <<

" downstream delay: "<<tap[i].propagationDelay[DOWNSTREAM] << endl;

}

EV <<"\n";

// autoconfig: tell everyone that bus supports only 10Mb half-duplex

EV <<"Autoconfig: advertising that we only support 10Mb half-duplex operation\n";

for (i=0; i<taps; i++)

{

EtherAutoconfig *autoconf = new EtherAutoconfig("autoconf-10Mb-halfduplex");

autoconf->setHalfDuplex(true);

autoconf->setTxrate(10000000); // 10Mb

send(autoconf,"ethg$o",i);

}

24

Page 25: Báo Cáo Cơ Sở Truyền Số Liệu

}

Kết quả mô phỏng với 3 máy tính kết nối:

Hình 4.1 – Đồ thị tổng dung lượng bị chiếm trên bus khi truyền gói

Hình 4.2 – Tốc độ mất gói

Kết quả mô phỏng với 5 máy tính kết nối:

25

Page 26: Báo Cáo Cơ Sở Truyền Số Liệu

Hình 5.1 – Đồ thị tổng dung lượng bị chiếm trên bus khi truyền gói

Hình 5.2 – Tốc độ mất gói

Kết quả mô phỏng với 10 máy tính kết nối:

26

Page 27: Báo Cáo Cơ Sở Truyền Số Liệu

Hình 6.1 – Đồ thị tổng dung lượng bị chiếm trên bus khi truyền gói

Hình 6.2 – Tốc độ mất gói

27

Page 28: Báo Cáo Cơ Sở Truyền Số Liệu

3.Thực hiện mô phỏng với 10 máy, trễ truyền dẫn 100ms, độ dài gói thay đổi

Trong phần này ta thực hiện mô phỏng với 10 máy và trễ truyền dẫn 100ms với độ dài

gói Ethernet thay đổi. Ta thực hiện mô phỏng với 2 trường hợp độ dài gói bằng 1000

bytes và 3000 bytes. Để thay đổi độ dài gói Ethernet ta thiết lập như sau:

- Mô phỏng với độ dài gói 1000 bytes:

[General]

network = ethernet

sim-time-limit = 30s

tkenv-plugin-path = ../../../etc/plugins

**.vector-recording = true

[Config ethernet]

**.mac.address = "auto"

**.mac.txrate = 0# autoconfig

**.mac.txQueueLimit = 100000

28

Page 29: Báo Cáo Cơ Sở Truyền Số Liệu

**.hostA.cli.destAddress = ""

**.cli.destAddress = "hostA"

**.cli.waitTime = exponential(0.005s)

**.cli.reqLength = 1000B

**.cli.respLength = truncnormal(3000B,3000B)

Kết quả mô phỏng:

Hình 7.1 – Đồ thị tổng dung lượng bị chiếm trên bus khi truyền gói

29

Page 30: Báo Cáo Cơ Sở Truyền Số Liệu

Hình 7.2 – Tốc độ mất gói

- Mô phỏng với độ dài gói 3000 bytes:

[General]

network = ethernet

sim-time-limit = 30s

tkenv-plugin-path = ../../../etc/plugins

**.vector-recording = true

[Config ethernet]

**.mac.address = "auto"

**.mac.txrate = 0# autoconfig

**.mac.txQueueLimit = 100000

**.hostA.cli.destAddress = ""

**.cli.destAddress = "hostA"

30

Page 31: Báo Cáo Cơ Sở Truyền Số Liệu

**.cli.waitTime = exponential(0.005s)

**.cli.reqLength = 1000B

**.cli.respLength = truncnormal(3000B,3000B)

Kết quả mô phỏng:

Hình 7.1 – Đồ thị tổng dung lượng bị chiếm trên bus khi truyền gói

31

Page 32: Báo Cáo Cơ Sở Truyền Số Liệu

Hình 7.2 – Tốc độ mất gói

PHẦN 4 – KẾT LUẬN

-Trong mạng ethernet, khi số máy trong mạng tăng lên thì tổng dung lượng

băng thông bị chiếm trên bus khi các máy thực hiện trao đổi dữ liệu tại một thời

điểm sẽ tăng lên.

Đồng thời với tăng tổng dung lượng băng thông thì tốc độ mất gói của mạng

cũng sẽ tăng khi số máy trong mạng tăng.

-Với cùng số máy tham gia trong mạng lan,khi kích thước gói Ethernet tăng

sẽ làm cho băng thong bị chiếm trên bus giảm , đồng thời tốc độ mất gói cũng

giảm theo.

32

Page 33: Báo Cáo Cơ Sở Truyền Số Liệu

Như vậy các thông số kĩ thuật và tài nguyên mạng cho trước ta cần phải tính

toán để có được một mạng hoạt động hiệu quả .Việc phân tích chính xác Ethernet

rất phức tạp do giải thuật Truncated Binary Exponential Backoff. Do đó ta sử dụng

phương pháp xác định hiệu năng tối đa của phương pháp CSMA-CD thông

thường.

33