Đối tượng mạng Pcap/BPF sẽ được gắn với Node1 làm nhiệm vụ nhận tất cả các gói tin ICMP có địa chỉ đích là 206.190.60.37 (đây là địa chỉ của Agent PingResponder) rồi chuyển cho Agent PingResponder, được gắn trên Node2. Sau khi nhận gói tin ICMP từ một máy tính khác trên mạng thực, Agent PingResponder sẽ tạo gói tin ICMP phản hồi và trả lời cho máy yêu cầu thông qua đối tượng mạng Raw IP, được gắn trên Node0.
5.1.3 Kịch bản mô phỏng:
#Tên tệp emping.tcl, có thể tìm thấy tại trong thư mục ns-2.xx\emulate của #hệ thống file của NS-2
# Đặt địa chỉ cho agent PingResponder
set myaddr "206.190.60.37" set delay 158ms
set ns [new Simulator] $ns use-scheduler RealTime
set bpf [new Network/Pcap/Live]; # Sử dụng để đọc gói tin từ mạng thực
$bpf set promisc_ true
set dev2 [$bpf open readonly eth0]
set ipnet [new Network/IP]; # Đưa gói tin ra mạng thực
$ipnet open writeonly
# Chỉ nhận gói tin icmp với địa chỉ đích là myaddr
$bpf filter "icmp and dst $myaddr"
# Tạo các agent tương tác với mạng thực
set ipa [new Agent/Tap]
set echoagent [new Agent/PingResponder] puts "install nets into taps..."
$pfa set fid_ 0 $ipa set fid_ 1 $pfa network $bpf $ipa network $ipnet set node0 [$ns node] set node1 [$ns node] set node2 [$ns node]
# Tạo các đường truyền giữa các node
$ns simplex-link $node0 $node2 1Mb $delay DropTail $ns simplex-link $node2 $node0 1Mb $delay DropTail $ns simplex-link $node1 $node2 1Mb $delay DropTail $ns simplex-link $node2 $node1 1Mb $delay DropTail
$ns attach-agent $node0 $pfa; # Gắn agent pfa lên node0
$ns attach-agent $node1 $ipa; # Gắn agent ipa lên node1 # Gắn agent PingResponder lên node2
$ns attach-agent $node2 $echoagent
# Thiết lập kết nối giữa các agent
$ns simplex-connect $pfa $echoagent $ns simplex-connect $echoagent $ipa
puts "here we go.., listening for pings on addr $myaddr"
$ns run
5.1.4 Cách thực hiện và kết quả mô phỏng
Cách thực hiện: Giả sử chúng ta đã lưu kịch bản mô phỏng ở trên với tên là emping.tcl, khi đó, máy tính A (thực hiện tương tự đối với máy tính B và C) muốn ping đến Agent PingResponder, được cài trên máy tính D có địa chỉ IP là IP_D), cần thực hiện theo thứ tự như sau:
– Tại máy D: thực hiện kịch bản mô phỏng: nse emping.tcl.
– Tại máy A: thêm lệnh định tuyến đến Agent PingResponder và thực hiện Ping:
+ route add 206.190.60.37 IP_D + ping 206.190.60.37
Kết quả:
Bất kỳ một máy tính nào trên mạng thực cũng có thể sử dụng lệnh Ping để ping đến địa chỉ 206.190.60.37 và sau đó sẽ nhận được trả lời từ Agent PingResponder.
Với cách thực hiện tại máy A như trên, chúng tôi nhận kết quả như hình sau: