Tài liệu học tập Kỹ thuật mô phỏng (Phần 2)

Mục tiêu

Liên kết (Link) là một đối tượng OTcl kết nối giữa hai nút để truyền các gói tin từ

nút bắt đầu nguồn nút đích. Nội dung của chương này chủ yếu tập trung vào lớp có tên là

SimpleLink là Lớp được sử dụng rộng rãi nhất trong số các lớp thừa kế từ Lớp Link. Đối

tượng SimpleLink mô hình hóa thời gian truyềứ gói tin, độ trễ của kênh truyền và bộ đệm

gói tin để truyền các gói tin từ một nút này tới một nút khác, ở đây, thời gian truyền gói

tin là thời gian cần thiết đề thiết bị truyền gửi đi một gói tin. Nó được xác định bởi băng

thông của kênh truyền và kích cỡ gói tin. Thời gian trễ của kênh truyền là thời gian cần

thiết để mang mỗi bit từ điểm đầu tới điểm cuối trên kênh truyền. Một thiết bị truyền có

thể nhận được các gói tin trong khi nó đang truyền các gói tin khác. Các gói tin đi đến

một thiết bị truyền đang bận có thể được đưa vào một bộ đệm để truvền đi ở thời điểm

sau. Không giống như trong thực tế, NS2 triển khai việc đệm gói tin trong một kênh

truyền chứ không phải trong một nút.

7.1. Giới thiệu về đối tượng SimpleLink

NS2 mô hình hóa một kênh truyền bằng các sử dụng các Lớp được dẫn xuất từ

Lớp Link của OTcl. Trong số các Lớp này, Lớp SimpleLink là lớp đơn giản nhất có thể

được sử dụng để kết nối giữa hai nút.

 Các thành phần chính của một Lớp SimpleLink

Hình 7.1 đưa ra một hình ảnh kết hợp giữa các thành phần của Lớp SimpleLink

với các đối tượng cơ bản và các đối tượng lưu vết trong cây thông dịch như sau:

Hình 7.1. Kiến trúc của một đối tượng SỉmpỉeLink

Các đối tượng cơ bản

head_: Điểm truy cập của đối tượng SỉmpleLink

queue_: Là một đối tượng Queue, nó thực hiện mô hình hóa bộ đệm gói tin của

một router thực (xem Mục 7.3).

link_: Là đối tượng DelayLỉnk, thực hiện mô hình hóa thời gian truvền gói tin

và thời gian trễ của kênh truyền (xem Mục 7.2)

ttl_: Là một đối tượng kiểm tra thời gian sống (time to live) của lớp

TTLChecker. Khi một gói tin tới, đối tượng này thực hiện việc giảm giá trị TTL của

gói tin. Sau đó nó kiểm tra nếu giá trị TTL của gói tin vẫn là giá trị dương, gói tin sẽ- 132 -

được chuyển tiếp tới thành phần tiếp theo trên kênh truyền. Ngược lại, nó sẽ hủy gói

