实验5 基于RESTCONF的流表管理

  • 时间:
  • 浏览:
  • 来源:互联网

实验5 基于RESTCONF的流表管理

一、实验原理

​ 所谓流表,其实可被视作是SDN对网络设备的数据转发功能的一种抽象。在传统网络设备中,交换机和路由器的数据转发需要依赖设备中保存的二层MAC地址转发表或者三层的IP地址路由表,SDN交换机中使用的流表也是如此,不过在它的表项中整合了网络中各个层次的网络配置信息,从而在进行数据转发时可以使用更丰富的规则。
​ 在使用RESTCONF下发流表时,需要学习的是请求消息的BODY的结构。实例如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<flow xmlns="urn:opendaylight:flow:inventory">
   <flow-name>add-flow</flow-name>
    <table_id>0</table_id>
   <id>100</id>
    <strict>false</strict>
  <priority>1</priority>
    <instructions>
        <instruction>
            <order>0</order>
            <apply-actions>
                <action>
                    <order>0</order>
                    <output-action>
<output-node-connector>FLOOD</output-node-connector>
                    </output-action>
                </action>
            </apply-actions>
        </instruction>
    </instructions>
    <match>
    </match>
</flow>

BODY中定义了流表名称(flowname)、flow所在的table(table_id)、flow的id(id)、是否严格匹配(strict)、优先级和匹配字段(match fields)、优先级(priority)、指令(instructions)、超时(timeouts)、cookie等值。

二、实验环境检查

1. 登录交换机查看网络连通性

​ 由于OpenDaylight组件过于庞大,所以启动比较慢,容易导致控制器与交换机连接不成功的现象,间接导致主机无法获取IP。所以使用OpenDaylight控制器时,需要先检查网络连通性,查看交换机与控制器连接情况。执行以下命令:

ovs-vsctl show

结果:

3f2d706b-8776-440d-b4e3-da0ef103d120
    Bridge br-sw
        Controller "tcp:30.0.1.3:6633"
            is_connected: true
        fail_mode: secure
        Port "eth3"
            Interface "eth3"
        Port "eth7"
            Interface "eth7"
        Port br-sw
            Interface br-sw
                type: internal
        Port "eth6"
            Interface "eth6"
        Port "eth8"
            Interface "eth8"
        Port "eth1"
            Interface "eth1"
        Port "eth5"
            Interface "eth5"
        Port "eth4"
            Interface "eth4"
        Port "eth2"
            Interface "eth2"
        Port "eth9"
            Interface "eth9"

2. 登录控制器,查看IP

eth0      Link encap:Ethernet  HWaddr fa:16:3e:6b:16:96  
          inet addr:30.0.1.3  Bcast:30.0.1.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:fe6b:1696/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
          RX packets:9926 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5840 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4906042 (4.9 MB)  TX bytes:3906424 (3.9 MB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1500 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1500 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:82440 (82.4 KB)  TX bytes:82440 (82.4 KB)

3 登录交换机,连接控制器

​ 原本控制器与交换机之间的连接是通过OpenFlow协议的,在此基于OVSDB协议创建一个新的连接,其中30.0.1.3是控制器IP地址,6640是OVSDB协议对应的侦听端口。

ovs-vsctl set-manager tcp:30.0.1.3:6640
ovs-vsctl show

结果:

3f2d706b-8776-440d-b4e3-da0ef103d120
    Manager "tcp:30.0.1.3:6640"
        is_connected: true
    Bridge br-sw
        Controller "tcp:30.0.1.3:6633"
            is_connected: true
        fail_mode: secure
        Port "eth3"
            Interface "eth3"
        Port "eth7"
            Interface "eth7"
        Port br-sw
            Interface br-sw
                type: internal
        Port "eth6"
            Interface "eth6"
        Port "eth8"
            Interface "eth8"
        Port "eth1"
            Interface "eth1"
        Port "eth5"
            Interface "eth5"
        Port "eth4"
            Interface "eth4"
        Port "eth2"
            Interface "eth2"
        Port "eth9"
            Interface "eth9"

三、删除ODL自动下发的流表

​ 在实验过程中需要验证两个不能通信的主机,通过REST北向接口下发流表,使得两个主机能够通信,所以需要删除原先的默认通信流表。

1. 登录交换机,删除流表

ovs-ofctl del-flows -O OpenFlow13 br-sw

2 查看是否删除成功

ovs-ofctl dump-flows -O OpenFlow13 br-sw

结果:

OFPST_FLOW reply (OF1.3) (xid=0x2):

3. 登录主机,ping

​ 登录其中的一个主机,查看主机间网络网络连通情况,此时主机间无法进行通信

三、下发通信流表

1. 登录控制器

打开浏览器,输入URL = http://[controller_ip]:8181/index.html ,输入用户名:admin,密码:admin

单击登录。登录后,单击Nodes菜单,获取交换机node id。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8uAkfoK4-1590162106021)(C:\Users\lily\AppData\Roaming\Typora\typora-user-images\image-20200522232610960.png)]

