[ovs-dev] Problem adding flows openvswitch

Andi andi at dis.uniroma1.it
Thu Sep 20 08:28:30 UTC 2012


On 09/19/2012 07:27 PM, Ben Pfaff wrote:
> On Wed, Sep 19, 2012 at 07:22:59PM +0200, Andi wrote:
>>>> We have installed openvswitch in netkit(a user-mode linux front-end
>>>> let's say) after cross-compiling it for UML. During the startup of
>>>> the virtual machines we use a script to install openvswitch using
>>>> the commands reported in section 7 of INSTALL.Linux. The various
>>>> environment variables are exported in the script but as it turns out
>>>> they are not permanent after booting. After chroot-ing in the file
>>>> system of the virtual machines I have added the export of this
>>>> variables values in .bashrc.
>>> Is the script something that might be useful to others?  If so, please
>>> consider posting it.  If it's general-purpose enough, then perhaps it
>>> might be useful to include it in the Open vSwitch repository.
>>>
>>> Thanks,
>>>
>>> Ben.
>> Hi Ben,
>>
>> I think it(btw it is a makefile with different targets such as boot,
>> start, stop ...) could be useful for those who are using openvswitch
>> on netkit. If generalized only a little it can be used even for
>> other environments. So could you point me where to exactly put it?
> If it's a reasonable size, you could post it here, to the mailing
> list.
>
>> Btw we have also written a guide about installing openvswitch in
>> DD-WRT. We have reported the guide here: http://www.openflow.org/wk/index.php/UoR_:_Openflow_Kernel_space_on_DD-WRT
>> If you think it's the case that this should be added even in some
>> openvswitch wiki or repository let us know and we will add it.
> Maybe.  Perhaps the decision should depend on what is more likely to
> need changing: the Open vSwitch parts or the DD-WRT parts.  We can
> maintain the Open vSwitch parts well, if the file is our tree, but we
> are likely to not notice if the DD-WRT parts need to be updated, which
> could frustrate users.  My guess, off-hand, is that it's better to
> keep this in the openflow wiki.

Hi Ben,
one can save this as Makefile .
We make only two assumptions:
       * Switch node names are set like this: "switch1, switch2, 
switch3, ...
       * The interfaces(ports) for the moment are only ethernet ones.
The only interesting targets are the final 4 ones: boot, start, restart, 
stop.
Restart is needed when the kernel module or any other application is 
re-compiled.

Any improvement or suggestion is very welcome.

___________________________________________________________________________________
BRNAME = br0
CONTROLLER_IP = 192.168.0.1

# Export environment variables
PWD=$(shell pwd)
OVS_SRC=$(PWD)/openvswitch
OVS_KMODDIR=$(OVS_SRC)/datapath/linux
IFACES=$(shell ip link show|grep "^[0-9]: eth[1-9]"|awk '{ print $$2 
}'|tr -d ":")
NODENUMBER=$(shell uname -n|tr -d "switch")
NODEIDX16=$(shell printf "%016x" $(NODENUMBER))

export OVS_SYSCONFDIR=/usr/local/etc
export OVS_RUNDIR=/var/run/openvswitch
export OVS_PKGDATADIR=$(OVS_SRC)/build/share/openvswitch
export OVS_LOGDIR=$(OVS_SRC)/build/var/log
export OVS_BINDIR=$(OVS_SRC)/build/bin
export OVS_SBINDIR=$(OVS_SRC)/build/sbin

insert-module:
     insmod $(OVS_KMODDIR)/openvswitch_mod.ko
     insmod $(OVS_KMODDIR)/brcompat_mod.ko

remove-module:
     -rmmod brcompat_mod
     -rmmod openvswitch_mod

create-db:
     mkdir -p $(OVS_SYSCONFDIR)/openvswitch
     $(OVS_BINDIR)/ovsdb-tool create 
$(OVS_SYSCONFDIR)/openvswitch/conf.db $(OVS_PKGDATADIR)/vswitch.ovsschema

#Startup

start-server server:
     mkdir -p $(OVS_RUNDIR)
     -$(OVS_SBINDIR)/ovsdb-server $(OVS_SYSCONFDIR)/openvswitch/conf.db 
--remote=punix:$(OVS_RUNDIR)/db.sock 
--remote=db:Open_vSwitch,manager_options 
--private-key=db:SSL,private_key --certificate=db:SSL,certificate 
--bootstrap-ca-cert=db:SSL,ca_cert --pidfile --detach
# Check DB daemon
     ps -ef | grep ovsdb-server

stop-server:
     -killall ovsdb-server

create_br:
     $(OVS_BINDIR)/ovs-vsctl --no-wait add-br $(BRNAME)
     $(OVS_BINDIR)/ovs-vsctl --no-wait set Bridge $(BRNAME) 
other-config:datapath-id=$(NODEIDX16)


eth%:
     $(OVS_BINDIR)/ovs-vsctl --no-wait add-port $(BRNAME) eth$*

init: create_br $(IFACES)
     $(OVS_BINDIR)/ovs-vsctl --no-wait set-controller $(BRNAME) 
tcp:$(CONTROLLER_IP):6633

end:
     -$(OVS_BINDIR)/ovs-vsctl --no-wait del-br $(BRNAME)


# Start
start-daemon daemon:
     -$(OVS_SBINDIR)/ovs-vswitchd unix:$(OVS_RUNDIR)/db.sock --pidfile 
--detach

daemon-only:
     -$(OVS_SBINDIR)/ovs-vswitchd unix:$(OVS_RUNDIR)/db.sock

stop-daemon:
     -killall ovs-vswitchd


clean:
     rm -rf $(OVS_SYSCONFDIR)/openvswitch
     rm -rf $(OVS_RUNDIR)

remove-config: server daemon end stop-server stop-daemon

config: server init stop-server

#Start all configuration and openflow
start: config boot

#Use this target to restart openflow when it is running
restart: remove-config stop-daemon remove-module insert-module 
start-server init start-daemon

#Use this target to start openflow after the machine has booted. This 
supposes that the configuration exist
boot: start-server insert-module start-daemon

#Use this target is something goes bad, really bad!
stop:    remove-config remove-module
_____________________________________________________________________________________________


Regards,
Andi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-dev/attachments/20120920/da5ca371/attachment-0003.html>


More information about the dev mailing list