1 简介
本文主要介绍基于OpenDaylight子项目OVSDB中的southbound组件来搭建VxLAN网络,包括初始环境搭建和southbound RestConf API调用等。OpenDaylight中的northbound组件也可以用来创建VxLAN网络,但northbound不是基于yang的且OVSDB封装的不好,beryllium版本已经将其删除。
2 实验环境和原理
实验环境
VMware workstation: 11.1,共需要3台虚拟机,其中两台为mininet(mininet-1, mininet-2),一台为ODL(ODL-VM),ODL虚拟机同时作为router,用来转发两个mininet的流量,模拟三层互通。
Mininet:相比纯OVS,mininet可以模拟下挂主机,方便测试。
Postman:版本0.8.4.16。southbound的postman命令集可以到ovsdb源码目录下resources/commons/Ovsdb-Southbound-Collection-for-Single-Node-Cluster.json.postman_collection,导入到postman即可使用。笔者根据实验,整理了更方便的postman命令集,下载地址为https://www.getpostman.com/collections/0165fe58d20e33eb2e9c,打开另存为文件,导入到postman即可。
OpenDaylight:Lithium SR1版本,作为manager来管理OVS。
实验拓扑
OVSDB vs. OpenFlow
如下图所示,ODL连接OVS有两种协议:Openflow,OVSDB。Openflow方式下,ODL作为OVS的controller,来给OVS下发流表。OVSDB方式下,ODL作为OVS的manager,用来配置OVS,包括创建bridge和port等。在生产环境中,这两中协议一般配合使用。Ovsdb-server服务处理OVSDB协议,ovs-vswitchd服务处OpenFlow协议。
Southbound组件
Southbound组件源码位于子项目ovsdb的southbound目录。目录结构如下所示。Southbound-api的ovsdb.yang定义了southbound的restconf API的格式和含义,使用southbound rest api之前建议浏览下。Southbound-impl通过监听datastore中ovsdb.yang的数据变化,解析为OVSDB协议【rfc7047】并下发给OVS。