jo-valer / Networking

Multiple network slices connection and dynamic morphing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

πŸ“ 1st scenario

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

πŸ“ 2nd scenario

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

About

Multiple network slices connection and dynamic morphing


Languages

Language:Python 94.5%Language:Shell 5.5%