(OK) Fedora23—NS3—Docker—MANETs—Testing


------------------------------------------------------------------------------------------

[root@localhost ~]# systemctl start docker.service
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
imunes/vroot        latest              01abbc7aab2e        2 days ago          329.1 MB
debian              jessie              bb5d89f9b6cb        9 days ago          125.1 MB
busybox             core                47bcc53f74dc        7 weeks ago         1.113 MB
busybox             latest              47bcc53f74dc        7 weeks ago         1.113 MB
<none>              <none>              b371dc438151        3 months ago        329.1 MB
[root@localhost ~]#

[root@localhost ~]# mkdir /tmp/docker1
[root@localhost ~]# mkdir /tmp/docker2

------------------------------------------------------------------------------------------
Fedora23 + Docker
------------------------------------------------------------------------------------------
[root@localhost ~]# cd /tmp/docker1
[root@localhost docker1]# docker run --rm -it busybox /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1296 (1.2 KiB)  TX bytes:648 (648.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ # ping -c 1 172.17.0.3
PING 172.17.0.3 (172.17.0.3): 56 data bytes
64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.096 ms

--- 172.17.0.3 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.096/0.096/0.096 ms
/ # exit
[root@localhost docker1]#
------------------------------------------------------------------------------------------
[root@localhost ~]# cd /tmp/docker2
[root@localhost docker2]# docker run --rm -it busybox /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:03  
          inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:788 (788.0 B)  TX bytes:648 (648.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ # ping -c 1 172.17.0.2
PING 172.17.0.2 (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.074 ms

--- 172.17.0.2 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.074/0.074/0.074 ms
/ # exit
[root@localhost docker2]#
------------------------------------------------------------------------------------------
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.108.160.1    0.0.0.0         UG    100    0        0 enp13s0
10.3.9.2        10.108.160.1    255.255.255.255 UGH   100    0        0 enp13s0
10.108.160.0    0.0.0.0         255.255.252.0   U     100    0        0 enp13s0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
[root@localhost ~]#
------------------------------------------------------------------------------------------
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
INPUT_direct  all  --  anywhere             anywhere            
INPUT_ZONES_SOURCE  all  --  anywhere             anywhere            
INPUT_ZONES  all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere             ctstate INVALID
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DOCKER-ISOLATION  all  --  anywhere             anywhere            
DOCKER     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             192.168.122.0/24     ctstate RELATED,ESTABLISHED
ACCEPT     all  --  192.168.122.0/24     anywhere            
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
FORWARD_direct  all  --  anywhere             anywhere            
FORWARD_IN_ZONES_SOURCE  all  --  anywhere             anywhere            
FORWARD_IN_ZONES  all  --  anywhere             anywhere            
FORWARD_OUT_ZONES_SOURCE  all  --  anywhere             anywhere            
FORWARD_OUT_ZONES  all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere             ctstate INVALID
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootpc
OUTPUT_direct  all  --  anywhere             anywhere            

Chain DOCKER (1 references)
target     prot opt source               destination         

Chain DOCKER-ISOLATION (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            

Chain FORWARD_IN_ZONES (1 references)
target     prot opt source               destination         
FWDI_FedoraServer  all  --  anywhere             anywhere            [goto]
FWDI_FedoraServer  all  --  anywhere             anywhere            [goto]

Chain FORWARD_IN_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain FORWARD_OUT_ZONES (1 references)
target     prot opt source               destination         
FWDO_FedoraServer  all  --  anywhere             anywhere            [goto]
FWDO_FedoraServer  all  --  anywhere             anywhere            [goto]

Chain FORWARD_OUT_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain FORWARD_direct (1 references)
target     prot opt source               destination         

Chain FWDI_FedoraServer (2 references)
target     prot opt source               destination         
FWDI_FedoraServer_log  all  --  anywhere             anywhere            
FWDI_FedoraServer_deny  all  --  anywhere             anywhere            
FWDI_FedoraServer_allow  all  --  anywhere             anywhere            

Chain FWDI_FedoraServer_allow (1 references)
target     prot opt source               destination         

Chain FWDI_FedoraServer_deny (1 references)
target     prot opt source               destination         

Chain FWDI_FedoraServer_log (1 references)
target     prot opt source               destination         

Chain FWDO_FedoraServer (2 references)
target     prot opt source               destination         
FWDO_FedoraServer_log  all  --  anywhere             anywhere            
FWDO_FedoraServer_deny  all  --  anywhere             anywhere            
FWDO_FedoraServer_allow  all  --  anywhere             anywhere            

Chain FWDO_FedoraServer_allow (1 references)
target     prot opt source               destination         

Chain FWDO_FedoraServer_deny (1 references)
target     prot opt source               destination         

Chain FWDO_FedoraServer_log (1 references)
target     prot opt source               destination         

Chain INPUT_ZONES (1 references)
target     prot opt source               destination         
IN_FedoraServer  all  --  anywhere             anywhere            [goto]
IN_FedoraServer  all  --  anywhere             anywhere            [goto]

Chain INPUT_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain INPUT_direct (1 references)
target     prot opt source               destination         

Chain IN_FedoraServer (2 references)
target     prot opt source               destination         
IN_FedoraServer_log  all  --  anywhere             anywhere            
IN_FedoraServer_deny  all  --  anywhere             anywhere            
IN_FedoraServer_allow  all  --  anywhere             anywhere            

Chain IN_FedoraServer_allow (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW

Chain IN_FedoraServer_deny (1 references)
target     prot opt source               destination         

Chain IN_FedoraServer_log (1 references)
target     prot opt source               destination         

Chain OUTPUT_direct (1 references)
target     prot opt source               destination         
[root@localhost ~]#
------------------------------------------------------------------------------------------
/ # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.17.0.1      0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
/ # exit
[root@localhost docker1]#
------------------------------------------------------------------------------------------
/ # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.17.0.1      0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
/ # exit
[root@localhost docker2]#
------------------------------------------------------------------------------------------



------------------------------------------------------------------------------------------
Fedora23 + Docker + NS3
------------------------------------------------------------------------------------------
[root@localhost docker1]# docker run -it --rm --net='none' busybox /bin/sh
[root@localhost docker2]# docker run -it --rm --net='none' busybox /bin/sh

[root@localhost ~]# docker ps
CONTAINER ID     IMAGE      COMMAND      CREATED           STATUS          PORTS    NAMES
a90dfb953634     busybox    "/bin/sh"    36 seconds ago    Up 35 seconds            mad_bardeen
ef61724a4338     busybox    "/bin/sh"    41 seconds ago    Up 40 seconds            small_lalande


//get PID of CONTAINER
[root@localhost ~]# docker inspect -f "{{.State.Pid}}" mad_bardeen
25493
[root@localhost ~]# docker inspect -f "{{.State.Pid}}" small_lalande
25454
[root@localhost ~]#

[root@localhost ~]# man ip-netns
       By convention a named network namespace is an object at /var/run/netns/NAME that can be opened. The file
       descriptor resulting from opening /var/run/netns/NAME refers to the specified network namespace. Holding that
       file descriptor open keeps the network namespace alive. The file descriptor can be used with the setns(2) sys‐
       tem call to change the network namespace associated with a task.

[root@localhost ~]#
ln -s /proc/25493/ns/net /var/run/netns/25493
ln -s /proc/25454/ns/net /var/run/netns/25454

------------------------------------------------------------------------------------------
https://www.nsnam.org/wiki/HOWTO_Use_Linux_Containers_to_set_up_virtual_networks
http://yaxin-cn.github.io/Docker/docker-container-use-static-IP.html

[root@localhost ~]#
brctl addbr br-left
brctl addbr br-right

tunctl -t tap-left
tunctl -t tap-right

ifconfig tap-left 0.0.0.0 promisc up
ifconfig tap-right 0.0.0.0 promisc up

ip link add veth_0dfb953634 type veth peer name X
brctl addif br-left veth_0dfb953634
ip link set veth_0dfb953634 up
ip link set X netns 25493

ip link add veth_61724a4338 type veth peer name Y
brctl addif br-right veth_61724a4338
ip link set veth_61724a4338 up
ip link set Y netns 25454


------------------------------------------------------------------------------------------
[root@localhost docker2]# docker run -it --rm --net='none' busybox /bin/sh
/ # ifconfig -a
X         Link encap:Ethernet  HWaddr E6:64:96:C9:F5:DF  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ #
------------------------------------------------------------------------------------------
[root@localhost docker1]# docker run -it --rm --net='none' busybox /bin/sh
/ # ifconfig -a
Y         Link encap:Ethernet  HWaddr BE:32:10:48:A6:EE  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ #
------------------------------------------------------------------------------------------
[root@localhost ~]#

brctl addif br-left tap-left
ifconfig br-left up
brctl addif br-right tap-right
ifconfig br-right up


[root@localhost ~]# brctl show
bridge name    bridge id                        STP enabled    interfaces
br-left              8000.5ea947f3ed2c        no                   tap-left
                                                                                 veth_0dfb953634
br-right            8000.16168007f70a        no                   tap-right
                                                                                 veth_61724a4338
docker0          8000.0242e1664909        no        
virbr0              8000.525400b558ab        yes                 virbr0-nic




ip netns exec 25493 ip link set dev X name eth0
ip netns exec 25493 ip link set eth0 up
ip netns exec 25493 ip addr add 172.17.0.1/16 dev eth0
//ip netns exec 25493 ip route add default via 172.17.42.1

ip netns exec 25454 ip link set dev Y name eth0
ip netns exec 25454 ip link set eth0 up
ip netns exec 25454 ip addr add 172.17.0.2/16 dev eth0
//ip netns exec 25454 ip route add default via 172.17.42.1

------------------------------------------------------------------------------------------
/ # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
/ #
------------------------------------------------------------------------------------------

//You will also have to make sure that your kernel has ethernet filtering (ebtables, bridge-nf, arptables) disabled. If you do not do this, only STP and ARP traffic will be allowed to flow across your bridge and your whole scenario will not work.

[root@localhost ~]#

cd /proc/sys/net/bridge
for f in bridge-nf-*; do echo 0 > $f; done
cd -
------------------------------------------------------------------------------------------
172.17.0.2 can not ping 172.17.0.1
------------------------------------------------------------------------------------------
/ # ping 172.17.0.1
PING 172.17.0.1 (172.17.0.1): 56 data bytes
^C
--- 172.17.0.1 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss

------------------------------------------------------------------------------------------
[root@localhost ns-3.25]# pwd
/opt/tools/network_simulators/ns3/ns-allinone-3.25/ns-3.25
[root@localhost ns-3.25]#

// ./waf clean
// ./waf configure --enable-examples --enable-tests
// ./waf clean
// ./waf configure --build-profile=optimized --enable-examples --enable-tests
// ./waf clean
// ./waf configure --build-profile=debug --enable-examples --enable-tests     //use this command
// ./waf     //build the debug versions of the ns-3 programs, will take a long time

./waf --run tap-csma-virtual-machine

./waf --run tap-wifi-virtual-machine

------------------------------------------------------------------------------------------
172.17.0.2 can ping 172.17.0.1 successfully
------------------------------------------------------------------------------------------
/ # ping 172.17.0.1
PING 172.17.0.1 (172.17.0.1): 56 data bytes
64 bytes from 172.17.0.1: seq=0 ttl=64 time=0.619 ms
64 bytes from 172.17.0.1: seq=1 ttl=64 time=0.363 ms
^C
--- 172.17.0.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.363/0.491/0.619 ms
/ #
------------------------------------------------------------------------------------------
ifconfig br-left down
ifconfig br-right down
brctl delif br-left tap-left
brctl delif br-right tap-right
brctl delbr br-left
brctl delbr br-right

ifconfig tap-left down
ifconfig tap-right down
tunctl -d tap-left
tunctl -d tap-right
------------------------------------------------------------------------------------------
So far, OK
------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------




------------------------------------------------------------------------------------------
Fedora23 + Docker + NS3 + MANETs - preparing
------------------------------------------------------------------------------------------
[root@localhost ns-3.25]# pwd
/opt/tools/network_simulators/ns3/ns-allinone-3.25/ns-3.25
[root@localhost ns-3.25]#

cp examples/tutorial/first.cc scratch/myfirst.cc
./waf     //Now build your first example script using waf
./waf --run scratch/myfirst
./waf --run scratch/myfirst --vis

cp examples/wireless/wifi-adhoc.cc scratch/wifi-adhoc.cc
./waf     //Now build your first example script using waf
./waf --run scratch/wifi-adhoc

// Examples are found under src/netanim/examples Example:
./waf --run "dumbbell-animation"            generate dumbbell-animation.xml
./NetAnim        to open dumbbell-animation.xml (/opt/tools/network_simulators/ns3/ns-allinone-3.25/ns-3.25)
./waf --run "wireless-animation"
./waf --run "wireless-animation --help"

cp examples/routing/manet-routing-compare.cc scratch/
./waf --run scratch/manet-routing-compare
./waf --run scratch/manet-routing-compare --vis

------------------------------------------------------
cp manet-2015.cc /opt/tools/network_simulators/ns3/ns-allinone-3.25/ns-3.25/scratch/
./waf --run scratch/manet-2015 --vis
./waf --run scratch/manet-2015-org --vis
------------------------------------------------------

tcpdump -nn -tt -r MANET-7-0.pcap
wireshark MANET-6-0.pcap

rm *.tr *.pcap *.xml

------------------------------------------------------------------------------------------
Fedora23 + Docker + NS3 + MANETs - testing
------------------------------------------------------------------------------------------

[root@localhost ~]# mkdir /tmp/docker1; mkdir /tmp/docker2

systemctl start docker.service

[root@localhost docker1]# docker run -it --rm --net='none' busybox /bin/sh
[root@localhost docker2]# docker run -it --rm --net='none' busybox /bin/sh

[root@localhost ~]# docker ps
CONTAINER ID     IMAGE      COMMAND      CREATED           STATUS          PORTS    NAMES
70e8633bf467     busybox    "/bin/sh"    36 seconds ago    Up 35 seconds           lonely_sinoussi
1a6835b58963     busybox    "/bin/sh"    41 seconds ago    Up 40 seconds            kickass_carson

//get PID of CONTAINER
[root@localhost ~]# docker inspect -f "{{.State.Pid}}" lonely_sinoussi
17342
[root@localhost ~]# docker inspect -f "{{.State.Pid}}" kickass_carson
17303
[root@localhost ~]#

[root@localhost ~]# man ip-netns
       By convention a named network namespace is an object at /var/run/netns/NAME that can be opened. The file
       descriptor resulting from opening /var/run/netns/NAME refers to the specified network namespace. Holding that
       file descriptor open keeps the network namespace alive. The file descriptor can be used with the setns(2) sys‐
       tem call to change the network namespace associated with a task.

[root@localhost ~]# mkdir /var/run/netns
ln -s /proc/17342/ns/net /var/run/netns/17342
ln -s /proc/17303/ns/net /var/run/netns/17303

------------------------------------------------------------------------------------------
https://www.nsnam.org/wiki/HOWTO_Use_Linux_Containers_to_set_up_virtual_networks
http://yaxin-cn.github.io/Docker/docker-container-use-static-IP.html

[root@localhost ~]#
brctl addbr br-left
brctl addbr br-right

tunctl -t tap-left
tunctl -t tap-right

ifconfig tap-left 0.0.0.0 promisc up
ifconfig tap-right 0.0.0.0 promisc up

ip link add veth_e8633bf467 type veth peer name X
brctl addif br-left veth_e8633bf467
ip link set veth_e8633bf467 up
ip link set X netns 17342

ip link add veth_6835b58963 type veth peer name Y
brctl addif br-right veth_6835b58963
ip link set veth_6835b58963 up
ip link set Y netns 17303

------------------------------------------------------------------------------------------
[root@localhost docker2]# docker run -it --rm --net='none' busybox /bin/sh
/ # ifconfig -a
X         Link encap:Ethernet  HWaddr E6:64:96:C9:F5:DF  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ #
------------------------------------------------------------------------------------------
[root@localhost docker1]# docker run -it --rm --net='none' busybox /bin/sh
/ # ifconfig -a
Y         Link encap:Ethernet  HWaddr BE:32:10:48:A6:EE  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ #
------------------------------------------------------------------------------------------
[root@localhost ~]#

brctl addif br-left tap-left
ifconfig br-left up
brctl addif br-right tap-right
ifconfig br-right up

[root@localhost ~]# brctl show
bridge name    bridge id                STP enabled    interfaces
br-left        8000.5ea947f3ed2c        no             tap-left
                                                       veth_e8633bf467
br-right       8000.16168007f70a        no             tap-right
                                                       veth_6835b58963
docker0        8000.0242e1664909        no        
virbr0         8000.525400b558ab        yes            virbr0-nic


ip netns exec 17342 ip link set dev X name eth0
ip netns exec 17342 ip link set eth0 up
ip netns exec 17342 ip addr add 172.17.0.1/16 dev eth0
//ip netns exec 17342 ip route add default via 172.17.42.1

ip netns exec 17303 ip link set dev Y name eth0
ip netns exec 17303 ip link set eth0 up
ip netns exec 17303 ip addr add 172.17.0.2/16 dev eth0
//ip netns exec 17303 ip route add default via 172.17.42.1

------------------------------------------------------------------------------------------
/ # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
/ #
------------------------------------------------------------------------------------------
//You will also have to make sure that your kernel has ethernet filtering (ebtables, bridge-nf, arptables) disabled. If you do not do this, only STP and ARP traffic will be allowed to flow across your bridge and your whole scenario will not work.

[root@localhost ~]#

cd /proc/sys/net/bridge
for f in bridge-nf-*; do echo 0 > $f; done
cd -
------------------------------------------------------------------------------------------
172.17.0.2 can not ping 172.17.0.1
------------------------------------------------------------------------------------------
/ # ping 172.17.0.1
PING 172.17.0.1 (172.17.0.1): 56 data bytes
^C
--- 172.17.0.1 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss

------------------------------------------------------
cp manet-2015.cc /opt/tools/network_simulators/ns3/ns-allinone-3.25/ns-3.25/scratch/

[root@localhost ns-3.25]# pwd
/opt/tools/network_simulators/ns3/ns-allinone-3.25/ns-3.25
[root@localhost ns-3.25]#

./waf --run scratch/manet-2015 --vis
------------------------------------------------------

172.17.0.2 can ping 172.17.0.1 successfully

------------------------------------------------------
/ # ping 172.17.0.1
PING 172.17.0.1 (172.17.0.1): 56 data bytes
64 bytes from 172.17.0.1: seq=0 ttl=64 time=0.619 ms
64 bytes from 172.17.0.1: seq=1 ttl=64 time=0.363 ms
^C
--- 172.17.0.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.363/0.491/0.619 ms
/ #
------------------------------------------------------------------------------------------
ifconfig br-left down
ifconfig br-right down
brctl delif br-left tap-left
brctl delif br-right tap-right
brctl delbr br-left
brctl delbr br-right

ifconfig tap-left down
ifconfig tap-right down
tunctl -d tap-left
tunctl -d tap-right
------------------------------------------------------------------------------------------
So far, OK OK OK
------------------------------------------------------------------------------------------


在NS3提供的示例first.cc中,并没有生成NetAnim所需要的xml文件,本节我们尝试用NetAnim来展示first.cc的仿真结果。
依照NetAnim的说明,在Run开始前加上一行:
  AnimationInterface anim ("wireless-animation.xml"); // Mandatory

[root@localhost ns-3.25]#
cp ./src/netanim/examples/wireless-animation.cc scratch/
./waf --run scratch/wireless-animation --vis

[root@localhost ns-3.25]# ll -h wireless-animation.xml
-rw-r--r--. 1 root root 4.9M 5月  16 21:09 wireless-animation.xml

[root@localhost ns-3.25]# ../netanim-3.107/NetAnim

--------------------------
在我们生成的xml文件中,是不包含生成的数据包的数据的,在我们的脚本中添加下面的语句:
pointToPoint.EnablePcapAll("first")
再运行first.cc,可以发现在项目路径下多了两个文件:
first-0-0.pcap
first-1-0.pcap
这两个文件可以直接用tcpdump, wireshark打开
tcpdump -nn -tt -r first-0-0.pcap
wireshark first-0-0.pcap

rm *.tr *.pcap *.xml
------------------------------------------------------------------------------------------
ns-3的Gnuplot例子
------------------------------------------------------------------------------------------
[root@localhost ns-3.25]#
./waf --run examples/tutorial/fifth  >fifth.dat 2>&1

dnf install gnuplot gnuplot-minimal gnuplot-wx

[root@localhost ns-3.25]# gnuplot

gnuplot>
set terminal png size 640,480
set output "fifth.png"
plot "fifth.dat" using 1:2 title "Congestion Window" with linespoints
exit

[root@localhost ns-3.25]#

eog -f fifth.png

rm *.tr *.pcap *.xml *.png
------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------
posted @ 2016-05-13 21:15  张同光  阅读(222)  评论(0编辑  收藏  举报