ovsdb《6》实践测试

4.1.1需要准备的材料
1、运行的Ubuntu虚拟机,发型版本为15.04,内核版本为3.19.0-65-generic,保证机器能联网;
2、openvswitch代码,版本号为2.5.0,可以从openvswitch官网中获取;
3、注意事项:注意使用的过程中需要查看openvswitch版本和linux内核的对应关系,在openvswitch官网中有相应的介绍,否则会出现加载ovs的.ko文件失败的情况;

4.1.2具体实践细节及步骤
1、首先需要安装依赖条件apt-get -y install automake autoconf libssl-dev gcc uml-utilities libtool build-essential git pkg-config linux-headers-uname -r,这些依赖条件是编译openvswitch原材料的时候必备的一些工具,比如说执行./boot.sh的时候会依赖autoconf等;
2、将获取到的openvswitch源代码放到合适的目录中,并解压缩,进入解压缩的目录执行./boot.sh和 ./configure --with-linux=/lib/modules/uname -r/build;
3、然后执行make和make install,中间出现的编译问题解决相应的编译问题即可;
4、载入内核模块。首先查看openvswitch依赖哪些模块,使用如下命令查看modinfo ./datapath/linux/openvswitch.ko,然后使用modprobe载入相应的模块即可,然后加载openvswitch.ko到内核insmod ./datapath/linux/openvswitch.ko,使用lsmod | grep open查看是否加载成功,如果仍然有加载失败则需要查看内核和openvswitch版本是否对应;
5、创建数据库,ovsdb-tool create /usr/local/etc/openvswitch/1.db默认使用/usr/local/share/openvswitch/vswitch.ovsschema文件创建.db数据库(这里.db和.ovsschema文件均可以自己定义,在具体的使用过程中,我们需要根据自己所写的schema文件来创建自己的数据库文件来实现交换机中的配置的数据库);
6、启动数据库,ovsdb-server /usr/local/etc/openvswitch/conf.db /usr/local/etc/openvswitch/1.db --remote=punix:/usr/local/var/run/openvswitch/db.sock --pidfile –detach,以守护进程的方式运行,这里主要使用unix的sock方式来完成jsonrpc的操作的;
7、初始化数据库并启动vswitchd进程,ovs-vsctl --no-wait init、ovs-vswitchd --pidfile –detach(实际在使用数据库的过程中,我们并不需要启动这些进程,这些进程实际上是涉及到openvswitch的各种配置和运行);
8、至此,所有的openvswitch的配置均完成了;

注:在编译源代码的过程中出现了编译失败的情况,具体对应的的是openvswitch-2.5.0/datapath/中目录下的actions.c文件的v6ops->fragment(skb->sk, skb, ovs_vport_output);调用时显示参数过多,这里在具体的函数对应关系并未发现参数过多的情况,将该句注释掉或者减少一个参数时则编译通过,由于该句为ipv6报文的分片处理的情况,不会影响后面的ovsdb的实践,暂时将其注释掉来解决编译问题;

4.1.3编译自己设计的schema文件并生成相应的.c和.h文件
1、准备相应的文件夹和文件,这里自己在ovs的主目录下随意创建文件夹my_config;
2、然后准备一个automake.mk文件,该文件中需要做如下设置:
# my_config IDL
OVSIDL_BUILT +=
my_config/my_config-idl.c
my_config/my_config-idl.h
my_config/my_config-idl.ovsidl
EXTRA_DIST += my_config/my_config-idl.ann
my_config_IDL_FILES =
$(srcdir)/my_config/my_config.ovsschema
$(srcdir)/my_config/my_config-idl.ann
my_config/my_config-idl.ovsidl: $(my_config_IDL_FILES)
KaTeX parse error: Double subscript at position 6: (AM_V_̲GEN)(OVSDB_IDLC) annotate $(my_config_IDL_FILES) > $@.tmp &&
mv $@.tmp $@

libmy_config

lib_LTLIBRARIES += my_config/libmy_config.la
my_config_libmy_config_la_LDFLAGS =
-version-info ( L T C U R R E N T ) : (LT_CURRENT): (LTCURRENT):(LT_REVISION):KaTeX parse error: Undefined control sequence: \ at position 10: (LT_AGE) \̲ ̲ -Wl,--version-…(top_builddir)/my_config/libmy_config.sym
$(AM_LDFLAGS)
nodist_my_config_libmy_config_la_SOURCES =
my_config/my_config-idl.c
my_config/my_config-idl.h
备注:由于我们只需要生成.c和.h文件,所以我们暂时不需要.xml文件并生成相应的document,将automake.mk中其余配置均删除;
3、准备一个my_config-idl.ann文件,做如下设置:
s[“idlPrefix”] = “my_configrec_”
s[“idlHeader”] = ““my_config/my_config-idl.h””
4、准备一个my_config.sym.in文件,做如下设置:
libmy_config_@LT_CURRENT@ {
global:
*;
};
5、准备一个schema文件,该文件就是我们用于生成.c和.h的原材料;
6、在主目录下的Makefile.am文件中加入步骤1中的automake.mk的路径:
include my_config/automake.mk
7、做好上述的步骤之后,再按照4.1.2中的编译方法编译即可得到我们所需的.c和.h文件,并可以得到我们所需的.o文件;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值