Working in a SDN enviroment with RYU and OVS - ryu

has anyone worked with RYU and OVS and tried to manage an OVS switch that runs in another PC than where the RYU is located? We are able to obtain data from these switches with the commands of the ovs-vsctl package but we are not able to generate traffic between two switches that are outside the PC where the RYU runs. The switches have connection to the RYU, and the it can manage them.
We want to generate traffic between this two switchs OVS with commands of Open Flow.
We are working with Ubuntu and Python scripts.
Thanks

Related

Connection and/or config problems when running OVS (Open vSwitch) and ONOS (Open Network Operating System) in Azure

We are building a proof of concept piece that uses ONOS to update the flow tables on an OVS switch to either block or allow traffic connected to the OVS switch. We have got a piece working on a local machine using using virtual machines on virtual box. We're trying to see if we can get it working using virtual machines in Azure. Here's the setup:
I have three Linux virtual machines running in Azure.
One virtual machine has ONOS installed on it. Ley's call this ONOS-1.
The second virtual machine has OVS installed on it. Let's call this OVS-1.
And the third virtual machine is just a standard Linux virtual machine that is being used by a user. Let's call this HOST-1.
The OVS-1 has two network interface cards, one for management access and another used by OVS for bridging. In OVS there are multiple vPorts configured on the single NIC that is on the data network.
The idea is that ONOS-1 is connected to OVS-1, and the OVS-1 is connected to HOST-1via one of the OVS vPorts. ONOS-1 should be able to control OVS-1. Currently, ONOS-1 can see OVS-1, but any vPorts created on OVS-1 show as enabled=False in ONOS-1. What is the problem or what are we missing? Any help, guidance, or direction would be greatly appreciated.
Network diagram
We've tried adding additional NIC for each OVS vPort. This did not work either.

Oracle Linux, prevent Network Adapter from sleep when running in VirtualBox on macOS

I have installed Oracle Linux 7 with the current version of VirtualBox, running on mac OS Sierra with a macbook. It therefore has a battery but is plugged in at all times.
For networking I use 2 adapters, one NAT for internet and one Host-Guest for ssh etc.
For some time now I was always wondering why I would get a broken ssh pipe, trial and error showed me that the VM will go to sleep (black screen), which causes the network adapter to break, telling me the name of the adapter and simply Reset adapter as soon as I wake it up again by typing into the vm itself.
I can then restart the network adapter via /etc/init.d/network restart and it will work again
Any ideas how I can change that? My Linux skills are very limited and I am not even sure what Oracle Linux is based on, most tips I find online do not work, no GUI also makes it difficult to just hop into power settings or something similar
This worked for me, on Windows host machine.
Configure your network adapter to
1) Allow the network adapter to wake the computer,
2) Allow a magic packet to wake the computer,
3) Allow IPV6
http://www.worldstart.com/dropped-internet-connection-in-sleep-mode/
Now, when I sleep my computer, and then wake it up, I get networking on both the host and guest, not just host.

Using gdbserver on remote device w/ a single serial connection?

I'm debugging an embedded application that runs in a Linux environment on a remote target. The only usable interface to the board is a single serial interface. Right now that's hooked up /bin/sh on init. I'm connecting with minicom, (re-)loading my application with lrzsz, and using printfs to get the job done.
I'd like to use gdbserver for more fine-grained debugging, but connectivity seems like a problem. Normally I'd connect over ethernet, but that's not available on this hardware. I understand gdbserver can run on a serial line, but right now my one comm port belongs to the shell.
Is there a good way to work around this restriction? Ideally I'd like to be able to run gdbserver and get back to a shell when I'm finished. I've tried starting gdbserver from the shell using the one available serial interface (/dev/ttyS0), then quitting minicom and starting GDB on my host, but it's messy & doesn't appear to work (even after setting remotebaud appropriately). Should that work? What's the sane thing to do in this situation?
How about the old-school solution? Use PPP to run IP networking over your serial line. You can then ssh (or even telnet) to your board, and connect to gdb at the same time. Given your circumstance, I'd recommend starting pppd manually to reduce the risk of locking yourself out through misconfiguration. The LDP link dates from 2000, but contains a lot of debugging advice.

Virtual box based development for Embedded Linux

I am new to embedded linux development.I have inherited a particular way of Embedded linux development from the previous developer.
I was just wondering if there is a more industry standard way of working.
This is how he was working,
There is an ARM embedded linux board which is not on the corporate network and has a fixed IP address of 192.168.0.52.I have a virtualbox based linux host which is connected directly to this linux board via an Ethernet cable.This host has an NFS shared with the target for running the cross compiled binaries.I have to set a fixed IP address for the host of 192.168.0.50.Then I can telnet with the target to run the compiled binaries on the NFS folder. Also as the VM host is not connected to the corporate network.I cannot use the company issued SVN for version control.So what I do is have a shared folder via virtual box between Windows and Linux host and I manually keep transferring the files which I have to commit/test.
What I would I ideally like, is both networks connected to the corporate network,so that I can update the OS,use version control.Is there way by which the VM on Windows access the corporate network and also be connected to the target.IT is not willing to give a static IP to the target.If we connect the target via DHCP what is the best way to discover it on the network.Also IT is concerned about the traffic it will generate.Can I use a switch to create a subnetwork,so that the target can have a fixed address?
Another question is they are open to a linux based host as well.Is a VM based linux any worse off than a Linux PC.The only problem I have been having are networking based issues,not really Virtualbox issues.But I am curious to know if there are any limitations at all.
In order to have the VM connected to the corporate network, you can setup the VM network adapter in bridge mode.
In order to discover the embedded device, you can use the arp command (for instance: arm -i eth0 -a).
If you have got two network interfaces you could also connect the remote device directly through this interface and setup a dhcp server in your VM.
Personally, I think that with the VM you can do everything that you need (cross-compiling the Kernel and bootloader and creating the remote File System). I have been using a VM for embedded linux development on a AT91SAM board without problems at all.

Software serial port loopback on linux

Currently I need to develop some program that will communicate with cisco devices over serial line. I want to build testing environment on my development linux machine. So, I found dynamips cisco emulator. This emulator can provide interface via serial line with '-U /dev/ttyS0' option. Well, this causes dynamips to open hardware serial port and communicate via it. I'm able to connect to this hardware serial port from another linux machine with serial client like minicom.
However, since i'm using virtualbox for both linux machines, I link serial ports via virtualbox ability to forward serial port to named pipe. This scheme seems to be working, but very redunant. I'm looking for a method to run dynamips and minicom on a single linux machine.
I found that pseudo-terminals could be useful in my case. But I've tried to run dynamips with '-U /dev/ptmx' and then connect with minicom to created /dev/pts/... port and vice versa. In both cases I've got input/output error on both sides.
Unfortunately, modern pseudo-terminals aren't that easy. After opening the master with posix_openpt() or open("/dev/ptmx"), you must call grantpt() and unlockpt() on the master FD before it and its corresponding slave device are usable. (The openpty() etc. utility functions simplify this.)
As a workaround, the ever handy socat may be of use.
# terminal 1
socat pty:link=$PWD/pts unix-l:$PWD/ptm-pipe &
dynamips -U $PWD/pts
# terminal 2
socat unix:$PWD/ptm-pipe -

Resources