= Installing Open V switch on cons-wm-01 = Identifying information: {{{ hostname -f wm-asngw-01.orbit-lab.org more /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=9.04 DISTRIB_CODENAME=jaunty DISTRIB_DESCRIPTION="Ubuntu 9.04 uname -a Linux wm-asngw-01 2.6.28-18-server #60-Ubuntu SMP Fri Mar 12 05:41:54 UTC 2010 i686 GNU/Linux ifconfig eth0 Link encap:Ethernet HWaddr 00:1f:29:0e:3a:68 inet addr:10.41.0.3 Bcast:10.41.255.255 Mask:255.255.0.0 inet6 addr: fe80::21f:29ff:fe0e:3a68/64 Scope:Link UP BROADCAST RUNNING ALLMULTI MULTICAST MTU:1500 Metric:1 RX packets:636384 errors:0 dropped:0 overruns:0 frame:0 TX packets:828244 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:176839258 (176.8 MB) TX bytes:91011015 (91.0 MB) Interrupt:17 ... }}} ---- === 9/20/2010 === Currently In opt there is an existing open openvsiwtch tarball, but it seems to be for a slightly older version. I've copied the newest stable version from the openvswitch website. {{{ sudo wget http://openvswitch.org/releases/openvswitch-1.1.0pre2.tar.gz }}} I'm bascially following [http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=INSTALL.Linux;hb=HEAD Linux] and [http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=INSTALL.OpenFlow;hb=HEAD OpenFlow] guides. The build process went as follows: 1. I checked for some prerequisite apt-packages: * pkg-configure * libssl-dev * kernel-headers * build-essential 1. Run configure with kernel flag {{{ ./configure --with-l26=/lib/modules/`uname -r`/build }}} It ran from /opt/openvswitch-1.1.0pre2. Built kernel modules since the are Needed for the Openflow Implementation. 1. make 1. make install 1. Insert the modules {{{ insmod datapath/linux-2.6/openvswitch_mod.ko }}} Dmesg should note the addtion of the module: {{{ [5343452.547746] Open vSwitch 1.1.0pre2, built Sep 20 2010 17:04:53 }}} ---- == NOT SURE IF THIS IS NEEDED == The final step of the build involves initializing a config database: {{{ http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=INSTALL.Linux;hb=HEAD }}} Once Built we need to start the database server and the switch damemon before we can do any thing with it: 1. Start the server with this command: {{{ ovsdb-server /usr/local/etc/ovs-vswitchd.conf.db --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,managers --private-key=db:SSL,private_key --certificate=db:SSL,certificate --bootstrap-ca-cert=db:SSL,ca_cert & }}} 1. initialize the database using ovs-vsctl (only needs to be done once) {{{ ovs-vsctl --no-wait init }}} 1. Once the database server is started, we next can start the switch server: {{{ ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock & }}} ---- We can create Virtual interfaces with the [http://linux.die.net/man/8/ip ip] command Something of the form {{{ >ip link add type veth }}} These interfaces are "internal" to the machine and have no-external meaning. They are similar to the named pipes or unix sockets. The internal virtual switch will communicate with other virtual elements in the machine via these virtual interfaces. Once this is created, we can add the virtual interface to the open flow switch with the [http://openvswitch.org/cgi-bin/ovsman.cgi?page=utilities/ovs-dpctl.8 ovs-dpctl]. {{{ >ovs-dpctl add-dp dp0 >ovs-dpctl add-if dp0 veth0 >ovs-dpctl show system@dp0: flows: cur:0, soft-max:1024, hard-max:1048576 ports: cur:2, max:1024 groups: max:16 lookups: frags:0, hit:0, missed:12, lost:0 queues: max-miss:100, max-action:100 port 0: dp0 (internal) port 1: veth0 }}} There is a separate daemon that manages the virtual open flow switch, In the current config we'll use it in --out-of-band mode. Thus the interface doesn't need an IP of it's own. The daemon can be started with the [http://openvswitch.org/cgi-bin/ovsman.cgi?page=utilities/ovs-openflowd.8 ovs-openflowd] command: {{{ ovs-openflowd dp0 tcp:10.0.0.12 --out-of-band --dpid 002320806da5 }}}