Tài liệu học tập Kỹ thuật mô phỏng
Mục tiêu
Trong một vài thập kỷ qua, nhiều công nghệ và kỹ thuật hỗ trợ truyền thông giữa
con người đã được phát triển. Từ hệ thống mạng điện thoại cố định đến mạng truyền
thanh, mạng truyền hình rồi mạng máy tính. Ban đầu khi mới ra đời, các hệ thống này
hoạt động độc lập với nhau và giờ đây con người mong muốn tích hợp chúng trong cùng
một hệ thống. Trên thực tế có thể xem mạng truyền thông máy tính là kết quả của sự hội
tụ này.
Chương này sẽ cung cấp cho bạn đọc một cách nhìn tổng quan về mạng truyền
thông máy tính và những vấn đề cơ bản để mô phỏng chúng. Mục 1.1. Giới thiệu về mạng
máy tính với mô hình tham chiếu mô tả kiến trúc của mạng truyền thông máy tính. Mục
1.2. Trình bày vắn tắt về phương pháp thiết kế và mô hình hóa các hệ thống mạng máy
tính phức tạp. Trong Mục 1.3. Các vấn đề cơ bản về mô phỏng mạng máy tính được đề
cập đến. Mục 1.4. Trình bày về các kỹ thuật phổ biến khi mô phỏng theo phương pháp mô
phỏng theo thời gian. Mục 1.5 đưa ra một ví dụ điển hình và Mục 1.6 sẽ tổng kết lại các
vấn đề của chương.
Mạng máy tính và kiến trúc phân tầng.
Một mạng máy tính được định nghĩa là một tập các máy tính có kết nối với nhau để
thu thập, xử lý và phân bố thông tin. Thuật ngữ máy tính được hiểu tương đối rộng bao
gồm các thiết bị như máy trạm, máy chủ, router, modem, các trạm cơ sở, các điểm mở
rộng truy cập không dây, . Các máy tính này được kết nối bởi các liên kết truyền thông
như cáp quang, cáp đồng, hay các liên kết sóng vi ba, sóng vệ tinh, sóng radio. Một mạng
máy tính có thể được xây dựng bên trong một mạng máy tính khác hoặc kết nối với một
mạng máy tính khác. Internet là một ví dụ điển hình về mạng máy tính. Trên thực tế,
Internet là mạng của các mạng.
1.1.1. Khái niệm phân tầng
Một mạng máy tính là một hệ thống rất phức tạp. Để đơn giản hóa trong việc thiết
kế và triển khai một hệ thống như vậy, người ta đưa ra khái niệm phân tầng. Sử dụng kiến
trúc phân tầng, các chức năng của một hệ thống mạng máy tính được tổ chức như là một
ngăn xếp các tầng. Mối quan hệ ngang hàng (hay liên kết ảo) diễn ra giữa 2 tầng đồng
mức của 2 nút truyền thông với nhau.
Luồng dữ liệu sẽ đi theo chiều dọc trong một tầng từ tầng cao nhất xuống tầng thấp
nhất bên nút gửi, tiếp theo sẽ đi qua đường truyền vật lý rồi đến tầng thấp nhất bên nút
nhận, sau đó đi ngược lên đến tầng cao nhất bên nút nhận. Mỗi tầng biểu diễn một phần
đặc trưng được định nghĩa trước của hệ thống và cung cấp một số dịch vụ nào đó cho
tầng phía trên. Tầng trên truy cập xuống tầng dưới thông qua giao tiếp tầng (interface).
Các dịch vụ thường định nghĩa những công việc sẽ được thực hiện theo thuật ngữ các- 10 -
hoạt động mạng hoặc các nguyên tắc nhưng đặc biệt lại không chỉ ra cách thực hiện
chúng như thế nào. Vì vậy một giao thức sẽ định nghĩa chi tiết về việc một dịch vụ được
thực hiện như thế nào. Ví dụ, mạch truyền tại máy tính nguồn có thể sử dụng một giao
thức riêng (chẳng hạn như một kỹ thuật mã hóa dữ liệu) tại tầng vật lý để truyền các bit
thông tin tới máy tính nhận. Mạch nhận sẽ sử dụng giao thức riêng này để giải mã thông
tin nhận được trên cơ sở các quy tắc của giao thức. Một trong các ưu điểm rất lớn của
khái niệm phân tầng này là tính độc lập của tầng. Điều này có nghĩa là một thay đổi trong
một giao thức của một tầng nào đó không ảnh hưởng tới toàn bộ hệ thống miễn là các
giao tiếp của tầng không thay đổi. Ở đây, ta chú ý vào các thuật ngữ dịch vụ, giao thức và
giao tiếp tầng để nhấn mạnh rằng sự tương tác giữa các thành phần này tạo nên khái niệm
phân tầng.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
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
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:
- tai_lieu_hoc_tap_ky_thuat_mo_phong.pdf