tin ra khỏi quá trình mô phỏng (xem file "ns/common/ttl.h.cc).

đropheacL: Là điểm hủy gói tin của kênh truyền. Các gói tin bị hủy sẽ được

chuyển tiếp tới đối tượng này. Nó thường được kết nối với tác tử rỗng của đối tượng

Simulator để mọi đối tượng SỉmpleLink có thể chia sẻ cùng một điểm hủy gói tin.

Các đối tượng lưu vết

Các đối tượng này sẽ được chèn vào chỉ khi biến thành viên $traceAHFile_ được

định nghĩa. Các đối tượng này bao gồm:

enqT_: Lưu vết các gói tin đi vào hàng đợi queue_ deqT_: Lưu vết các gói tin đi ra

từ hàng đợi queue_ drpT_: Lưu vết các gói tin bị hủy từ hàng đợi queue_

rcvT_: Lưu vết các gói tin đi ra khỏi kênh truyền hoặc được các nút tiếp theo

nhận.

7.1.1. Các thủ tục instproc để cấu hình đối tượng SimpleLink

Trong miền OTcl, một đối tượng SỉmpleLỉnk được tạo ra bằng cách sử dụng thủ

tục instproc simplex-lỉnkL"} và duplex-lỉnkr---} của lớp Simulator với cú pháp như sau:

Trong đó $ns là đối tượng Simulator và $nl, $n2 là các đối tượng Node. Thủ tục instproc

simplex-Tink{”-} ở trên tạo một đối tượng SimpleLink kết nối 1 chiều giữa nút $nl với

nút $n2 (Chưong trình 7.1). Tốc độ và thời gian trễ của kênh truyền được đưa vào tham

số (tính theo đon vị bps) và (tính theo đon vị giây). Khác với

router thực, NS2 tích hợp hàng đợi trong đối tượng SimpleLỉnk chứ không phải trong

đối tượng Node. Kiểu của hàng đợi trong kênh truyền được chỉ định bởi tham số

Tài liệu học tập Kỹ thuật mô phỏng (Phần 2) trang 1

Trang 1

Tài liệu học tập Kỹ thuật mô phỏng (Phần 2) trang 2

Trang 2

Tài liệu học tập Kỹ thuật mô phỏng (Phần 2) trang 3

Trang 3

Tài liệu học tập Kỹ thuật mô phỏng (Phần 2) trang 4

Trang 4

Tài liệu học tập Kỹ thuật mô phỏng (Phần 2) trang 5

Trang 5

Tài liệu học tập Kỹ thuật mô phỏng (Phần 2) trang 6

Trang 6

Tài liệu học tập Kỹ thuật mô phỏng (Phần 2) trang 7

Trang 7

Tài liệu học tập Kỹ thuật mô phỏng (Phần 2) trang 8

Trang 8

Tài liệu học tập Kỹ thuật mô phỏng (Phần 2) trang 9

Trang 9

Tài liệu học tập Kỹ thuật mô phỏng (Phần 2) trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 102 trang xuanhieu 6940
Bạn đang xem 10 trang mẫu của tài liệu "Tài liệu học tập Kỹ thuật mô phỏng (Phần 2)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Tài liệu học tập Kỹ thuật mô phỏng (Phần 2)

Tài liệu học tập Kỹ thuật mô phỏng (Phần 2)
6, hàm stopO làm ngƣợc lại với hàm starto. Nó hủy bỏ bộ đếm 
thời gian đang hoạt động (nếu có) trong dòng 11 và thiết lập giá trị biến runnỉng_ bằng 0 
trong dòng 12. 
 Lớp TrafficGenerator còn định nghĩa thêm 3 hàm mới sau: 
(xxxiii) next_interval(size): Nhận kích thƣớc khối dữ liệu ―size‖ là đối số 
đầu vào và trả về giá trị là thời gian trễ sau khi một khối dữ liệu mới đƣợc sinh ra (dòng 
4). Hàm này là hàm ảo nguyên thủy do đó nó phải đƣợc triển khai trong các Lớp thừa kế 
từ lớp Traff ỉcGenerator. 
- 223 - 
(xxxiv) init(): Khởi động bộ sinh lƣu lƣợng dữ liệu 
(xxxv) timeout(): Gửi một khối dữ liệu ngƣời dùng tới ứng dụng đang gắn vào và 
khởi động lại timer_. Hàm này đƣợc gọi khi bộ đếm timer_ vƣợt ngƣỡng. 
 Chi tiết của hàm timeout() đƣợc đƣa ra trong các dòng 14-24 của Chƣơng trình 
11.6. Hàm này không thực hiện việc gì nếu nhƣ đối tƣợng TrafficGenerator không chạy 
(dòng 16-17). Ngƣợc lại, nó sẽ gửi ―size_‖ byte dữ liệu tới tác tử đang gắn vào bằng cách 
sử dụng hàm send(nbytes) (đƣợc định nghĩa trong Chƣơng trình 11.4). Sau đó, dòng 19 
sẽ tính toán giá tri của nextPkttime_. Nếu giá trị này lớn hơn 0, dòng 21 sẽ báo cho bộ 
đếm timer_ đạt giá trị vƣợt ngƣỡng sau một chu kỳ thời gian có giá trị bằng 
nextPkttime_. Ngƣợc lại, dòng 23 sẽ dừng đối tƣợng TrafficeGenerator đang chạy bằng 
cách thiết lập biến running_ bằng 0. 
• Cơ chế chính của Bộ sinh lƣu lƣợng 
 Hình 11.2 minh họa cơ chế hoạt động chính của một bộ sinh lƣu lƣợng. Cơ 
chế này phụ thuộc rất nhiều vào biến timer_thuộc lớp TraficTimer. Đây là lớp thừa kế từ 
lớp TimerHandler. 
 Lớp TimeHandler sẽ đƣợc đề cập một cách chi tiết trong Mục 12.1. Lớp này 
bao gồm ba trạng thái chính là TIMER_IDLE, TIMER_PENDING và 
TIMER_HANDLING. Mỗi trạng thái này đáp ứng một trong hai trạng thái của đối tƣợng 
TrafficGenerator là: rỗi (running_=0) và đang hoạt động (running_=l). Trong khi trạng 
thái TIMER_IDLE đáp ứng trạng thái rỗi của đối tƣợng TrafficGenerator thì hai trạng 
thái còn lại là các trạng thái thuộc trạng thái đang hoạt động của đối tƣợng này. 
- 224 - 
Hình 11.2. Cơ chế hoạt động của bộ sinh lƣu lƣợng 
 Bộ sinh lƣu lƣợng luôn bắt đầu từ trạng thái rỗi. Nó sẽ chuyển tới trạng thái 
hoạt động khi hàm starto đƣợc gọi. Ở đây trạng thái của timer_ sẽ đƣợc thiết lập là 
TIMER_PENDING. Tại thời điểm vƣợt ngƣỡng, timer_ sẽ chuyển tới trạng thái 
TIMER_HANDLING và gọi hàm timeout() của lớp TraffỉcGenerator. Sau khi thực hiện 
hàm timeout(), trạng thái của nó chuyển lại về TIMER_PENDING và quá trình này tiếp 
tục đƣợc lặp lại. Khi trạng thái của tỉmer_ là TIMER_PENDING hoặc 
TIMER_HANDLING, có thể dừng hoạt động của bộ sinh lƣu lƣợng bằng cách sử dụng 
hàm stop(). 
 Chƣơng trình 11.7 đƣa ra khai báo của lớp TraffỉcTỉmer. Đây là lớp thừa kế từ 
Lớp TimerHandler (xem Mục 12.1). Lớp Traffictimer có một biến thành viên chính là 
biến tgen_ là con trỏ trỏ tới đối tƣợng TrafficGenerator (dòng 6). Tại thời điểm bộ đếm 
vƣợt ngƣỡng, NS2 sẽ gọi hàm expire(e) của timer_ (dòng 8-11). Hàm này sau đó sẽ gọi 
đến hàm timeouto của đối tƣợng TraffỉcGenerator đang liên kết với đối tƣợng 
TrafficTimer qua biến *tgen_. 
 Kết nối hai chiều giữa đối tƣợng TrafficGenerator và TrafficTimer đƣợc tạo ra 
nhƣ sau: Lớp TrafficGenerator khai báo biến timer_ nhƣ là một con trỏ trỏ tới đối tƣợng 
TraffỉcTimer (dòng 17 trong Chƣơng trình 11.5). Đối tƣợng TrafficGenerator khởi tạo 
biến timer_ bằng cách đƣa con trỏ trỏ vào chính mình (con trỏ this) làm đối số đầu vào 
(dòng 12 trong Chƣơng trình 11.7). Hàm khởi tạo của biến timer_ sau đó sẽ gắn con trỏ 
đầu vào (con trỏ this) cho con trỏ của nó để trỏ vào đối tƣợng TrafficGenerator qua biến 
tgen_ (dòng 3 trong Chƣơng trình 11.7) nhằm tạo kết nối ngƣợc lại với đối tƣợng 
TraficTimer. 
- 225 - 
Các bộ sinh lƣu lƣợng trong Ns2. 
Constant Bit Rate (CBR) 
 Bộ sinh lƣu lƣợng CBR tạo ra từng khối dữ liệu có kích thƣớc cố định theo các 
khoảng thời gian cố định. Nhƣ ta thấy trong Chƣơng trình 11.8, NS2 triển khai bộ sinh 
lƣu lƣợng CBR bằng cách sử dụng lớp C++ CBR_Traffic. Lớp này đƣợc ánh xạ với lớp 
OTcl Application/Traffỉc/CBR. Các biến thành viên cùng giá trị mặc định của lớp OTcl 
này đƣợc trình bày trong Bảng 11.1 
 Cần chú ý rằng, khoảng thời gian giữa 2 lần truyền khối dữ liệu là khoảng thời 
gian giữa 2 thời điểm bắt đầu truyền của 2 khối dữ liệu. Khoảng thời gian này có thể tính 
đƣợc bằng cách chia kích thƣớc khối dữ liệu cho tốc độ truyền. Mặc định, khoảng thời 
gian này là 210 X 8/488.000 ** 3.44 ms. Cơ chế hoạt động chi tiết của Lớp CBR_Traffỉc 
sẽ đƣợc đề cập trong Mục 11.3.4. 
- 226 - 
Biến thành 
viên 
Giá trị mặc 
định 
Mô tả 
packetSize-_ 210 Kích thƣớc khối dữ liệu tính theo đơn vị byte 
Rate-_ 488x1o
3
 Tốc độ truyền tính theo đơn vị bps. 
Random-_ 0 (faise) 
Nếu bằng true sẽ sinh ra thơi gian ngẫu nhiên (có 
thể dƣơng hoặc âm) giữa 2 lần truyền khối dữ 
liệu. 
Maxpkts-_ 16
7
 Số lƣợng gói tin lớn nhất mà CBR có thể gửi. 
Bảng 11.1. Các biến thành viên của ỉớp CBR trong OTcl 
Exponential On/Off 
 Bộ sinh lƣu lƣợng Exponential On/Off hoạt động tƣơng tự nhƣ bộ sinh lƣu 
lƣợng CBR trong chu kỳ ON và không sinh ra lƣu lƣợng dữ liệu trong chu kỳ 0FF. Các 
chu kỳ ON và OFF đƣợc phân bố theo quy tắc lũy thừa. Chƣơng trình 11.9 cho ta thấy 
NS2 triển khai bộ sinh lƣu lƣợng này bằng cách sử dụng Lớp C++ EXPOO_Traffic. Lớp 
này đƣợc ánh xạ với Lớp OTcl Application/Traffic/- Exponential. Lớp OTcl này có các 
biến thành viên cùng giá trị mặc định đƣợc mô tả trong Bảng 11.2. 
Biến thành viên Giá trị mặc định Mô tả 
PacketSize_ 210 Kích thƣớc khối dữ 
liệu tính theo đơn vị byte 
Rate_ 64x10
3 Tốc độ truyền theo 
đơn bị bps trong chu kỳ ON 
Burst_time_ 0.5 Thòi gian trung bình 
chu kỳ ON tính bằng giây 
Id;e_time_ 0.5 Thời gian trung bình 
chu kỳ OFF tính bằng giây 
Bảng 11.2. Các biến thành viên của ỉớp Exponentiaỉ On/Ojf trong OTcl 
- 227 - 
Pareto On/Off 
 Bộ sinh lƣu lƣợng Pareto On/Off hoạt động tƣơng tự nhƣ bộ sinh lƣu lƣợng 
Exponential On/Off nhƣng chu kỳ ON và OFF đƣợc phân bố theo quy tắc Pareto. 
Chƣơng trình 11.10 cho thấy NS2 triển khai bộ sinh lƣu lƣợng này bằng cách sử dụng lớp 
C++ POO_Traffic đƣợc ánh xạ với lớp Otcl Application/Traffic/Pareto. Lớp OTcl này có 
các biến thành viên cùng giá tri mặc định đƣợc mô tả trong Bảng 11.3. 
Biến thành 
viên 
Giá trị mặc 
định 
Mô tả 
Packetsize_ 210 Kích thƣớc khối dữ liệu tính theo 
đơn vị byte 
Rate_ 64x10
3 
Tốc độ truyền theo đơn vị bps trong 
chu kỳ ON 
Burst_time_ 0.5 Thời gian trung bình chu kỳ ON tính 
theo giây 
Idle_time_ 0.5 Thời gian trung bình chu kỳ OFF 
tính theo giây 
Shape_ 1.5 Tham số ―shape‖ trong luận phân bố 
Pareto 
Bảng 11.3. Các biến thành viên của lớp Pareto On/Off trong OTclTraffic Trace 
Bộ sinh lƣu lƣợng Traffic Trace sinh ra các khối dữ liệu theo một file trace cho 
trƣớc. Trong Chƣơng trinh 11.11, ta thấy rằng NS2 triển khai bộ sinh lƣu lƣợng này bằng 
các sử dụng lớp C++ TrafficTrace liên kết với Lớp OTcl Ầpplication/TraffỈc/Trace. 
Không giống nhƣ các bộ sinh lƣu lƣợng khác đã mô tả ở trên, với bộ sinh lƣu lƣợng này 
ta cần xây dựng file lƣu lƣợng trace và chỉ định file này trong miền OTcl bằng lệnh 
attach-tracefỉle của Lớp Ầpplỉcation/Traffic/Trace (xem Ví dụ 11.2) 
- 228 - 
Ví dụ 11.2: Bộ sinh lƣu lƣợng CBR trong Ví dụ 9.1 có thể đƣợc thay thế bằng bộ 
sinh lƣu lƣợng TraíTic Trace bằng các thay thế các dòng 10-12 trong Chƣơng trinh 9.2 
bằng các dòng sau: 
File sinh lƣu lƣợng trace thực sự là một file nhị phân. Mỗi từ mã trong file này bao 
gồm 2 trƣờng 32 bit. Trƣờng thứ nhất chỉ định khoảng cách thời gian giữa 2 khối dữ liệu 
truyền tính theo đơn vị micro giây. Trƣờng thứ hai là kích thƣớc khối dữ liệu tính theo 
đơn vị byte (xem ví dụ qua Ẽle ~ns/tcl/ex/example-trace). 
11.4. Lớp CBR Traffic: Một ví dụ về bộ sinh lƣu lƣợng 
Trong phần này, ta sẽ tìm hiểu về Lớp C++ CBR_Traffỉc. Đây là lớp thừa kết từ 
Lớp TrafficGenerator. Nó bao gồm các biến chính sau: 
rate_: Tốc độ truyền tính theo đơn vị bps ỉnterval_: Thời gian truyền gói tin tính 
theo đơn vị giây 
(xxxvi) random_: Nếu có giá trị bằng true thì thời gian truyền sẽ là ngẫu 
nhiên 
(xxxvii) seqno_: số thứ tự CBR 
(xxxviii) maxpkts_: Cận trên của số thứ tự 
 Theo cơ chế đã đƣợc thảo luận trong Mục 11.3.2, NS2 kích hoạt bộ sinh lƣu 
lƣợng này bằng cách gọi hàm starto. Khi đã đƣợc kích hoạt, bộ sinh lƣu lƣợng này gọi 
hàm tỉmeouto của nó theo định kỳ để sinh ra. các khối dữ liệu. Khoảng thời gian giữa hai 
lần gọi hàm timeouto đƣợc xác định bằng hàm next_interval(size). Lời gọi hàm timeout() 
đƣợc thực hiện lặp lại cho đến khi bộ sinh lƣu lƣợng bị vô hiệu hóa (bằng cách gọi hàm 
close()). 
- 229 - 
 Nhƣ ta thấy trong Chƣơng trình 11.12, hàm starto gọi hàm init() (dòng 17) để 
khởi tạo bộ sinh lƣu lƣợng, thiết lập biến running_ =1 (dòng 18) và gọi hàm timeouto 
(dòng 19). Chi tiết của hàm init() đƣợc đƣa ra trong các dòng 21-28. Dòng 23 thực hiện 
việc tính toán khoảng thời gian truyền bằng cách lấy kích thƣớc khối dữ liệu đổi ra đơn vị 
bit (size_«3) chia cho tốc độ truyền (rate_). Hàm init() sẽ thiết lập kiểu gói tin là 
PT_CBR nếu kiểu gói tin hiện tại trƣớc đó chƣa đƣợc thiết lập là PT_TCP hoặc 
PT_TFRC (dòng 25-26). 
 Từ Chƣơng trình 11.6, hàm timeout() sẽ gửi đi ―size_‖ byte dữ liệu (dòng 8) 
tính toán giá trị biến nextPkttime_ là giá tri trả về của hàm next_interval(size_) (dòng 19) 
và lập lịch cho bộ đếm timer_ sẽ vƣợt ngƣỡng tại thời điểm nextPkttime_ giây (dòng 21). 
cần nhắc lại là hàm next_interval(size_) là hàm ảo nguyên thủy nên nó phải đƣợc xây 
dựng trong các Lớp thừa kết từ lớp TrafficGenerator. Lớp CBR_Traffic đã xây dựng hàm 
này (Chƣơng trình 11.13) bằng cách trả về thời gian truyền gói tin đƣợc tính toán từ kích 
cỡ khối dữ liệu ―size_‖ và tốc độ truyền CBR ―rate_‖ (dòng 3 và 9). Dòng 6 đƣa ra tùy 
chọn để có thể cộng hoặc trừ một giá trị ngẫu nhiên vào khoảng thời gian truyền đã đƣợc 
tính toán nếu biến random_ đƣợc thiết lập là true. Ngoài ra, nếu kích thƣớc khối dữ liệu 
lớn hơn giá trị maxpkts_, dòng 11 sẽ trả về giá trị -1 thay vì việc tính toán thời gian 
truyền. 
- 230 - 
11.5. Ứng dụng mô phỏng 
Không giống nhƣ các bộ sinh lƣu lƣợng, một ứng dụng mô phỏng không có lịch 
định trƣớc dành cho việc sinh dữ liệu. Thay vào đó, nó hoạt động nhƣ một ứng dụng thực 
sự khi đang chạy. NS2 cung cấp hai ứng dụng mô phỏng là FTP và Telnet 
11.5.1. (File Transfer Protocol) 
 FTP là một giao thức thực hiện việc chia một file thành các phần nhỏ và truyền 
chúng tới đích. Tuy nhiên NS2 không mô phỏng FTP giống nhƣ các ứng dụng truyền file 
trong thực tế. FTP module trong NS2 không cần file đầu vào. Nó chỉ đơn giản báo cho 
tác tử tầng giao vậnđang gắn vào nó việc truyền một file có kích thƣớc tính theo đon vị 
byte. Khi nhận đƣợc yêu cầu này, tác tử gửi tầng giao vậnsẽ tạo ra các gói tin để mô 
phỏng việc vận chuvển file này và chuyển tiếp chúng tói tác tử nhận tầng giao vậnmà nó 
đã kết nối qua mạng phía dƣới. Module FTP trong NS2 cũng không cần chỉ định nút đích 
bởi vì nút đích sẽ do tác tử nhận tầng giao vậnxác định (qua thủ tục connect{src dst}). 
 Để đảm bảo tính đon giản, module FTP chỉ đƣợc triển khai trong miền OTcl. 
Nó đƣợc định nghĩa trong Lớp Application/FTP thừa kế từ lớp Application. Các lệnh và 
thủ tục chính của nó trong miền OTcl bao gồm: 
(xxxix) attach-agent{agent}: Đáng ký ―agent‖ đầu vào làm tác tử gắn với 
FTP. 
(xl) start{}: Báo cho tác tử gắn vào FTP một yêu cầu truyền một file có kích 
thƣớc vô hạn bằng cách thực hiện lệnh ―send -1‖ 
(xli) stop{}: Dừng phiên truyền file hiện tại. 
(xlii) sendlnbytes{}: Gửi một file có kích thƣớc ―nbytes‖ byte tới tác tử gắn vào 
FTP bằng cách gọi hàm sendmsg(nbytes). 
(xliii) produce{nbytes}: Báo cho tác tử gắn vào FTP thực hiện việc truyền cho 
đến khi số thứ tự đạt tới giá trị tối thiểu của ―nbytes‖ và ―maxseq_‖. 
- 231 - 
(xliv) producemore{nbytes}: Báo cho tác tử gắn vào FTP truyền thêm các gói tin 
với kích thƣớc ―nbytes‖. 
11.5.2. Telnet 
 Telnet là một ứng dụng tƣơng tác client-server theo giao diện text. Một telnet 
Client đăng nhập vào một telnet server, gửi các thông điệp dạng text tới server. Sau đó 
server thực thi thông diệp nhận đƣợc và gửi trả lại kết quả dạng text tới Client. Rõ ràng, 
dữ liệu của Telnet không thể triển khai dƣới dạng lập lịch truyền dữ liệu từ trƣớc bởi vì 
dữ liệu của nó đƣợc tạo ra trên co sở yêu cầu của ngƣời dùng. Tuy nhiên, NS2 đã mô 
hình hóa ứng dụng Telnet theo cùng cách nó thực hiện đối vói các bộ sinh lƣu lƣợng. Đó 
là gửi gói tin có kích thƣớc cố định theo các khoảng thời gian ngẫu nhiên. 
 NS2 định nghĩa ứng dụng Telnet trong Lớp C++ TelnetApp và lớp OTcl 
Application/Telnet. Lớp OTcl này đƣợc thừa kế từ lớp Application. Nó sử dụng giá trị 
đƣợc lƣu trữ trong biến size_ của tác tử nó gắn vào là kích thƣớc của mỗi gói tin Telnet 
và tính toán thòi gian truyền giữa các gói nhƣ sau: 
(xlv) Trƣờng hợp I: Nếu interval_ khác 0, thời gian truyền giữa các gói đƣợc 
chọn từ phân bố hàm lũy thừa với giá trị kỳ vọng là interval_. 
(xlvi) Trƣờng hợp II: Nếu interval_ bằng 0, thời gian truyền giữa các gói đƣợc 
xác định từ thực nghiệm phân bố tcplib đƣợc định nghĩa trong file '"ns/tcp/tcplib-
telnet.cc. 
Telnet chỉ có một biến có thể cấu hình là interval_. Cũng giống nhƣ các đối tƣợng 
Application khác, có thể khởi động và dừng nó bằng cách sử dụng các lệnh tƣơng ứng là 
start{} và stop{}. 
- 232 - 
TÀI LIỆU THAM KHẢO 
[1] Kavin Fall, Kannan Varadhan. ―The ns Manual‖. The VINT Project, A 
Collaboration between researchers at UC Berkeley, LBL, USC/ISI, and Xerox PARC. 
December 13, 2008.  
[2] Paul Meeneghan and Declan Delaney. ―An Introduction to NS, Nam and 
OTcl Scripting‖. National University of Ireland, Maynooth, Co. Kildare, Ireland 
DEPARTMENT OF COMPUTER SCIENCE. April 2009 
[3] Enrique Campos-Nanez. ―Nscript Version 1.0a User‘s Manual‖. 
Department of Systems Engineering, University of Virginia. March 13, 2011 
[4] Eitan Altman and Tania Jiménez. ―NS Simulator for beginers‖. Univ de 
Los Andes, Mérida, Venezuela and ESSI, Sophia-Antipolis, France. December 4, 
2008. 
[5] Jae Chung and Mark Claypool. ―NS by example‖. 
[6] Peng Zhang, Raimo Kantola, Zhansong Ma. ―Design and Implement of a 
new routing Simulator‖. Laboratory of Telecommunication Technology, Helsinki 
University of Technology, Findland. 
[7] Xipeng Xiao and Linoel M. Ni. ―Internet QoS: A big Picture‖. 
Departurement of Computer Science, 3115 Engineering Building, Michigan State 
University. 
[8] Johanna Antila. ―TCP Performace Simulations Using Ns2‖. 
[9] Carey Williamson. ―Internet Traffic Measurement‖. Department of 
Computer Science, University of Calgary. November 24, 2011. 
[10]  TCL homepage 
[11]  NAM Network Animator 
[12]  XGRAPH homepage 
[13]  TRACEGRAPH homepage 
[14]  NSCRIPT NS-2 
scripting tool 
[15]  Marc Greis‘ 
Tutorial for the Network Simulation ns 

File đính kèm:

  • pdftai_lieu_hoc_tap_ky_thuat_mo_phong_phan_2.pdf