最近需要研究openvswitch的工作原理,所以着手搭建openvswitch的环境。

64的作为系统和LTS的openvswitch1.4.6,但事实证明这个选择极具挑战性,所以将探究过程记录于此。

      网上大部分资料显示的是使用Fedora_17安装openvswitch,因为内部自带ovs的内核模块。最关键的是关于在CentOS-6.3/6.4的安装文章基本属于转载,经过本人多次尝试,发现根本行不通。

      主要分为两派(当然的参照自带安装说明文档来安装了):

-with-linux= /usr/local/`uname -r`/build

       2.属于参考INSTALL.RHEL安装的(介于CentOS 和RHEL的关系),  发现居然default RPM source directory   $HOME/rpmbuild/SOURCES 根本找不到,所以 

            rpmbuild -bb rhel/openvswitch.spec

      不能成功执行,而且难以解决。

     注:大量依赖相关软件版本很低,不符合要求,需要升级(yum和tarball方式都要用到)例如autoconf .当然前提是INSTALL 上写明的依赖软件包还是要事先装上的。

       所以各种错误各种复杂。

       本人的安装步骤:

       1、依据INSTALL文档, 尽量使用yum安装所有能安装的依赖软件包。

       2、 我直接使用 yum update ,升级了系统可以升级的所有软件包。(最好更换yum源到163的源)

       3、手动tarball安装 autoconf  version 》= 2.64

       4、在openvswitch官网下载好openvswitch-1.4.6.的压缩包文件

       5、 tar -zxvf  。。。。。

       6、 将以前build链接删掉,重新链接上(有过报错的经历才知道,这一步的重要性)

              cd  /lib/modules/`uname -r`

               rm build

              ln -s /usr/src/kernels/`uname -r`/ build

      7、cd ~/openvswitch-1.4.6

     ./boot.sh

     ./configure -with-linux=/lib/modules/`uname -r`/build

  8、在进行make之间先将skbuff.h 的几个定义注释掉,否则后面回报错(可以在第9步后)。

             vi openvswitch-1.4.6/datapath/linux/compat/include/linux/skbuff.h   

            将242和244行的 static inline struct page *skb_frag_page(const skb_frag_t *frag)和static inline void skb_reset_mac_len(struct sk_buff *skb)注释掉。

例如:

       

OpenCL centos 安装 centos安装openvswitch_linux

     9 、#make

      其实最好先不进行第8步,第8步需要注释掉的函数也不完全,最好建议先make然后会报错,显示哪个文件的函数有重定义,再去直接注释掉比较合适(本人就遇到三个地方重定义,需要注释掉)

    10、make install

    11、 查看在工作的bridge模块.

             lsmod | grep bridge

             卸载掉    rmmod bridge

    12、insmod datapath/linux/openvswitch_mod.ko

    13、查看下: dmesg | tail

      

    基本到这就差不多了。

    探索成功安装的过程学到了很多其他的知识,还是十分令人高兴的。

    通过这次也发现,google的力量远远强于“百度”,英文文献确实十分丰富。

关键参考博客:http://networkstatic.net/open-vswitch-red-hat-installation/#!prettyPhoto