1 实验目的
熟悉Postman的使用;
熟悉如何使用OpenDaylight通过Postman下发流表,建立VxLAN隧道,实现通信。
2 实验原理
VXLAN 是Virtual eXtensible LANs 的缩写,它是对VLAN的一个扩展,是非常新的一个 tunnel 技术,在Open vSwitch中应用也非常多。Linux 内核的upstream中也刚刚加入 VXLAN的实现。相比GRE tunnel 它有着很好的扩展性,同时解决了很多其它问题。
Postman插件充当着交互方式的“桥梁”,它可以利用Chrome插件的形式把各种模拟用户HTTP请求的数据发送到服务器,以便开发人员能够及时地作出正确的响应。
3 实验任务
本实验通过OpenDaylight及Postman下发关于VxLAN的流表,实现相同网段内的设备通信。实验拓扑如下:
4 实验步骤
4.1 搭建环境
本实验需要创建三个虚拟机,分别取名odl、mininet1、mininet2。虚拟机odl选择OpenDaylight Lithium版本带有postman和wireshark且内核为3.12+的镜像作为控制器,虚拟机mininet1和mininet2选择Mininet带有wireshark的镜像作为所需的Mininet(注意:odl的内存大于4G),并启动实验和虚拟机。
4.2 配置环境
步骤1:查看mininet1和mininet2的IP信息
mininet1:
mininet2:
步骤2:验证OvS已经启动
1 |
#ps –ef|grepovs |
步骤3:分别在mininet1和mininet2上创建网桥br0(数据平面)、br1(控制平面),并且将端口eth0挂到br1上。
1 2 3 |
#sudo ovs-vsctl add-br br0 #sudo ovs-vsctl add-br br1 #sudo ovs-vsctl add-port br1 eth0 |
步骤4:在虚拟机mininet1上将eth0的IP赋给br1;给br1重新添加路由;给br0赋予IP(这里设置为40.0.0.1)
1 2 3 4 |
#ifconfig eth0 0 up #ifconfig br1 20.0.4.36/29 up #route add default gw 20.0.4.33 #ifconfig br0 40.0.0.1/8 up |
mininet1的路由如下:
查看交换机信息:
1 |
#ovs-vsctl show |
步骤5:在虚拟机mininet2上将eth0的IP赋给br1;给br1重新添加路由;给br0赋予IP(这里设置为40.0.0.2)
1 2 3 4 |
#ifconfig eth0 0 up #ifconfig br1 20.0.4.35/29 up #route add default gw 20.0.4.33 #ifconfig br0 40.0.0.2/8 up |
mininet2的路由如下:
查看交换机信息:
1 |
#ovs-vsctl show |
4.3 验证目前的通信情况
步骤1:验证mininet1的br1和mininet2的br1是通信的
步骤2:验证mininet1的br0和mininet2的br0是不能进行通信的
4.4 进行VxLAN设置,实现同一网段的通信
步骤1:给OpenDaylight安装组件,为Postman通过ovsdb下发流表作准备
1 2 3 |
feature:install odl-l2switch-all odl-ovsdb-all odl-base-all odl-aaa-authn odl-restconf-all odl-nsf-all odl-adsal-northbound odl-mdsal-apidocs odl-dlux-all feature:install odl-ovsdb-southbound-api odl-ovsdb-southbound-impl odl-ovsdb-southbound-impl-rest odl-ovsdb-southbound-impl-ui odl-openflowplugin-all-li odl-openflowplugin-adsal-compatibility-all |
步骤2:分别在mininet1和mininet2上手动设置manager,两个网桥自动与控制器相连。
1 |
#ovs-vsctl set-manager tcp:20.0.4.37:6640 |
mininet1:
mininet2:
步骤3:利用Postman下发流表信息,实现VxLAN网络
1获取节点信息。
GET http://20.0.4.37:8282/ovsdb/nb/v3/node
Header | Value |
Authorization | Basic YWRtaW46YWRtaW4= |
2 获取网桥的uuid,并且找到br0的uuid,在创建VxLAN端口的时候需要用到。
GET http:// 20.0.4.37:8282/ovsdb/nb/v2/node/OVS/20.0.4.35:60079/tables/bridge/rows/
Header | Value |
Authorization | Basic YWRtaW46YWRtaW4= |
GET http:// 20.0.4.37:8282/ovsdb/nb/v2/node/OVS/20.0.4.36:51067/tables/bridge/rows/
Header | Value |
Authorization | Basic YWRtaW46YWRtaW4= |
3 创建VxLAN端口(这里名为vtep)。
POST http:// 20.0.4.37:8282/ovsdb/nb/v2/node/OVS/20.0.4.35:60079/tables/port/rows
Header | Value |
Content-Type | application/json |
Body信息看下图(注意大小写),其中uuid就是上一步中获取的br0的uuid。
POST http:// 20.0.4.37:8282/ovsdb/nb/v2/node/OVS/20.0.4.36:51067/tables/port/rows
Header | Value |
Content-Type | application/json |
4获取VxLAN端口下自动生成的名为vtep的interface的uuid,下面更新接口的时候要用到。
GET http:// 20.0.4.37:8282/ovsdb/nb/v2/node/OVS/20.0.4.35:60079/tables/interface/rows/
Header | Value |
Authorization | Basic YWRtaW46YWRtaW4= |
GET http:// 20.0.4.37:8282/ovsdb/nb/v2/node/OVS/20.0.4.36:51067/tables/interface/rows/
Header | Value |
Authorization | Basic YWRtaW46YWRtaW4= |
5 更新VxLAN接口。
PUT http://20.0.4.37:8282/ovsdb/nb/v2/node/OVS/20.0.4.35:60079/tables/interface/rows/18c5e03c-6e08-401b-b3f2-ac92658f0fc1
Header | Value |
Content-Type | application/json |
Authorization | Basic YWRtaW46YWRtaW4= |
Body信息请看下图。
PUT http://20.0.4.37:8282/ovsdb/nb/v2/node/OVS/20.0.4.36:51067/tables/interface/rows/386c4610-4dad-4c21-9152-1557abac2e4a
Header | Value |
Content-Type | application/json |
Authorization | Basic YWRtaW46YWRtaW4= |
6 分别查看mininet1和mininet2上交换机信息,VxLAN隧道已经创建好。
mininet1:
mininet2:
7 将网桥与控制器断连。
8 再次分别查看mininet1和mininet2上交换机信息。
mininet1:
mininet2:
9 验证mininet1的br0和mininet2的br0能够通信。
Wireshark抓包截图如下:
5 实验结论
本实验基于OpenDaylight,通过Postman下发流表,实现VxLAN网络进行通信。