OpenFlow on 4112F-ON
- Create OpenFlow Load Balancer
- Files
- Reading Material
- Overview
- My Configuration
- Setup
- Running the Code
- Supported Protocols
- Helpful Commands
- Personal Notes
- Things to mention
- Problems
Files
See here for a listing of files and source code.
Reading Material
Open Flow Switch Specification v1.3.1
Dell OpenFlow Deployment and User Guide 3.0
Overview
My Configuration
- Controller is running on Windows in PyCharm while I'm testing. I'll move it to RHEL when I'm done.
- I am using a S4112F-ON
- I am using a Ryu OpenFlow controller
Switch Version Info
Dell EMC Networking OS10 Enterprise
Copyright (c) 1999-2020 by Dell Inc. All Rights Reserved.
OS Version: 10.5.1.0
Build Version: 10.5.1.0.124
Build Time: 2020-02-12T09:05:20+0000
System Type: S4112F-ON
Architecture: x86_64
Up Time: 00:03:52
Setup
Setup Controller
pip install -r requirements.txt
On Host Workstation
** Make sure you use sudo
or things will go wrong **
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install -g @angular/cli
sudo ng add @angular/material
You can drop the -g
if you want to install angular locally in the directory instead of globally.
You will have to prefix your commands with npx -p @angular/cli ng
To setup debugging do the following:
- Go to https://marketplace.visualstudio.com/items?itemName=msjsdiag.debugger-for-chrome and install the addon for Visual Studio Code
- Go to the debugging tab in Visual Studio code, hit the down arrow next to launch program and click launch Chrome.
- I used the following configuration:
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "chrome", "request": "launch", "name": "Launch Chrome against localhost", "url": "http://localhost:4200", "webRoot": "c:\\Users\\grant\\Documents\\trafficshaper\\angular" } ] }
Setup OpenFlow on the Switch
Enable OpenFlow
On the switch run:
OS10# configure terminal
OS10(config)# openflow
OS10(config-openflow)# mode openflow-only
Configurations not relevant to openflow mode will be removed from the startup-configuration and system will be rebooted. Do you want to proceed? [confirm yes/no]:yes
Configure Management
OS10(conf-if-ma-1/1/1)# interface mgmt 1/1/1
OS10(conf-if-ma-1/1/1)# ip address <SOME MANAGEMENT IP>/24
OS10(conf-if-ma-1/1/1)# no shutdown
OS10(conf-if-ma-1/1/1)# exit
Configure OpenFlow Controller
OS10# configure terminal
OS10(config)# openflow
OS10(config-openflow)# switch of-switch-1
OS10(config-openflow-switch)# controller ipv4 <YOUR_CONTROLLER_IP> port 6633
OS10(config-openflow-switch)# protocol-version 1.3
OS10(config-openflow-switch)# no shutdown
Running the Code
python main.py
Supported Protocols
- TCP
- UDP
- ICMP
Helpful Commands
Personal Notes
Things We Want
Protocols
HTTP TLS DNS SSH
Things to mention
- Inline decryption possibilities
Use Cases
- I want to tie a sensor directly to a DC. So all things for that DC go to one sensor
A couple of dropdown boxes in a statement and an execute button. One of those things could be an IP address, or a port, or a protocol, physical port
Problems
need to make sure we don't receive a reject message need to make it so outports and inports persist if something is an input port do we want to stop them from using redirect port I need to go back and make sure that when compressed tiles move to the next line I need to handle getting flows for the openflow controller's interface Need to add error handling if the server is unavailable Need to update the getPorts documentation