Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
pim_dm
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
pim_dm
Commits
a11b869c
Commit
a11b869c
authored
Sep 26, 2017
by
Pedro Oliveira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add one router and one client
parent
aa6ee266
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
284 additions
and
0 deletions
+284
-0
emulation/client1.startup
emulation/client1.startup
+1
-0
emulation/client2.startup
emulation/client2.startup
+1
-0
emulation/client3.startup
emulation/client3.startup
+10
-0
emulation/client3/etc/resolv.conf
emulation/client3/etc/resolv.conf
+2
-0
emulation/client3/root/client.py
emulation/client3/root/client.py
+62
-0
emulation/client3/root/server.py
emulation/client3/root/server.py
+57
-0
emulation/lab.conf
emulation/lab.conf
+8
-0
emulation/lab.dep
emulation/lab.dep
+2
-0
emulation/router4.startup
emulation/router4.startup
+23
-0
emulation/router4/etc/quagga/daemons
emulation/router4/etc/quagga/daemons
+31
-0
emulation/router4/etc/quagga/debian.conf
emulation/router4/etc/quagga/debian.conf
+24
-0
emulation/router4/etc/quagga/ospfd.conf
emulation/router4/etc/quagga/ospfd.conf
+14
-0
emulation/router4/etc/quagga/vtysh.conf
emulation/router4/etc/quagga/vtysh.conf
+7
-0
emulation/router4/etc/quagga/zebra.conf
emulation/router4/etc/quagga/zebra.conf
+25
-0
emulation/router4/etc/resolv.conf
emulation/router4/etc/resolv.conf
+2
-0
emulation/router4/root/script.sh
emulation/router4/root/script.sh
+12
-0
emulation/switch1.startup
emulation/switch1.startup
+3
-0
topology.png
topology.png
+0
-0
No files found.
emulation/client1.startup
View file @
a11b869c
...
...
@@ -7,3 +7,4 @@ ip route add 0.0.0.0/0 via 10.1.0.2
# install python
apt-get update && apt-get --assume-yes install python3 python3-pip
pip-3.2 install netifaces
emulation/client2.startup
View file @
a11b869c
...
...
@@ -7,3 +7,4 @@ ip route add 0.0.0.0/0 via 10.0.2.3
# install python
apt-get update && apt-get --assume-yes install python3 python3-pip
pip-3.2 install netifaces
emulation/client3.startup
0 → 100644
View file @
a11b869c
ip addr add dev eth0 10.0.3.10/24
ip link set dev eth0 up
#default route para obter conectividade internet
ip route add 0.0.0.0/0 via 10.0.3.4
# install python
apt-get update && apt-get --assume-yes install python3 python3-pip
pip-3.2 install netifaces
emulation/client3/etc/resolv.conf
0 → 100644
View file @
a11b869c
nameserver
8
.
8
.
8
.
8
nameserver
8
.
8
.
4
.
4
emulation/client3/root/client.py
0 → 100644
View file @
a11b869c
import
socket
import
struct
import
sys
import
netifaces
def
chooseInterface
():
interfaces
=
netifaces
.
interfaces
()
def
printInterfaces
():
print
(
'Indique a interface de captura:'
)
for
i
in
range
(
len
(
interfaces
)):
print
(
i
+
1
,
'-'
,
interfaces
[
i
])
if
len
(
interfaces
)
==
1
:
#user has just 1 interface and any
return
interfaces
[
0
]
else
:
printInterfaces
()
inputValue
=
input
(
'Numero da interface: '
)
if
int
(
inputValue
)
-
1
not
in
range
(
len
(
interfaces
)):
raise
Exception
(
'numero de interface invalida'
)
inputValue
=
interfaces
[
int
(
inputValue
)
-
1
]
return
inputValue
if
not
hasattr
(
socket
,
'SO_BINDTODEVICE'
):
socket
.
SO_BINDTODEVICE
=
25
multicast_group
=
'224.12.12.12'
server_address
=
(
''
,
10000
)
# Create the socket
sock
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_DGRAM
)
# Bind to the server address
sock
.
bind
(
server_address
)
#interface_name = input("interface name: ")
interface_name
=
chooseInterface
()
ip_interface
=
netifaces
.
ifaddresses
(
interface_name
)[
netifaces
.
AF_INET
][
0
][
'addr'
]
# Tell the operating system to add the socket to the multicast group
# on all interfaces.
group
=
socket
.
inet_aton
(
multicast_group
)
sock
.
setsockopt
(
socket
.
IPPROTO_IP
,
socket
.
IP_ADD_MEMBERSHIP
,
socket
.
inet_aton
(
multicast_group
)
+
socket
.
inet_aton
(
ip_interface
))
#sock.setsockopt(socket.SOL_SOCKET, socket.SO_BINDTODEVICE, str(interface_name + "\0").encode('utf-8'))
# Receive/respond loop
while
True
:
#print >>sys.stderr, '\nwaiting to receive message'
data
,
address
=
sock
.
recvfrom
(
10240
)
print
(
data
.
decode
(
"utf-8"
))
#print >>sys.stderr, 'received %s bytes from %s' % (len(data), address)
#print >>sys.stderr, data
#print >>sys.stderr, 'sending acknowledgement to', address
#sock.sendto('ack', address)
emulation/client3/root/server.py
0 → 100644
View file @
a11b869c
import
socket
import
struct
import
sys
import
netifaces
import
traceback
def
chooseInterface
():
interfaces
=
netifaces
.
interfaces
()
def
printInterfaces
():
print
(
'Indique a interface de captura:'
)
for
i
in
range
(
len
(
interfaces
)):
print
(
i
+
1
,
'-'
,
interfaces
[
i
])
if
len
(
interfaces
)
==
1
:
#user has just 1 interface and any
return
interfaces
[
0
]
else
:
printInterfaces
()
inputValue
=
input
(
'Numero da interface: '
)
if
int
(
inputValue
)
-
1
not
in
range
(
len
(
interfaces
)):
raise
Exception
(
'numero de interface invalida'
)
inputValue
=
interfaces
[
int
(
inputValue
)
-
1
]
return
inputValue
#message = 'very important data'
multicast_group
=
(
'224.12.12.12'
,
10000
)
# Create the datagram socket
sock
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_DGRAM
)
# Set the time-to-live for messages to 1 so they do not go past the
# local network segment.
ttl
=
struct
.
pack
(
'b'
,
12
)
sock
.
setsockopt
(
socket
.
IPPROTO_IP
,
socket
.
IP_MULTICAST_TTL
,
ttl
)
interface_name
=
chooseInterface
()
ip_interface
=
netifaces
.
ifaddresses
(
interface_name
)[
netifaces
.
AF_INET
][
0
][
'addr'
]
sock
.
bind
((
ip_interface
,
10000
))
try
:
# Look for responses from all recipients
while
True
:
input_msg
=
input
(
'msg --> '
)
try
:
sock
.
sendto
(
input_msg
.
encode
(
"utf-8"
),
multicast_group
)
except
:
traceback
.
print_exc
()
continue
#print >>sys.stderr, 'received "%s" from %s' % (data, server)
finally
:
#print >>sys.stderr, 'closing socket'
sock
.
close
()
emulation/lab.conf
View file @
a11b869c
...
...
@@ -15,6 +15,9 @@ router3[0]=B
router3
[
1
]=
D
router3
[
mem
]=
256
router4
[
0
]=
G
router4
[
1
]=
H
router4
[
mem
]=
256
#########################################
# Switch setup
...
...
@@ -22,6 +25,7 @@ router3[mem]=256
switch1
[
0
]=
C
switch1
[
1
]=
D
switch1
[
2
]=
E
switch1
[
3
]=
G
#########################################
...
...
@@ -32,3 +36,7 @@ client1[mem]=256
client2
[
0
]=
E
client2
[
mem
]=
256
client3
[
0
]=
H
client3
[
mem
]=
256
emulation/lab.dep
View file @
a11b869c
router2: router1 switch1
router3: router1
router4: switch1 router2 router3
client1: router2
client2: switch1 router2 router3
client3: router4
emulation/router4.startup
0 → 100644
View file @
a11b869c
ip addr add dev eth0 10.0.2.4/24
ip link set dev eth0 up
ip addr add dev eth1 10.0.3.4/24
ip link set dev eth1 up
#default route para obter conectividade internet
#ip route add 0.0.0.0/0 via 10.0.1.1
#ip route del 0.0.0.0/0
# Zebra and OSPF
/etc/init.d/quagga restart
# wait for default route information from OSPF
while ! $(ip route | grep -q "default")
do
sleep 2
done
# install python
apt-get update && apt-get --assume-yes install python3 python3-pip
emulation/router4/etc/quagga/daemons
0 → 100644
View file @
a11b869c
# This file tells the quagga package which daemons to start.
#
# Entries are in the format: <daemon>=(yes|no|priority)
# 0, "no" = disabled
# 1, "yes" = highest priority
# 2 .. 10 = lower priorities
# Read /usr/share/doc/quagga/README.Debian for details.
#
# Sample configurations for these daemons can be found in
# /usr/share/doc/quagga/examples/.
#
# ATTENTION:
#
# When activation a daemon at the first time, a config file, even if it is
# empty, has to be present *and* be owned by the user and group "quagga", else
# the daemon will not be started by /etc/init.d/quagga. The permissions should
# be u=rw,g=r,o=.
# When using "vtysh" such a config file is also needed. It should be owned by
# group "quaggavty" and set to ug=rw,o= though. Check /etc/pam.d/quagga, too.
#
# The watchquagga daemon is always started. Per default in monitoring-only but
# that can be changed via /etc/quagga/debian.conf.
#
zebra=yes
bgpd=no
ospfd=yes
ospf6d=no
ripd=no
ripngd=no
isisd=no
babeld=no
emulation/router4/etc/quagga/debian.conf
0 → 100644
View file @
a11b869c
#
# If this option is set the /etc/init.d/quagga script automatically loads
# the config via "vtysh -b" when the servers are started.
# Check /etc/pam.d/quagga if you intend to use "vtysh"!
#
vtysh_enable
=
yes
zebra_options
=
" --daemon -A 127.0.0.1"
bgpd_options
=
" --daemon -A 127.0.0.1"
ospfd_options
=
" --daemon -A 127.0.0.1"
ospf6d_options
=
" --daemon -A ::1"
ripd_options
=
" --daemon -A 127.0.0.1"
ripngd_options
=
" --daemon -A ::1"
isisd_options
=
" --daemon -A 127.0.0.1"
babeld_options
=
" --daemon -A 127.0.0.1"
#
# Please note that watchquagga_options is an array and not a string so that
# quotes can be used.
#
# The list of daemons to watch is automatically generated by the init script
# from daemons.conf and appended to the watchquagga_options.
# Example:
# watchquagga_options=("-Adz" "-r" '/sbin/service %s restart' -s '/sbin/service %s start' -k '/sbin/service %s stop')
watchquagga_enable
=
yes
watchquagga_options
=(--
daemon
)
emulation/router4/etc/quagga/ospfd.conf
0 → 100644
View file @
a11b869c
! -*-
ospf
-*-
!
!
OSPFd
sample
configuration
file
!
!
hostname
ospfd
password
zebra
!
enable
password
please
-
set
-
at
-
here
!
router
ospf
network
10
.
0
.
2
.
0
/
24
area
0
network
10
.
0
.
3
.
0
/
24
area
0
!
log
stdout
emulation/router4/etc/quagga/vtysh.conf
0 → 100644
View file @
a11b869c
!
!
Sample
configuration
file
for
vtysh
.
!
!
service
integrated
-
vtysh
-
config
hostname
quagga
-
router
username
root
nopassword
!
emulation/router4/etc/quagga/zebra.conf
0 → 100644
View file @
a11b869c
! -*-
zebra
-*-
!
!
zebra
sample
configuration
file
!
! $
Id
:
zebra
.
conf
.
sample
,
v
1
.
1
2002
/
12
/
13
20
:
15
:
30
paul
Exp
$
!
hostname
Router
password
zebra
enable
password
zebra
!
!
Interface
'
s
description
.
!
!
interface
lo
!
description
test
of
desc
.
!
!
interface
sit0
!
multicast
!
!
Static
default
route
sample
.
!
!
ip
route
0
.
0
.
0
.
0
/
0
203
.
181
.
89
.
241
!
!
log
file
/
var
/
log
/
quagga
/
zebra
.
log
emulation/router4/etc/resolv.conf
0 → 100644
View file @
a11b869c
nameserver
8
.
8
.
8
.
8
nameserver
8
.
8
.
4
.
4
emulation/router4/root/script.sh
0 → 100644
View file @
a11b869c
rm
-rf
MulticastRouting/
cp
-rf
/hosthome/Desktop/pim/ MulticastRouting/
cd
MulticastRouting
pip-3.2
install
-r
requirements.txt
python3 Run.py
-stop
python3 Run.py
-start
python3 Run.py
-aiigmp
eth0
python3 Run.py
-aiigmp
eth1
python3 Run.py
-ai
eth0
python3 Run.py
-ai
eth1
python3 Run.py
-v
emulation/switch1.startup
View file @
a11b869c
ip link set dev eth0 up
ip link set dev eth1 up
ip link set dev eth2 up
ip link set dev eth3 up
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
brctl addif br0 eth2
brctl addif br0 eth3
ip link set dev br0 up
# identify ports with routers (they need to receive all multicast traffic!)
echo "2" > /sys/devices/virtual/net/br0/brif/eth0/multicast_router
echo "2" > /sys/devices/virtual/net/br0/brif/eth1/multicast_router
echo "2" > /sys/devices/virtual/net/br0/brif/eth3/multicast_router
topology.png
View replaced file @
aa6ee266
View file @
a11b869c
31.7 KB
|
W:
|
H:
42.5 KB
|
W:
|
H:
2-up
Swipe
Onion skin
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment