BTL Mang May Tinh []
-
Upload
dungbarca-dg -
Category
Documents
-
view
756 -
download
1
description
Transcript of BTL Mang May Tinh []
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
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: MẠNG MÁY TÍNH
Đề số 11
Giảng viên hướng dẫn: Trần Quang Vinh
Sinh viên thực hiện: Nguyễn Đức Dũng - 20080497
Nguyễn Văn Kiệm - 20081462
Trần Danh Nam - 20081837
Vũ Văn Tiệp - 20082677
Nguyễn Trọng Toàn - 20082707
Lớp: Điện Tử 1 – k53
Hà Nội 04/2012
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
A. Lý thuyết
1. Giao thức Internet (Internet Protocol) Network Layer in the Internet
1.1. Khái niệm
Giao thức internet (IP) là giao thức mạng dùng để truyền dữ liệu qua các mạng kết
hợp. Giao thức IP được thiết kế để đáp ứng các nhu cầu sau:
Thiết lập hệ thống mạng có thể kết nối được các loại máy tính, các thiết bị định
tuyến được chế tạo từ các nhà sản xuất khác nhau. Đáp ứng được sự phát triển
nhanh chóng của các loại mạng khác nhau đồng thời thừa kế được công nghệ
mạng cũ.
Hỗ trợ dịch vụ truyền dữ liệu có kết nối và không kết nối và không kết nối cho các
tầng trên.
Giao thức IP cung cấp phương thức truyền các Datagram trên một kết nối mạng
kết hợp bất kỳ.Cũng giống như một khung dữ liệu trong mạng vật lý.
Mỗi Datagram được truyền độc lập với nhau do vậy thứ tự các Datagram nhận
được có thể khác thứ tự các Datagram lúc phát đi.Giao thức IP không chịu trách
nhiệm về việc các Datagram sẽ đươc truyền đến đích an toàn hay không.Giao thức
IP chỉ có trách nhiệm truyền các Datagram càng nhanh càng tốt, các Datagram có
thể bị mất trong quá trình truyền do các nguyên nhân sau đây:
Xuất hiện bit lỗi trong quá trình truyền.
Sự quá tải của các bộ đệm
Chưa tìm được đường truyền nào tới đích.
Tất cả các biện pháp nhằm đảm bảo các Datagram được truyền đến đích một cách
an toàn ,đầy đủ và khôi phục các dữ liệu đã mất do TCP đảm nhiệm.
1.2. Ý nghĩa của giao thức IP
Giao thức IP là giao thức có cơ chế truyền dữ liệu không kết nối ,có độ tin cậy thấp.
Giao thức IP có 3 ý nghĩa quan trọng:
Giao thức IP định nghĩa đơn vị cơ sở dữ liệu truyền đi trên mạng Internet thông
qua một kết nối TCP/IP. Nói cách khác là nó xác định định dạng chính xác của tất
cả dữ liệu khi truyền qua mạng Internet.
Phần mềm IP thực hiện chức năng định tuyến cho phép chọn đường để gửi dữ liệu
đi.
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Cùng với độ chính xác, đặc tả chính xác của định dạng dữ liệu và việc định
tuyến.Giao thức IP bao gồm một tập hợp các quy tắc thể hiện cơ chế truyền dữ
liệu không kết nối và có độ tin cậy thấp. Các quy tắc này đặc trưng cho cách mà
máy tính và bộ định tuyến xử lý các gói dữ liệu làm thế nào và khi nào thì các
thông điệp lỗi phát sinh và dưới những điều kiện nào thì các gói dữ liệu được hủy
bỏ.
1.3. Khuôn dạng dữ liệu của giao thức IP ( IP Datagram)
Bản tin ở lớp giao vận có độ dài 64Kbytes được chuyển xuống lớp mạng.Giao thức IP
cắt bản tin này thành các gói nhỏ gửi đi (IP Datagram) . Khi đến nơi nhận chúng được tập
hợp lại bởi lớp giao vận để tạo lại bản tin ban đầu.
Một IP Datagram gồm có phần mào đầu (Header) và phần dữ liệu (Data).Phần Header
có một phần cố định 20bytes và một phần tùy ý có độ rộng thay đổi như minh họa ở hình
vẽ sau.
IP Header Unit of Data
Datagram
1.4. Các dịch vụ của lớp IP (IP services).
1.4.1. Dịch vụ mạng DNS
Khái niệm: DNS là từ viết tắt trong tiếng Anh của Domain Name System, là Hệ
thống phân giải tên được phát minh vào năm 1984 cho Internet, chỉ một hệ thống
cho phép thiết lập tương ứng giữa địa chỉ IP và tên miền.
Chức năng của DNS.
Mỗi Website có một tên (là tên miền hay đường dẫn URL:Universal Resource
Locator) và một địa chỉ IP. Địa chỉ IP gồm 4 nhóm số cách nhau bằng dấu chấm.
Khi mở một trình duyệt Web và nhập tên website, trình duyệt sẽ đến thẳng website
mà không cần phải thông qua việc nhập địa chỉ IP của trang web. Quá trình "dịch"
tên miền thành địa chỉ IP để cho trình duyệt hiểu và truy cập được vào website là
công việc của một DNS server. Các DNS trợ giúp qua lại với nhau để dịch địa chỉ
"IP" thành "tên" và ngược lại. Người sử dụng chỉ cần nhớ "tên", không cần phải
nhớ địa chỉ IP (địa chỉ IP là những con số rất khó nhớ )
Nguyên tắc làm việc của DNS.
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Mỗi nhà cung cấp dịch vụ vận hành và duy trì DNS server riêng của mình, gồm
các máy bên trong phần riêng của mỗi nhà cung cấp dịch vụ đó trong Internet. Tức
là, nếu một trình duyệt tìm kiếm địa chỉ của một website thì DNS server phân giải
tên website này phải là DNS server của chính tổ chức quản lý website đó chứ
không phải là của một tổ chức (nhà cung cấp dịch vụ) nào khác.
INTERNIC (Internet Network Information Center) chịu trách nhiệm theo
dõi các tên miền và các DNS server tương ứng. INTERNIC là một tổ chức
được thành lập bởi NFS (National Science Foundation), AT&T và Network
Solution, chịu trách nhiệm đăng ký các tên miền của Internet. INTERNIC
chỉ có nhiệm vụ quản lý tất cả các DNS server trên Internet chứ không có
nhiệm vụ phân giải tên cho từng địa chỉ.
DNS có khả năng tra vấn các DNS server khác để có được một cái tên đã
được phân giải. DNS server của mỗi tên miền thường có hai việc khác biệt.
Thứ nhất, chịu trách nhiệm phân giải tên từ các máy bên trong miền về các
địa chỉ Internet, cả bên trong lẫn bên ngoài miền nó quản lý. Thứ hai, chúng
trả lời các DNS server bên ngoài đang cố gắng phân giải những cái tên bên
trong miền nó quản lý. - DNS server có khả năng ghi nhớ lại những tên vừa
phân giải. Để dùng cho những yêu cầu phân giải lần sau. Số lượng những
tên phân giải được lưu lại tùy thuộc vào quy mô của từng DNS.
Cách sử dụng DNS
Do các DNS có tốc độ biên dịch khác nhau, có thể nhanh hoặc có thể chậm, do đó
người sử dụng có thể chọn DNS server để sử dụng cho riêng mình. Có các cách
chọn lựa cho người sử dụng. Sử dụng DNS mặc định của nhà cung cấp dịch vụ
(internet), trường hợp này người sử dụng không cần điền địa chỉ DNS vào network
connections trong máy của mình. Sử dụng DNS server khác (miễn phí hoặc trả
phí) thì phải điền địa chỉ DNS server vào network connections. Địa chỉ DNS
server cũng là 4 nhóm số cách nhau bởi các dấu chấm.
Cấu trúc của gói tin DNS: Gói tin DNS gồm các trường sau:
ID: Là một trường 16 bits, chứa mã nhận dạng, nó được tạo ra bởi một
chương trình để thay cho truy vấn. Gói tin hồi đáp sẽ dựa vào mã nhận
dạng này để hồi đáp lại. Chính vì vậy mà truy vấn và hồi đáp có thể phù
hợp với nhau.
QR: Là một trường 1 bit. Bít này sẽ được thiết lập là 0 nếu là gói tin truy
vấn, được thiết lập là một nếu là gói tin hồi đáp.
Opcode: Là một trường 4 bits, được thiết lập là 0 cho cờ hiệu truy vấn,
được thiết lập là 1 cho truy vấn ngược, và được thiết lập là 2 cho tình trạng
truy vấn.
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
AA: Là trường 1 bit, nếu gói tin hồi đáp được thiết lập là 1, sau đó nó sẽ đi
đến một server có thẫm quyền giải quyết truy vấn.
TC: Là trường 1 bit, trường này sẽ cho biết là gói tin có bị cắt khúc ra do
kích thước gói tin vượt quá băng thông cho phép hay không.
RD: Là trường 1 bit, trường này sẽ cho biết là truy vấn muốn server tiếp tục
truy vấn một cách đệ qui.
RA: Trường 1 bit này sẽ cho biết truy vấn đệ qui có được thực thi trên
server không .
Z: Là trường 1 bit. Đây là một trường dự trữ, và được thiết lập là 0.
Rcode: Là trường 4 bits, gói tin hồi đáp sẽ có thể nhận các giá trị sau :
0: Cho biết là không có lỗi trong quá trình truy vấn.
1: Cho biết định dạng gói tin bị lỗi, server không hiểu được truy vấn.
2: Server bị trục trặc, không thực hiện hồi đáp được.
3: Tên bị lỗi. Chỉ có server có đủ thẩm quyền mới có thể thiết lập giá trị
náy.
4: Không thi hành. Server không thể thực hiện chức năng này .
5: Server từ chồi thực thi truy vấn.
QDcount: Số lần truy vấn của gói tin trong một vấn đề.
ANcount: Số lượng tài nguyên tham gia trong phần trả lời.
NScount: Chỉ ra số lượng tài nguyên được ghi lại trong các phẩn có thẩm
quyền của gói tin.
ARcount: Chỉ ra số lượng tài nguyên ghi lại trong phần thêm vào của gói
tin.
1.4.2. Giao thức cấu hình Host động DHCP ( Dynamic Host Configuration
Protocol).
Khái niệm: DHCP là viết tắt của Dynamic Host Configuration Protocol, là giao
thức Cấu hình Host Động được thiết kế làm giảm thời gian chỉnh cấu hình cho
mạng TCP/IP bằng cách tự động gán các địa chỉ IP cho khách hàng khi họ vào
mạng. Dich vụ DHCP là một thuận lới rất lớn đối với người điều hành mạng. Nó
làm yên tâm về các vấn đề cố hữu phát sinh khi phải khai báo cấu hình thủ công.
Nói một cách tổng quan hơn DHCP là dich vụ mang đến cho chúng ta nhiều lợi
điểm trong công tác quản trị và duy trì một mạng TCP/IP như:
Tập chung quản trị thông tin về cấu hình IP.
+ Cấu hình động các máy.
+ Cấu hình IP cho các máy một cách liền mạch
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
+ Sự linh hoạt
+ Khả năng mở rộng
+ Giảm bớt được các hiện tượng xung đột về IP, hay các lỗi về IP, luôn
đảm bảo cho các máy client được cấu hình đúng.
+ Đơn giản hóa trong công tác quản trị.
Phương thức hoạt động của DHCP.
Dịch vụ DHCP hoạt động theo mô hình Client / Server. Theo đó quá trình
tương tác giữa DHCP client và server sẽ diễn ra theo các bước sau.
B1: Khi máy Client khởi động, máy sẽ gửi broadcast gói tin DHCP
DISCOVER, yêu cầu một Server phục vụ mình. Gói tin này cũng chứa địa chỉ
MAC của client.
Nếu client không liên lạc được với DHCP Server thì sau 4 lần truy vấn
không thành công nó sẽ tự động phát sinh ra 1 địa chỉ IP riêng cho chính mình
nằm trong dãy 169.254.0.0 đến 169.254.255.255 dùng để liên lạc tạm thời. Và
client vẫn duy trì việc phát tín hiệu Broad cast sau mỗi 5 phút để xin cấp IP từ
DHCP Server.
B2: Các máy Server trên mạng khi nhận được yêu cầu đó. Nếu còn khả năng
cung cấp địa chỉ IP, đều gửi lại cho máy Client một gói tin DHCP OFFER, đề
nghị cho thuê một địa chỉ IP trong một khoảng thời gian nhất định, kèm theo là
một Subnet Mask và địa chỉ của Server. Server sẽ không cấp phát đia chỉ IP
vừa đề nghị cho client thuê trông suốt thời gian thương thuyết.
B3:Máy Client sẽ lựa chọn một trong những lời đền nghị ( DHCPOFFER) và
gửi broadcast lại gói tin DHCPREQUEST và chấp nhận lời đề nghị đó. Điều
này cho phép các lời đề nghị không được chấp nhận sẽ được các Server rút lại
và dùng để cấp phát cho các Client khác.
B4: Máy Server được Client chấp nhận sẽ gửi ngược lại một gói tin DHCP
ACK như một lời xác nhận, cho biết địa chỉ IP đó, Subnet Mask đó và thời hạn
cho sử dụng đó sẽ chính thức được áp dụng. Ngoài ra server còn gửi kèm
những thông tin bổ xung như địa chỉ Gateway mặc định, địa chỉ DNS Server...
2. Tìm hiểu về Ipv4
2.1. Khái niệm
Ipv4( Internet Protocol Version 4) là phiên bản thứ 4 trong quá trính phát triển của
các giao thức internet (IP).Đây là phiên bản đầu tiên của IP được sử dụng rộng rãi. IPv4
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
cùng với IPv6 là nòng cốt của giao tiếp internet. Hiên tại Ipv4 vẫn là giao thức được triển
khai rộng rãi nhất trong bộ giao thức của lớp Internet.
Giao thức này được công bố bởi IETF trong phiên bản RFC 791 (tháng 9 năm
1981), thay thế cho phiên bản RFC 760 (công bố vào tháng giêng năm 1980). Giao thức
này cũng được chuẩn hóa bởi bộ quốc phòng Mỹ trong phiên bản MIL-STD-1777.
IPv4 là giao thức hướng dữ liệu, được sử dụng cho hệ thống chuyển mạch gói
(tương tự như chuẩn mạng Ethernet). Đây là giao thức truyền dữ liêu hoạt động dựa trên
nguyên tắc tốt nhất có thể, trong đó, nó không quan tâm đến thứ tự truyền gói tin cũng
như không đảm bảo gói tin sẽ đến đích hay việc gây ra tình trạng lặp gói tin ở đích đến.
Việc xử lý vấn đề này dành cho lớp trên của chồng giao thức TCP/IP. Tuy nhiên, IPv4 có
cơ chế đảm bảo tính toàn vẹn dữ liệu thông qua sử dụng những gói kiểm tra (checksum).
2.2. Cấu trúc địa chỉ của IPv4
2.2.1. Thành phần và khuôn dạng của địa chỉ Ipv4
Ipv4 sử dụng 32 bits để đánh địa chỉ mạng chia thành 4 octet ( Mỗi octet có 8bit
tương đương với 1 Byte). Cách đếm đều từ trái qua phải từ bit 1 đến bit 32.Các Octet
cách biệt nhau bằng một dấu chấm và bao gồm 3 thành phần chính.
Class Bit: Bit nhận dạng lớp dùng để phân biệt địa chỉ IP thuộc lớp nào.
Network ID: Địa chỉ của mạng
Host ID: Địa chỉ của máy
2.2.2. Các lớp địa chỉ Ipv4
Địa chỉ IP chia ra 5 lớp A,B,C, D, E. Hiện tại đã dùng hết lớp A,B và gần hết lớp
C, còn lớp D và E . Trong đó lớp E được dành riêng cho nghiên cứu.Lớp D được dùng
cho việc phát các thông tin broadcast/multicast .
Cấu trúc của các lớp địa chỉ
Lớp A
Class A IP Address 128126 0255 0255 0255
Subnet Mask 255 0 0 0
Hay
Class A Netword ID Host ID
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Octet 1 2 3 4
Lớp B
Class B IP Address 128191 0255 0255 0255
Subnet Mask 255 255 0 0
Hay
Class B Network ID Host ID
Octet 1 2 3 4
Lớp C
Class C IP Address 192223 0255 0255 0255
Subnet Mask 255 255 255 0
Hay
Class C Network ID Host ID
Octet 1 2 3 4
Lớp D 224 240 Multicast
Class D Host ID
Octet 1 2 3 4
Lớp E 241 255 Research
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Cách xác định lớp của một địa chỉ:
Cách xác định lớp của một địa chỉ
Địa chỉ lớp Bit nhận dạng Dải địa chỉ Số bít dùng để phân cho
mạng
A 0 0.0.0.0 đến 126.0.0.0 8
B 10 127.0.0.0 đến 191.255.0.0 16
C 110 192.0.0.0 đến 223.255.255.0 24
D 1110 224.0.0.0 đến 240.0.0.0 28
E 1111 241.0.0.0 đến 255.0.0.0
Để nhận biết lớp địa chỉ IP, ta chỉ cần nhìn vào các bít đầu tiên của địa chỉ.
Nếu bít đầu tiên là 0 thì đây là địa chỉ IP lớp A.
Nếu bít đầu tiên là 1 và bít thứ hai là 0 thì đây là địa chỉ lớp B.
Nếu hai bít đầu tiên là 1 và bít thứ ba là 0 thì đây là địa chỉ lớp C.
Nếu ba bít đầu tiên là 1 và bít thứ tư là 0 thì đây là địa chỉ lớp D.
Nếu bốn bít đầu tiên là 1 thì đây là địa chỉ lớp E.
Nếu địa chỉ được biểu diễn dưới dạng thập phân dấu chấm, bạn chỉ cần nhìn số
đầu tiên để xác định lớp địa chỉ.
Nếu số đầu nằm trong khoảng từ 0 đến 127 thì đây là lớp A.
Nếu số đầu nằm trong khoảng từ 128 đến 191 thì đây là lớp B.
Nếu số đầu nằm trong khoảng từ 192 đến 223 thì đây là lớp C.
Nếu số đầu nằm trong khoảng từ 224 đến 239 thì đây là lớp D.
Nếu số đầu nằm trong khoảng từ 240 đến 255 thì đây là lớp E
2.2.3. Cấu trúc của gói tin IP
Version Header
length
Type of
service
Total length
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Identification Flags Fragment offset
Time to live Protocol Header checksum
32-bit source address
32-bit destination address
Options Padding
Các gói IP bao gồm dữ liệu từ lớp bên trên đưa xuống và thêm vào một IP
Header.IP Header gồm các thành phần sau:
Version chỉ ra phiên bản hiện hành của IP đang được dùng, có 4 bit. Nếu
trường này khác với phiên bản IP của thiết bị nhận, thiết bị nhận sẽ từ chối
và loại bỏ các gói tin này.
IP Header Length (HLEN) – Chỉ ra chiều dài của header theo các từ 32 bit.
Đây là chiều dài của tất cảc các thông tin Header.
Type Of Services (TOS): Chỉ ra tầm quan trọng được gán bởi một giao thức
lớp trên đặc biệt nào đó, có 8 bit.
Total Length – Chỉ ra chiều dài của toàn bộ gói tính theo byte, bao gồm dữ
liệu và header,có 16 bit..Để biết chiều dài của dữ liệu chỉ cần lấy tổng
chiều dài này trừ đi HLEN.
Identification – Chứa một số nguyên định danh hiện hành, có 16 bit. Đây là
chỉ số tuần tự.
Flag – Một field có 3 bit, trong đó có 2 bit có thứ tự thấp điều khiển sự
phân mảnh. Một bit cho biết gói có bị phân mảnh hay không và gói kia cho
biết gói có phải là mảnh cuối cùng của chuỗi gói bị phân mảnh hay không.
Fragment Offset – Được dùng để ghép các mảnh Datagram lai với nhau, có
13 bit.
Time To Live (TTL) – Chỉ ra số bước nhảy (hop) mà một gói có thể đi
qua.Con số này sẽ giảm đi một khi một gói tin đi qua một router. Khi bộ
đếm đạt tới 0 gói này sẽ bị loại. Đây là giải pháp nhằm ngăn chặn tình
trạng lặp vòng vô hạn của gói nào đó.
Protocol – Chỉ ra giao thức lớp trên, chẳng hạn như TCP hay UDP, tiếp
nhận các gói tin khi công đoạn xử lí IP hoàn tất, có 8 bit.
· Header CheckSum – Giúp bảo dảm sự toàn vẹn của IP Header, có 16 bit.
Source Address – Chỉ ra địa chỉ của node truyền diagram, có 32 bit.
Destination Address – Chỉ ra địa chỉ IP của Node nhận, có 32 bit.
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Padding – Các số 0 được bổ sung vào field này để đảm bảo IP Header luôn
la bội số của 32 bit.
Data – Chứa thông tin lớp trên, chiều dài thay đổi đến 64Kb.
Trong khi địa chỉ IP của nguồn và đích là quan trong của hoạt động của IP, các
trường khác làm cho IP rất linh hoạt.Các Header Field là thông tin được cung cấp
cho các giao thức lớp trên xác định dữ liệu đóng gói.
3. IP address
3.1. Nguyên tắc đánh địa chỉ IP
Mỗi mạng LAN có địa chỉ mạng riêng biệt và được ngăn cách bởi Router.
Các máy trạm ( Kể cả router) nằm trong mạng LAN có chung địa chỉ mạng ,còn
địa chỉ máy trạm khác nhau.
Phân loại địa chỉ IP.
Địa chỉ public: + Dùng để trao đổi trên Internet
+ Địa chỉ thật
Địa chỉ private : + Dùng để đánh địa chỉ cho các mạng LAN bên trong 1
tổ chức
+ Địa chỉ ảo.
Địa chỉ loopback: 127.0.0.0127.255.255.255
Bảng thông tin về địa chỉ Private của các lớp A,B,C
Class Address (range) Network Total private Host
A 10.0.0.0 1 16,777,214
B 172.16.0.0-172.31.0.0 16 1,048,544
C 192.168.0.0-192.168.255.0 256 65,024
3.2. Subnetting
Khái niệm: Subnetting là chia nhỏ một mạng thành nhiều mạng con với nhiều địa
chỉ mạng con.
Subnetting thường được biểu diễn bằng địa chỉ IP kèm theo “mặt nạ
mạng”(Subnet Mask) .
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Cách biểu diễn địa chỉ mạng : a.b.c.d/x trong đó a,b,c,d là địa chỉ mạng , x là số
bit của địa chỉ mạng.
Ví dụ: 172.168.121.0/24 mạng có địa chỉ là 172.168.121.0 với phần địa
chỉ mạng dài 24 bits
Lý do chia subnet:
� + Giảm số lượng node
+ Tăng thông lượng mạng
� + Tăng tính bảo mật
� + Dễ quản trị
� + Dễ bảo trì
� + Tránh lãng phí địa chỉ IP
Qui tắc chia subnet.
+ Mượn các bit đầu trong HostID làm NetID
+ Số subnet=2^n ( n : số bit vay mượn phần host ID).
Lên kế hoạch cho việc chi subnet
+ Số subnet cần chia
+Số node trong mỗi subnet
Để thực hiện subnetting ta thực hiện theo các bước sau
+ Xác định subnet mask mới
+ Liệt kê ID của các subnet mới
+ Cho biết IP address range của các HostID trong mỗi subnet
Để hiểu rõ hơn về việc chia subnet ta xét một ví dụ cụ thể sau: giả sử công ty A
thuê 1 địa chỉ Ip lớp B là 139.12.0.0/24 .Sau đó công ty muốn chia mạng này
thành 4 mạng con nhỏ hơn.Ta tiến hành công việc như sau.
Bước 1: Xác định Subnet mask mới. Để đếm cho đến 4 trong hệ thống số nhị phân
(cho 4 Subnet) cần phải sử dụng 2 bits. Do đó, Subnet mask sẽ cần 16 (bits trước
đây) +2 (bits mới) = 18 bits. Địa chỉ IP mới sẽ là 139.12.0.0/18 ( ý nghĩa con số 18
tương tự như con số 16 trước đây). Số hosts tối đa có trong mỗi Subnet sẽ là:
2(32-n) - 2
- 2 = 214
–2 = 16,382. Và tổng số các hosts trong 4 Subnets là: 16382 * 4 =
65,528 hosts.
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Bước 2: Liệt kê ID của các Subnet mới . Trong địa chỉ IP mới (139.12.0.0/18) con
số 18 nói đến việc sử dụng 18 bits, đếm từ bên trái qua phải của 32 bits IP address
để biểu diễn địa chỉ IP của một Subnet.
Subnet Mask dạng nhị phân Subnet mask dạng thập phân
11111111 11111111 11000000 00000000 255.255.192.0
Như vậy, NetworkID của bốn Subnets mới đó là:
Subnet Subnet ID dạng nhị phân Subnet ID dạng thập
phân
1 10001011.00001100.00000000.00000000 139.12.0.0/18
2 10001011.00001100.01000000.00000000 139.12.64.0/18
3 10001011.00001100.10000000.00000000 139.12.128.0/18
4 10001011.00001100.11000000.00000000 139.12.192.0/18
Bước 3: Cho biết IP address range của các HostID trong mỗi Subnet. Vì Subnet
ID đã dùng hết 18 bits nên số bits còn lại (32 - 18 = 14) được dùng cho HostID.
Theo luật thì Subnet mask cho Host ID là tất cả mọi bits đều là bit "0" và phần
NetID đều là bit "1".
Subnet IP range dạng nhị phân Ip range dạng thập
phân
1 10001011.00001100.00000000.00000001-
10001011.00001100.00111111.11111110
139.12.0.1/18-
139.12.63.254/18
2 10001011.00001100.01000000.00000001-
10001011.00001100.01111111.11111110
139.12.64.1/18-
139.12.127.254/18
3 10001011.00001100.10000000.00000001-
10001011.00001100.10111111.11111110
139.12.128.1/18-
139.12.191.254/18
4 10001011.0001100.110000000.00000001- 139.12.192.1/18-
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
10001011.0001100.111111111.11111110 139.12.255.254
3.3. Supernetting
Cho phép nhóm nhiều segment con thành một segment lớn hơn.
Mục đích của supernetting.
Tiết kiệm vùng địa chỉ
Giảm số bản ghi trong bảng định tuyến
Chú ý: super netting chỉ được phép khi tất cả các segment con cùng nằm
trên một hướng
Ví dụ : Tại bảng định tuyến của Router ta có các mạng sau:
207.46.168.0/24
207.46.169.0/24
207.46.170.0/24
207.46.171.0/24
207.46.172.0/24
207.46.172.0/24
207.46.174.0/24
207.46.175.0/24
207.46.168.0/21
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Hình bên dưới sẽ minh họa cho phần này:
4. Giao thức ICMP
4.1. Giới thiệu:
Thuật ngữ ICMP là từ viết tắt của Internetwork Control Message Protocol là một
giao thức hoạt động trên lớp Network (lớp 3) trong mô hình OSI và được định nghĩa tại
RFC 792.
ICMP là giao thức được sử dụng để báo cáo các vấn đề về gửi và nhận gói dữ liệu
trong một mạng, hiển thị phản ứng khi không thể truy cập vào mạng, khi một nốt mạng bị
quá tải, lỗi xảy ra trong quá trình truyền,vv.... ICMP được sử dụng thường xuyên để xác
định các hoạt động chính xác của hệ thống, kiểm tra xem router có định tuyến các gói tin
đến đúng địa chỉ đích đã được xác đinh hay không. Việc sử dụng phổ biến nhất của
ICMP là lệnh Ping, trong đó kiểm tra xem máy có đáp ứng bằng cách gửi một tin nhắn
icmp nhỏ tới máy và chờ đợi câu trả lời.
4.2. Định dạng của bản tin ICMP
ICMP có nhiều bản tin với nội dung khác nhau tùy thuộc vào từng loại bản tin, tuy
nhiên tất cả các bản tin đều có phần header bắt đầu bởi 3 trường: Type, Code, và
Checksum. Phần còn lại của bản tin có nội dung phụ thuộc vào Type và Code của bản tin.
Type (8 bit) Code (8 bit) Checksum (16 bit)
Phần còn lại của header
Nội dung bản tin
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Type (8 bit đầu) dùng để chỉ loại thông điệp ICMP
Code (8 bit kế tiếp) dùng để chỉ mã của thông điêp ICMP
Checksum (16 bit cuối) kiểm tra lỗi gói tin
Ý nghĩa của một số loại thông điệp ICMP quan trọng
Loại thông điệp ICMP Ý nghĩa
Detination Unreachable Thông báo cho máy nguồn biết có vấn đề trong
việc phân phối gói tin.
Time Exceed Thời gian chuyển gói tin quá lớn, gói tin bị loại
bỏ.
Source Quench Máy nguồn đang gửi dữ liệu nhanh hơn mức mà
máy đích có thể xử lý. Thông điệp này yêu cầu
máy nguồn gửi chậm lại.
Redirect Một router thông báo cho một host một địa chỉ
router khác tốt hơn.
Echo Được dùng bởi lệnh ping để kiểm tra kết nối.
Address/mask request/reply Được dùng để học và để truy vấn địa chỉ IP/mask
được dùng.
Router Advertisement and
Selection
Được dùng để cho phép các host học địa chỉ IP
của các router gắn vào subnet.
Các bản tin ICMP, theo RFC 792
Type Code Description
0 0 Echo Reply
3 0 Net Unreachable
1 Host Unreachable
2 Protocol Unreachable
3 Port Unreachable
4 Frag needed and DF set
5 Source route failed
6 Dest network unknown
7 Dest host unknown
8 Source host isolated
9 Network admin prohibited
10 Host admin prohibited
11 Network unreachable for TOS
12 Host unreachable for TOS
13 Communication admin prohibited
14 Host Precedence Violation
15 Precedence cut-off in effect
4 0 Source Quench
5 0 Redirect datagram for the network
1 Redirect datagram for the host
2 Redirect datagram for the TOS & network
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
3 Redirect datagram for the TOS & host
8 0 Echo
9 0 Router advertisement
10 0 Router selection
11 0 Time to live exceeded in transit
1 Fragment reassembly time exceeded
12 0 Pointer indicates the error (parameter problem)
1 Missing a required option (parameter problem)
2 Bad length (parameter problem)
13 0 Time stamp
14 0 Time stamp reply
15 0 Information request
16 0 Information reply
17 0 Address mask request
18 0 Address mask reply
30 0 Traceroute (tracert)
31 Datagram conversion error
32 Movble host redirect
33 IPv6 Where are you
34 IPv6 I am here
35 Mobile registration request
36 Mobile registration reply
39 SKIP
40 0 Photuris reserved
1 Photuris unknown security parameters index
2 Photuris valid security parameters, but auth. Failed
3 Photuris valid security parameters, but decrypt, failed
5. Giao thức ARP
5.1. Giới thiệu
Một mạng LAN hoạt động dựa trên lớp 1 và lớp 2 trong mô hình OSI (lớp physical và
datalink). Nhưng các giao thức liên mạng (internet-work) lại dựa trên địa chỉ lớp ba (lớp
network). Do đó cần phân giải địa chỉ giữa lớp data link và lớp network nhằm giúp cho
việc truyền dữ liệu được liên tục qua mạng.
Có hai phương pháp phân giải địa chỉ là : phân giải trực tiếp và phân giải động. Việc
phân giải trực tiếp gặp nhiều khó khăn do địa chỉ MAC (lớp datalink) là địa chỉ 48 bit
trong khi địa chỉ IP là 32 bit. Bên cạnh đó các nhà phát triển muốn tạo ra một cơ chế linh
hoạt trong sử dụng. Chính vì vậy họ phát triển ARP (Address Resolution Protocol). Giao
thức này được định nghĩa trong RFC 826.
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
ARP là phương thức phân giải địa chỉ động giữa địa chỉ lớp network và địa chỉ lớp
datalink. Quá trình thực hiện bằng cách: một thiết bị IP trong mạng gửi một gói tin
broadcast đến toàn mạng yêu cầu thiết bị khác gửi trả lại địa chỉ phần cứng (địa chỉ lớp
datalink) của mình.
Ban đầu ARP chỉ được sử dụng trong mạng Ethernet để phân giải địa chỉ IP và địa chỉ
MAC. Nhưng ngày nay ARP đã được ứng dụng rộng rãi và dùng trong các công nghệ
khác dựa trên lớp hai.
5.2. Định dạng của bản tin ARP
Bản tin ARP bao gồm các trường: Hardware type, Protocol type, Hardware address
length, Protocol address length, Operation code và 4 trường chưa địa chỉ Source
Hardware Address, Source Protocol Address, Target Hardware Address, Target Protocol
Address.
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Hardware type và protocol type là trường quy định kiểu của phần cứng và của
protocol được dùng ở lớp network
Opcode là trường cho biết bản tin ARP là yêu cầu (=1) hay phúc đáp (=2)
Hardware Address length là trường chứa độ dài của địa chỉ vật lí
Protocol address length là trường chứa độ dài của địa chỉ logic
Bốn trường còn lại là địa chỉ vật lí và địa chỉ logic nguồn và đích.
Source Hardware Address : địa chỉ lớp 2 của thiết bị gửi bản tin
Source Protocol Address : Địa chỉ lớp 3 ( hay địa chỉ logic ) của thiết bị gửi bản
tin
Target Hardware Address : Địa chỉ lớp 2 ( địa chỉ phần cứng ) của thiết bị đích của
bản tin
Target Protocol Address : Địa chỉ lớp 3 ( hay địa chỉ logic ) của thiết bị đích của
bản tin
5.3. Cơ chế hoạt động
ARP về cơ bản là một quá trình 2 chiều request/response giữa các thiết bị trong cùng
mạng nội bộ. Thiết bị nguồn request bằng cách gửi một bản tin broadcast trên toàn mạng.
Thiết bị đích response bằng một bản tin unicast đến thiết bị nguồn
Có hai dạng bản tin trong ARP: một được gửi từ nguồn đến đích, và một được gửi từ
đích tới nguồn.
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Request : Khởi tạo quá trình, gói tin được gửi từ thiết bị nguồn tới thiết bị đích
Reply : Là quá trình đáp trả gói tin ARP request, được gửi từ máy đích đến máy
nguồn
Các bước hoạt động của ARP :
Bước 1 Source Device Checks Cache : Trong bước này, thiết bị sẽ kiểm tra cache ( bộ
đệm ) của mình. Nếu đã có địa chỉ IP đích tương ứng với MAC nào đó rồi thì lập tức
chuyển lên bước 9
Bước 2. Source Device Generates ARP Request Message: Bắt đầu khởi tạo gói tin
ARP Request với các trường địa chỉ như trên.
Bước 3. Source Device Broadcasts ARP Request Message: Thiết bị nguồn quảng bá
gói tin ARP Request trên toàn mạng.
Bước 4. Local Devices Process ARP Request Message: Các thiết bị trong mạng đều
nhận được gói tin ARP Request. Gói tin được xử lý bằng cách các thiết bị đều nhìn vào
trường địa chỉ Target Protocol Address. Nếu trùng với địa chỉ của mình thì tiếp tục xử lý,
nếu không thì hủy gói tin.
Bước 5. Destination Device Generates ARP Reply Message: Thiết bị với IP trùng với
IP trong trường Target Protocol Address sẽ bắt đầu quá trình khởi tạo gói tin ARP Reply
bằng cách lấy các trường Sender Hardware Address và Sender Protocol Address trong
gói tin ARP nhận được đưa vào làm Target trong gói tin gửi đi. Đồng thời thiết bị sẽ lấy
địa chỉ datalink của mình để đưa vào trường Sender Hardware Address.
Bước 6. Destination Device Updates ARP Cache : Thiết bị đích (thiết bị khởi tạo gói
tin ARP Reply) đồng thời cập nhật bảng ánh xạ địa chỉ IP và MAC của thiết bị nguồn vào
bảng ARP cache của mình để giảm bớt thời gian xử lý cho các lần sau.
Bước 7. Destination Device Sends ARP Reply Message : Thiết bị đích bắt đầu gửi gói
tin Reply đã được khởi tạo đến thiết bị nguồn. Gói tin reply là gói tin gửi unicast.
Bước 8. Source Device Processes ARP Reply Message : Thiết bị nguồn nhận được
gói tin reply và xử lý bằng cách lưu trường Sender Hardware Address trong gói reply như
địa chỉ phần cứng của thiết bị đích.
Bước 9. Source Device Updates ARP Cache : Thiết bị nguồn update vào ARP cache
của mình giá trị tương ứng giữa địa chỉ network và địa chỉ datalink của thiết bị đích. Lần
sau sẽ không còn cần tới request.
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
B. Ứng Dụng
Lập trình mô phỏng mô hình mạng Token BUS LAN
1. Mạng cục bộ (LAN):
Kết nối các máy tính đơn lẻ thành mạng nội bộ, tạo khả năng trao đôi thông tin
và chia sẻ tài nguyên trong cơ quan xí nghiệp. Trong khuôn khổ bài tập lớn ta xét
mô hình mạng Token – Bus LAN
Mạng hình bus hoạt động theo kiểu quảng bá ( broadcast). Tất cả các node truy
nhập chung trên một đường truyền vật lí có đầu cuối ( BUS). Phương thức truy
nhập đường truyền được sử dụng trong mạng hình BUS là Token bus hoặc
CSMA/CD.
2. Phương pháp Token Bus
Phương pháp truy nhập có điểu khiển dùng kỹ thuật “chuyển thẻ bài” để cấp
phát quyền truy nhập đường truyền. Thẻ bài (Token) là một đơn vị dữ liệu đặc
biệt, có kíchthước và có chứa các thông tin điều khiển trong các khuôn dạng. Thẻ
bài dùng để quản lí và điều khiển quá trình truyền tải thông tin của các trạm trên
bus.Ta xét một ví dụ về Token bus:
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Nguyên lý: Để cấp phát quyền truy nhập đường truyền cho các trạm đang có nhu
cầu truyền dữ liệu,một thẻ bài được lưu chuyển trên một vòng logic thiết lập bởi
các trạm đó. Khi một trạm nhận được thẻ bài thì nó có quyền sử dụng đường
truyền trong một thời gian định trước. Trong thời gian đó nó có thể truyền một
hoặc nhiều đơn vị dữ liệu. Khi đã hết dữ liệu hay hết thời đoạn cho phép, trạm
phải chuyển thẻ bài đến trạm tiếp theo trong vòng logic. Như vậy công việc phải
làm đầu tiên là thiết lập vòng logic (hay còn gọi là vòng ảo) bao gồm các trạm
đang có nhu cầu truyền dữ liệu được xác định vị trí theo một chuỗi thứ tự mà trạm
cuối cùng của chuỗi sẽ tiếp liền sau bởi trạm đầu tiên. Mỗi trạm được biết địa chỉ
của các trạm kề trước và sau nó. Thứ tự của các trạm trên vòng logic có thể độc
lập với thứ tự vật lý.Các trạm không hoặc chưa có nhu cầu truyền dữliệu thì không
được đưa vào vòng logic và chúng chỉ có thể tiếp nhận dữ liệu.Ta sẽ mô tả hoạt
động của sơ đồ trên bằng hình ảnh với giả thiết như hình vẽ:
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Hình a: Bus và vòng logic
Hình b:Sắp xếp theo thứ tự giảm dần của địa chỉ trạm
Hình c:Trạm 112 không có nhu cầu gửi dữ liệu nó chuyển thẻ bài đến trạm 90
Hình d:Trạm 90 không có nhu cầu gửi dữ liệu nên chuyển thẻ bài đến trạm 70
Hình e:Trạm 70 gửi dữ liệu đến trạm 112
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Hình f:Trạm 70 gửi thẻ bài đến trạm 45
Lưu ý rằng:Trong cấu hình bus thì việc sắp xếp dựa trên các địa chỉ của trạm ví dụ
như sau:
Trong hình vẽ dưới đây, các trạm A, E nằm ngoài vòng logic, chỉ có thể tiếp nhận
dữ liệu dành cho chúng.
Mỗi trạm chứa ID của phần tử logic hiện thời(logical predecessor) và ID
của phần tử kế tiếp(logical successor).Ví dụ:
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Vấn đề quan trọng là phải duy trì được vòng logic tuỳ theo trạng thái thực
tế của mạng tại thời điểm nào đó. Cụ thể cần phải thực hiện các chức năng sau:
Bổ sung một trạm vào vòng logic: các trạm nằm ngoài vòng logic cần được
xem xét định kỳ để nếu có nhu cầu truyền dữ liệu thì bổ sung vào vòng
logic.
Loại bỏ một trạm khỏi vòng logic: Khi một trạm không còn nhu cầu truyền
dữliệu cần loại nó ra khỏi vòng logic để tối ưu hoá việc điều khiển truy
nhập bằng thẻ bài
Quản lý lỗi: một số lỗi có thể xảy ra, chẳng hạn trùng địa chỉ (hai trạm đều
nghĩ rằng đến lượt mình) hoặc “đứt vòng” (không trạm nào nghĩ đến lượt
mình)
Khởi tạo vòng logic: Khi cài đặt mạng hoặc sau khi “đứt vòng”, cần phải
khởi tạo lại vòng.
Các giải thuật cho các chức năng trên có thể làm như sau:
Bổ sung một trạm vào vòng logic, mỗi trạm trong vòng có trách nhiệm định
kỳtạo cơ hội cho các trạm mới nhập vào vòng. Khi chuyển thẻ bài đi, trạm
sẽ gửi thông báo “tìm trạm đứng sau” để mời các trạm (có địa chỉ giữa nó
và trạm kế tiếp nếu có) gửi yêu cầu nhập vòng.Nếu sau một thời gian xác
định trước mà không có yêu cầu nào thì trạm sẽ chuyển thẻ bài tới trạm kề
sau nó như thường lệ.Nếu có yêu cầu thì trạm gửi thẻ bài sẽghi nhận trạm
yêu cầu trở thành trạm đứng kề sau nó và chuyển thẻ bài tới trạm mới
này.Nếu có hơn một trạm yêu cầu nhập vòng thì trạm giữ thẻ bài sẽ phải
lựa chọn theo giải thuật nào đó. Ta sẽ minh họa giải thuật này bằng hình vẽ
sau:
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Trạm 4 gửi bản tin Solicit successor1(myID, mySucc) đến nút 1:
Nút 2 muốn tham gia vòng= gửi trả lời:
Nút 2 đã được thêm vào sẽ gửi bản tin Set successor():
Nút vừa thêm vào phải làm cho nút kế sau(nút 1) biết đến nó:
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Loại một trạm khỏi vòng logic: Một trạm muốn ra khỏi vòng logic sẽ đợi
đến khi nhận được thẻ bài sẽ gửi thông báo “nối trạm đứng sau” tới trạm kề
trước nó yêu cầu trạm này nối trực tiếp với trạm kề sau nó.Ta sẽ minh họa
bằng sơ đồ sa u:
Nút 4 sẽ gửi bản tin Set successor(my Successor) tới predecessor
của nó.
Nút được khai báo sẽ làm cho chính nó biết được nút kế tiếp mới:
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
�Quản lý lỗi: Để giải quyết các tình huống bất ngờ. Chẳng hạn, trạm đó
nhận được tín hiệu cho thấy đã có các trạm khác có thẻ bài. Lập tức nó phải
chuyển sang trạng thái nghe (bị động, chờ dữ liệu hoặc thẻ bài). Hoặc sau
khi kết thúc truyền dữ liệu, trạm phải chuyển thẻ bài tới trạm kề sau nó và
tiếp tục nghe xem trạm kề sau đó có hoạt động hay đã bị hư hỏng.Nếu trạm
kề sau bị hỏng thì phải tìm cách gửi các thông báo để vượt qua trạm hỏng
đó, tìm trạm hoạt động để gửi thẻ bài.
Khởi tạo vòng logic: Khi một trạm hay nhiều trạm phát hiện thấy đường
truyền không hoạt động trong một khoảng thời gian vượt quá một giá trị
ngưỡng (time out) cho rước - thẻ bài bị mất (có thể do mạng bị mất nguồn
hoặc trạm giữ thẻ bài bị hỏng). Lúc đó trạm phát hiện sẽ gửi đi thông báo
“yêu cầu thẻ bài” tới một trạm được chỉ định trước có trách nhiệm sinh thẻ
bài mới và chuyển đi theo vòng logic.
Ưu nhược điểm của phương pháp
Độ phức tạp của phương pháp dùng thẻ bài lớn hơn nhiều so với phương
pháp truy cập ngẫu nhiên CSMA/CD, xử lí đơn giản hơn. Trong điều kiện tải nhẹ
phương pháp thẻ bài có hiệu quả không cao do một trạm có thể đợi khá lâu mới
đến lượt ( có thẻ bài ) . Ngược lại: trong điều kiện tải nặng phương pháp dùng thẻ
bài hiệu quả hơn so với CSMA/CD. Ưu điểm lớn nhất của phương pháp dùng thẻ
bài là khả năng điều hòa lưu thông trong mạng bằng cách cho phép các trạm
truyền số lượng lớn đơn vị dữ liệu khác nhau khi nhận được thẻ bài bằng cách lập
chế độ ưu tiên cấp phát cho các trạm cho trước.
Chuẩn Token Bus – LAN là IEEE 802.4 trước đây nó thường được sử dụng
trong công nghiệp nhưng hiện nay hầu như không còn được sử dụng nữa
3. Th c hiện mô ph ng:
Để làm rõ hoạt động của sự hoạt động của Token bus nhóm em đã sử dụng
công cụ mô phỏng là NS2 một công cụ khá phổ biến và hiệu quả cho việc mô
phỏng mạng.Giải thuật cho mô phỏng Token bus bằng NS2 của nhóm em là:
Tạo một đối tượng mô phỏng,thiết lập băng thông là 0.5 Mb và kích thước
gói là 700.
Định nghĩa màu sắc khác nhau cho các luồng dữ liệu.
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Tạo 7 nút để thiết lập hình dạng mạng,các nút được đánh số từ 0 đến
6,và gán nhãn “Sender”, “Receiver”.
Mở file bám vết nam(nam trace file) và định nghĩa thủ tục finish sau
khi đóng file bám vết và chạy nam trên file bám vết.
Tạo một liên kết 2 hướng giữa các nút và khởi tạo vị trí của các nút
cho việc thiết lập sơ đồ mạng LAN.
Thiết lập lien kết TCP giữa một vài nút và áp dụng các ứng dụng FTP
(FTP Application) trên UDP.
Thiết lập kết nối UDP giữa một vài nút và áp dụng ứng dụng ứng
dụng CBR (CBR Application) trên UDP.
Thiết lập các sự kiện cho việc mô phỏng mạng Token bus (dựa theo
lý thuyết) và xem đồ thị lưu lượng đã tính toán được.
Kết quả của việc mô phỏng:
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Lưu lượng
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
Chạy mô phỏng
Và dưới đây là source toàn bộ chương trình(gồm 1 file là Tokenbus.tcl):
#--------------------------------------------------------------------------------------
#---Tên file : Tokenbus.tcl
---Công cụ mô phỏng NS2
#---Mô phỏng mạng Token bus
---Tạo đối tượng mô phỏng mới-----------------------------------------------
set ns [new Simulator]
#--------------------------------------------------------------------------------------
---Thiết lập bang thong là 0.5Mb
set Bandwidth "0.5Mb"
---Thiết lập kích thước gói là 700
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
set packetsize 700
---Thiết lập khoảng thời gian là 0.004
set intval 0.004
---Khai báo các màu sắc cần dùng khi mô phỏng
$ns color 1 magenta
$ns color 2 seagreen
$ns color 3 deepskyblue
$ns color 4 brown
$ns color 5 salmon
---Khai báo các nút cần dùng cho mô phỏng(dùng vòng lặp) ta dùng 7 ---
nút
foreach i "0 1 2 3 4 5 6" {
set n$i [$ns node]
}
---Thiết lập màu sắc cho 7 nút vừa khai báo ở trên
$n0 color "navy"
$n1 color "salmon"
$n2 color "seagreen"
$n3 color "deepskyblue"
$n4 color "steelblue"
$n5 color "steelblue"
$n6 color "steelblue"
---Gán nhãn cho các nút (nút gửi,nút nhận)
$ns at 0.0 "$n0 label Sender"
$ns at 0.0 "$n1 label Receiver1"
$ns at 0.0 "$n2 label Receiver2"
$ns at 0.0 "$n3 label Receiver3"
---Tạo file phục vụ chức năng bám vết dữ liệu của NAM (network
#---simulation
set nf [open tokenbus.nam w]
$ns namtrace-all $nf
---Mở file bám vết
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
set f [open tokenbus.tr w]
$ns trace-all $f
---Tạo kết nối giữa các nút:-------------------------------------------------
---Tạo kết nối giữa nút 0 và nút 5 với bang thông(0.5Mb) kiểu lien kết ---
là 2 chiều
---tùy chọn Droptail: nếu dung lượng của bộ đệm của hàng đợi đầu ra
---vượt quá thì gói tin cuối cùng sẽ bị loại
$ns duplex-link $n0 $n5 $Bandwidth 30ms DropTail
---Định ngĩa kết nối giữa các nút (tương tự phần trên)
$ns duplex-link $n5 $n2 $Bandwidth 30ms DropTail
$ns duplex-link $n4 $n1 $Bandwidth 30ms DropTail
$ns duplex-link $n4 $n5 $Bandwidth 30ms DropTail
$ns duplex-link $n5 $n6 $Bandwidth 30ms DropTail
$ns duplex-link $n6 $n3 $Bandwidth 30ms DropTail
---Thiết lập vị trí các nút--------------------------------------------------------
$ns duplex-link-op $n0 $n5 orient down
$ns duplex-link-op $n5 $n2 orient down
$ns duplex-link-op $n4 $n1 orient down
$ns duplex-link-op $n4 $n5 orient right
$ns duplex-link-op $n5 $n6 orient right
$ns duplex-link-op $n6 $n3 orient down
---Đặt kích thước hàng đợi cho liên kết (n4-n5) là 10
$ns queue-limit $n4 $n5 10
---Thiết lập các phiên kết nối TCP--------------------------------------------
---Tạo một con trỏ "tcp1" cho tác nhânTCP(một đối tượng trong NS)
set tcp1 [new Agent/TCP]
---Định nghĩa nút nguồn cho kết nối TCP(nút 0)
$ns attach-agent $n0 $tcp1
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
---Tạo con trỏ và nút nguồn(tương tự phần trên)
$tcp1 set fid_ 1 ;
set tcp2 [new Agent/TCP]
$ns attach-agent $n1 $tcp2
$tcp2 set fid_ 1 ;
set tcp3 [new Agent/TCP]
$ns attach-agent $n2 $tcp3
$tcp3 set fid_ 1 ;
set tcp4 [new Agent/TCP]
$ns attach-agent $n3 $tcp4
$tcp4 set fid_ 1 ;
set tcp5 [new Agent/TCP]
$ns attach-agent $n0 $tcp5
$tcp5 set fid_ 1 ;
set tcp6 [new Agent/TCP]
$ns attach-agent $n1 $tcp6
$tcp6 set fid_ 1 ;
set tcp7 [new Agent/TCP]
$ns attach-agent $n2 $tcp7
$tcp7 set fid_ 1 ;
set tcp8 [new Agent/TCP]
$ns attach-agent $n3 $tcp8
$tcp8 set fid_ 1 ;
set tcp9 [new Agent/TCP]
$ns attach-agent $n0 $tcp9
$tcp9 set fid_ 1 ;
set tcp10 [new Agent/TCP]
$ns attach-agent $n1 $tcp10
$tcp10 set fid_ 1 ;
set tcp11 [new Agent/TCP]
$ns attach-agent $n2 $tcp11
$tcp11 set fid_ 1 ;
set tcp12 [new Agent/TCP]
$ns attach-agent $n3 $tcp12
$tcp12 set fid_ 1 ;
---Định nghĩa hoạt động của nút TCP đích và gán nó tới các con trỏ----
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
---Định nghĩa hoạt động của nút TCP đích và gán nó tới các trỏ sink1
set sink1 [new Agent/TCPSink]
---Định nghĩa nút đích
$ns attach-agent $n1 $sink1
---Tương tự phần trên
set sink2 [new Agent/TCPSink]
$ns attach-agent $n2 $sink2
set sink3 [new Agent/TCPSink]
$ns attach-agent $n3 $sink3
set sink4 [new Agent/TCPSink]
$ns attach-agent $n0 $sink4
set sink5 [new Agent/TCPSink]
$ns attach-agent $n1 $sink5
set sink6 [new Agent/TCPSink]
$ns attach-agent $n2 $sink6
set sink7 [new Agent/TCPSink]
$ns attach-agent $n3 $sink7
set sink8 [new Agent/TCPSink]
$ns attach-agent $n0 $sink8
set sink9 [new Agent/TCPSink]
$ns attach-agent $n1 $sink9
set sink10 [new Agent/TCPSink]
$ns attach-agent $n2 $sink10
set sink11 [new Agent/TCPSink]
$ns attach-agent $n3 $sink11
set sink12 [new Agent/TCPSink]
$ns attach-agent $n0 $sink12
---Tạo kết nối giữa nút nguồn và đích-----------------------------------------
---Tạo kết nối giữa tcp1 và sink1
$ns connect $tcp1 $sink1
---Tạo kết nối giữa nút nguồn và nút đích
$ns connect $tcp2 $sink2
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
$ns connect $tcp3 $sink3
$ns connect $tcp4 $sink4
$ns connect $tcp5 $sink5
$ns connect $tcp6 $sink6
$ns connect $tcp7 $sink7
$ns connect $tcp8 $sink8
$ns connect $tcp9 $sink9
$ns connect $tcp10 $sink10
$ns connect $tcp11 $sink11
$ns connect $tcp12 $sink12
---Thiết lập một phiên kết nối FTP trên TC---------------------------------
set ftp1 [new Application/FTP]
$ftp1 attach-agent $tcp1
set ftp2 [new Application/FTP]
$ftp2 attach-agent $tcp2
set ftp3 [new Application/FTP]
$ftp3 attach-agent $tcp3
set ftp4 [new Application/FTP]
$ftp4 attach-agent $tcp4
set ftp5 [new Application/FTP]
$ftp5 attach-agent $tcp5
set ftp6 [new Application/FTP]
$ftp6 attach-agent $tcp6
set ftp7 [new Application/FTP]
$ftp7 attach-agent $tcp7
set ftp8 [new Application/FTP]
$ftp8 attach-agent $tcp8
set ftp9 [new Application/FTP]
$ftp9 attach-agent $tcp9
set ftp10 [new Application/FTP]
$ftp10 attach-agent $tcp10
set ftp11 [new Application/FTP]
$ftp11 attach-agent $tcp11
set ftp12 [new Application/FTP]
$ftp12 attach-agent $tcp12
---Thiết lập phiên kết nối UDP và các phiên kết nối CBR dựa trên UDP
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
#---UDP----------------------------------------------------------------------------
---Thiết lập phiên kết nối UDP0
set udp0 [new Agent/UDP]
$ns attach-agent $n1 $udp0
---Gán nhãn để có thể nhận ra chúng với các màu khác nhau
---Gán cho kết nối UDP một số nhận dạng luồng bằng "2"
$udp0 set fid_ 2 ;
---Gán cho kết nối UDP một số nhận dạng luồng bằng "4"
$tcp7 set fid_ 4 ;
---Thiết lập phiên kết nối CBR dựa trên UDP
set cbr0 [new Application/Traffic/CBR]
$cbr0 attach-agent $udp0
set null0 [new Agent/Null]
$ns attach-agent $n3 $null0
$ns connect $udp0 $null0
#---Thiết lập kích thước gói CRB0
$cbr0 set packetSize_ $packetsize
---Thiết lập khoản thời gian của CRB0
$cbr0 set interval_ $intval
---Thiết lập các UDP và CRB củaUDP(tương tự phần trên)
set udp1 [new Agent/UDP]
$ns attach-agent $n3 $udp1
$udp1 set fid_ 2 ;
$tcp8 set fid_ 4 ;
set cbr1 [new Application/Traffic/CBR]
$cbr1 attach-agent $udp1
set null1 [new Agent/Null]
$ns attach-agent $n0 $null1
$ns connect $udp1 $null1
$cbr1 set packetSize_ $packetsize
$cbr1 set interval_ $intval
set udp2 [new Agent/UDP]
$ns attach-agent $n3 $udp2
$udp2 set fid_ 3 ;
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
$tcp12 set fid_ 4;
set cbr2 [new Application/Traffic/CBR]
$cbr2 attach-agent $udp2
set null2 [new Agent/Null]
$ns attach-agent $n0 $null2
$ns connect $udp2 $null2
$cbr2 set packetSize_ $packetsize
$cbr2 set interval_ $intval
---Thiết lập các sự kiện theo thời gian----------------------------------------
---Các sự kiện của thẻ bài
$ns at 0.05 "$ftp1 start"
$ns at 0.13 "$ns detach-agent $n0 $tcp1;$ns detach-agent $n1 $sink1"
$ns at 3.0 "finish"
$ns at 0.14 "$ftp2 start"
$ns at 0.20 "$ns detach-agent $n1 $tcp2;$ns detach-agent $n2 $sink2"
$ns at 3.0 "finish"
$ns at 0.23 "$ftp3 start"
$ns at 0.30 "$ns detach-agent $n2 $tcp3;$ns detach-agent $n3 $sink3"
$ns at 3.0 "finish"
$ns at 0.33 "$ftp4 start"
$ns at 0.40 "$ns detach-agent $n3 $tcp4;$ns detach-agent $n0 $sink4"
$ns at 3.0 "finish"
$ns at 0.42 "$ftp5 start"
$ns at 0.50 "$ns detach-agent $n0 $tcp5;$ns detach-agent $n1 $sink5"
$ns at 3.0 "finish"
$ns at 0.51 "$ftp6 start"
$ns at 0.60 "$ns detach-agent $n1 $tcp6;$ns detach-agent $n2 $sink6"
$ns at 3.0 "finish"
$ns at 0.62 "$ftp7 start"
$ns at 0.69 "$ns detach-agent $n2 $tcp7;$ns detach-agent $n3 $sink7"
$ns at 3.0 "finish"
$ns at 0.725 "$ftp8 start"
$ns at 0.78 "$ns detach-agent $n3 $tcp8;$ns detach-agent $n0 $sink8"
$ns at 3.0 "finish"
$ns at 0.83 "$ftp9 start"
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
$ns at 0.90 "$ns detach-agent $n0 $tcp9;$ns detach-agent $n1 $sink9"
$ns at 3.0 "finish"
$ns at 0.93 "$ftp10 start"
$ns at 1.0 "$ns detach-agent $n1 $tcp10;$ns detach-agent $n2 $sink10"
$ns at 3.0 "finish"
$ns at 1.03 "$ftp11 start"
$ns at 1.1 "$ns detach-agent $n2 $tcp11;$ns detach-agent $n3 $sink11"
$ns at 3.0 "finish"
$ns at 1.13 "$ftp12 start"
$ns at 1.2 "$ns detach-agent $n3 $tcp12;$ns detach-agent $n0 $sink12"
$ns at 3.0 "finish"
---Các sự kiện của gửi gói dữ liệu
$ns at 0.621 "$cbr0 start"
$ns at 0.69 "$cbr0 stop"
$ns at 0.726 "$cbr1 start"
$ns at 0.78 "$cbr1 stop"
$ns at 1.131 "$cbr2 start"
$ns at 1.2 "$cbr2 stop"
---Định nghĩa thủ tục kết thúc chương trình "finish"------------------------
proc finish {} {
---Từ khóa global dùng để cho biết chúng ta đang dùng các biến được ---
khai báo ngoài thủ tục
global ns nf
---Phương thức simulator "flush-trace" sẽ đổ các trace vào các file
#---tương ứng
$ns flush-trace
---Đóng file bám vết "nf"
close $nf
---Thực thi hàm awk để tính lưu lượng
exec awk {
{
if(($1=="-" && $5=="tcp") || ($1=="-" && $5=="cbr")) {
print $2 "\t" $11
}
Nguồn: http://itepress.com/forum/ns-f53.html => Download source code mô phỏng
ns2,hướng dẫn học ns2
}
} tokenbus.tr > throughput.data
---Thông tin nhóm viết bài tập lớn--------------------------------------------
---Xóa màn hình
exec clear >@ stdout
---Lệnh puts để hiển thị.
puts "\n NHÓM DTTKN-ET1K53 \n "
puts "\n MÔ PHỎNG TOKEN BUS \n"
puts "\n DANH SÁCH THÀNH VIÊN NHÓM DTTKN-ET1K53 \n"
puts "\n Nguyễn Đức Dũng.....SHSV20080497.......Lớp điện tử 1 K53\n"
puts "\n Trần Danh Nam..........SHSV 20081837....Lớp điện tử 1 K53\n"
puts "\n Vũ Văn Tiệp...............SHSV 20082677....Lớp điện tử 1 K53\n"
puts "\n Nguyễn Trọng Toàn..SHSV 20082707.....Lớp điện tử 1 K53\n"
puts "\n Nguyễn Văn Kiệm.....SHSV 20081462.....Lớp điện tử 1 K53\n"
---Thực thi chương trình NAM
exec nam tokenbus.nam &
---Vẽ đồ thị với dữ liệu từ awk đã tính
exec xgraph throughput.data &
---Kết thúc ứng dụng và trả về số 0 như trạng thái của hệ thống
exit 0
}
---Chạy mô phỏng---------------------------------------------------------------
$ns run
---Mô phỏng được viết bởi nhóm DTTKN-ET1K53-----------------------