Skip to content
This repository has been archived by the owner on Jul 25, 2023. It is now read-only.
/ Networking Public archive

Multiple network slices connection and dynamic morphing

Notifications You must be signed in to change notification settings

jo-valer/Networking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Networking 2021/2022

This is the Softwarized and virtualized mobile networks (aka Networking II) group project's repository by Daniele Della Pietra, Matteo Mazzonelli and Giovanni Valer.

ℹ We have implemented two different scenarios, each with its own topology and simulations.

Here we imagine having a city, whose network is divided in 2 slices: the first (from now on: slice_1) is dedicated to citizens' traffic while the second (slice_2) is dedicated to essential services (eg. police, hospital).

It might happen that a natural disaster, boycott, or accident leads to irreparable damages to a part of the network (let's imagine switch s4 unreachable).

In such a situation we would like to dynamically change the slices, in order to have slice_1 overlaying slice_2, and so allowing communication between h4 and h5. Furthermore, we require that the available throughput of switch s2 is 80% dedicated to slice_2, since essential services could need even more capability in case of natural disaster.

Key summary

  • Dynamical slices' morphing
  • Essential services have 80% of dedicated throughput

🖧 Topology



▶️ Demo

Launch network:

ryu-manager dynamic_slicing.py & sudo python3 network.py

👉 WHEN SWITCH 4 IS ON:

Test reachability by running mininet> pingall

Use command dpctl dump-flows to show the flow tables. Notice that h4 communicates with h5 through switch s4:

Test bandwidth of slices with iperf

👉 WHEN SWITCH 4 IS UNREACHABLE:

Let's use the same commands after event: 'Switch 4 – OFF'

Test reachability by running mininet> pingall

As we can see slicing is preserved, citizens don't have access to essential services slice, and vice versa.

Use command dpctl dump-flows to show the flow tables. Notice that h4 communicates with h5 through citizens' slice:

Test bandwidth of slices with iperf

80% of available bandwidth is used by essential services and 20% by citizens, just as desired.

Shut down network

mininet> exit

$ sudo mn -c

In this second scenario we have the network of a classroom. When students work on group projects, the different goups can't communicate "too much". So there are three slices which are interconnected by a fourth one (let's assume it's the teacher).

Moreover, not every single packet is allowed to pass through connect_slice: in fact there is a maximum amount of UDP packets sendable between slices, and when the threshold is exceeded the UDP packets are discarded.

Key summary

  • Connecting SDN slices
  • Stateful packet filtering: exceeding UDP packets are discarded

🖧 Topology



▶️ Demo

Launch network:

./run_controllers.sh & sudo python3 network.py

Test reachability by running mininet> pingall

Use command mininet> h1 ping h10 and dpctl dump-flows in order to check packets' flow from h1 to h10 through connecting slice (switch s6):

Send UDP packets from slice 3 to slice 1:

After a certain amount of UDP packets transmitted, switch s6 stops UDP connection between slice 1 and slice 3. This event doesn't affect TCP and ICMP packets' flows.

Every 60 seconds UDP connections are restored and packets' counters are reset:

Shut down network

mininet> exit

$ sudo mn -c

Releases

No releases published

Packages

No packages published