Skip to content

Latest commit

 

History

History
173 lines (133 loc) · 7.01 KB

File metadata and controls

173 lines (133 loc) · 7.01 KB

Distributed Systems Practice

Notes from learning about distributed systems in GW CS 6421 with Prof. Wood

Area 1: SDN and NFV

SDN model

  • A series of applications that decide how to forward the packets
  • A networking operating system capable of coordinating forwarding devices
  • A network of forwarding devices performing the required operations on the packets.

SDN actions

  • Modifying a packet
  • Dropping a packet
  • Tunnel the packet somewhere else

Regular optimizations

  • Future packets of the same type can take a fast path, don't need to consult the SDN controller.
  • Flow entries will be cached to speed up processing.

SDN Controller

  • Topology service - how forwarding devices are connected with each other.
  • Inventory service - track information about all SDN enabled devices.
  • Statistics service - how many packets. etc, statistical information.
  • Host tracking - IP and MAC addresses of the host.

Applications:

  • Java API
  • Northbound (RESTConf)

Other aspects

  • Logically Centralized
  • Not Physically Centralized
  • Can have network operating systems
  • Can have multiple ones
  • Can have hierachy

Advantages

  • Logically centralizaed and have a global view of all SDN controllers.
  • Applications are easier to program due to global view.
  • SDN contoller and all devices exhibit themselves as a large switch.

OpenNetVM

  • Make network functions run as fast as possible.
  • Process individual packets.

ONVM: Run inside virtual machines

  • More flexible in software
  • Isolates functionality, easy to deploy and manage
  • Slower than hardware

Convergence of the research areas

  • Operating systems
  • Networking
  • Security
  • Modeling
  • Real-time computing
  • Stream processing

OpenNetVM

  • Platform for efficient packet processing in VMs and lightweight containers
  • Highly optimized to reach ~70Gbps
  • NF Manager -> Host's user space
  • NFs run inside docker containers
  • NUMA-aware processing
  • Zero-copy data transfer between NFs
  • No interrupts using DPDK poll-mode driver
  • Scalable RX and TX threads in manager and NFs
  • SDN-enabled NF Manager directs flows to NFs
  • Fast enough to run software-based router, 38Gbps

Packet processing in linux

  • Lots of extra layers
  • We in fact just need packet data
  • Handle 14 million interrupts per second

DPDK

  • DMA to copy to user buffer.
  • Polling for packet arrival.
  • Regular function to transmit packets.
  • Don't have native support for virtualization.

Fast I/O

  • Zero-copy packet forwarding
  • Amortized system call overhead
  • Compatible with libpcap and other standard libraries
  • Much faster than linux native technology stacks

Experiment 1

1-1. List all devices using the ip command
1

1-2. Configure the network interface
2

1-3. Check the IP address assigned to this interface
3

1-4. Edit the configuration file
4

1-5. Log into linux on windows using ssh
5

1-6. Install the jre
6

1-7. Making up Java environment variable
7

1-8. Uncompressing ODL
8

1-9. Java 11 does not support this anymore :( switching to java 8
9

1-10. ODL started...
10

1-11. A portion of the feature list
11

1-12. Using putty + Xming to launch X applications on windows - This experiment can also be done on windows using VMware + putty + Xming
12

1-13. Use pingall to confirm availability - the command line should be ovsk instead of ovs
13

1-14. Login page of opendaylight dlux
14

1-15. Openflow messages captured using wireshark
15

1-16. Topology as displayed in the opendaylight dlux
16

1-17. Yang viualizer
17

Experiment 2

2-1. NICs installed
18

2-2. uname -a
19

2-3. Hello world example
20

2-4. OnVM manager view
21

2-5. Simple test, system working
22

2-6. Ping successful, bridge NF working (1)
23

2-7. Ping successful, bridge NF working (2)
24

Area 2: Cloud Web Applications

Launch an VM

  • Launch an instance in the EC2 console.
  • Configure and create the virtual machine instance.
  • Connect to the instance
  • Terminate the instance

Storage

  • Create a bucket
  • Upload the file to a bucket
  • Make the object public
  • Create a bucket policy
  • Upload a newer version and explore versioning