2. 打开postman

单击Applications MenuDevelopmentPostman打开postman应用,如下图所示。

img

3. 输入URL

URL = http://[controller-ip]:8181/restconf/config/opendaylight-inventory:nodes/node/[node-id]/table/0/flow/100

[controller-ip]为当前控制器的数据层的ip,[node-id]即步骤1中获得的node id请求类型选择PUT。问一个页面需要输入用户名和密码,同样,用Postman发送请求也需要一定的权限。单击Authorization,type选择basic auth。输入用户名和密码,用户名和密码都是admin。选择BODY的类型raw ->XML(application/xml),如下图所示。

img

4. 输入Body内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<flow xmlns="urn:opendaylight:flow:inventory">
    <flow-name>add-flow</flow-name>
    <table_id>0</table_id>
    <id>100</id>
    <installHw>false</installHw>
    <strict>false</strict>
  <priority>1</priority>
    <instructions>
        <instruction>
            <order>0</order>
            <apply-actions>
                <action>
                    <order>0</order>
                    <output-action>
<output-node-connector>FLOOD</output-node-connector>
                    </output-action>
                </action>
            </apply-actions>
        </instruction>
    </instructions>
    <match>
    </match>
</flow>

注意:输入时须格外注意大小写。

5. 点击Send按钮

6. 输入URL

URL = http://[controller-ip]:8181/restconf/config/opendaylight-inventory:nodes/node/[node-id]/table/0/

[controller-ip]为当前控制器的数据层的ip,[node-id]即【四、下发通信流表】步骤1获得的node id请求类型选择GET。问一个页面需要输入用户名和密码,同样,用Postman发送请求也需要一定的权限。单击Authorization,type选择basic auth。输入用户名和密码,用户名和密码都是admin,如下图所示。

7. 点击Send按钮

img

可以看到,此流表为之前通过REST北向接口下发的流表。

8. 登录其中的一个主机,查看主机间网络网络情况,

此时主机间能够进行通信,如下图所示。

四、使用Postman删除流表

1. 输入URL

URL = http://[controller-ip]:8181/restconf/config/opendaylight-inventory:nodes/node/[node-id]/table/0/flow/[flow-id]

[controller-ip]为当前控制器的数据层的ip,[node-id]即【四、下发通信流表】步骤1获得的node id,[flow-id]为之前下发流表的id,可以到【四、下发通信流表】的BODY中查看。请求类型选择DELETE.访问一个页面需要输入用户名和密码,同样,用Postman发送请求也需要一定的权限。单击Authorization,type选择basic auth。输入用户名和密码,用户名和密码都是admin。点击Send,如下图所示。

img

2. 登录交换机,验证流表已删除

执行命令ovs-ofctl dump-flows -O OpenFlow13 br-sw,可验证流表已删除,如下图所示。

img

本文链接http://element-ui.cn/news/show-340063.aspx