如何使用/ operations / sal-flow通过OpenDaylight DLUX添加简单的流规则:add-flow api

时间:2015-10-23 20:58:56

标签: lithium openflow opendaylight

我试图通过Lithium的DLUX使用/ operations / sal-flow添加一个简单的流规则:add-flow api调用但除了错误之外什么都没有,请有人帮忙吗?

即使预览某人添加的示例流程也会非常有用吗?

预览框中显示的当前输入是:

http://localhost:8181/restconf/operations/sal-flow:add-flow

{
    "add-flow": {
        "input": {
            "match": {
                "ethernet-match": {
                    "ethernet-type": {
                        "type": "2048"
                    }
                },
                "ipv4-source": "10.0.0.1/32"
            },
            "instructions": {
                "instruction": [
                    {
                        "order": "0",
                        "apply-actions": {
                            "action": [
                                {
                                    "drop-action": {},
                                    "order": "0"
                                }
                            ]
                        }
                    }
                ]
            },
            "flow-name": "test",
            "table_id": "0"
        }
    }
}

目前的错误是:

“服务器错误:服务器遇到意外情况,导致服务器无法完成请求。”:操作遇到意外错误“

Postman中的相同请求给出了错误:

{
  "errors": {
    "error": [
      {
        "error-type": "protocol",
        "error-tag": "malformed-message",
        "error-message": "Error parsing input: Schema node with name add-flow wasn't found under (urn:opendaylight:flow:service?revision=2013-08-19)add-flow."
      }
    ]
  }
}

我见过使用xml的例子,但似乎没什么用。我能够通过dlux查看网络拓扑结构,所以我认为我连接到一切都没问题。

非常感谢提前。

2 个答案:

答案 0 :(得分:0)

从输入数据中删除add-flow和相应的括号。使用像

这样的东西
{
    input: {...},
    output: {...}
}

答案 1 :(得分:0)

我在使用DLUX时遇到了同样的问题。无论如何,我设法使用来自此链接https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin:End_to_End_Flows的XML POST请求找到了解决方案。您可以在Chrome上使用POSTMAN应用程序发送请求。请求的正文应该是:

POST http://localhost:8080/restconf/operations/sal-flow:add-flow

也添加身份验证标头。

内容类型:application / xml

接受:application / xml

体:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<input xmlns="urn:opendaylight:flow:service">
   <barrier>false</barrier>
   <node xmlns:inv="urn:opendaylight:inventory">/inv:nodes/inv:node[inv:id="openflow:1"]</node>

   <cookie>55</cookie>
   <flags>SEND_FLOW_REM</flags>
   <hard-timeout>0</hard-timeout>
   <idle-timeout>0</idle-timeout>
   <installHw>false</installHw>
   <match>
    <ethernet-match>
     <ethernet-type>
       <type>2048</type>
     </ethernet-type>
    </ethernet-match>
    <ipv4-destination>10.0.10.2/32</ipv4-destination>
   </match>
   <instructions>
    <instruction>
     <order>0</order>
     <apply-actions>
       <action>
         <output-action>
           <output-node-connector>1</output-node-connector>
         </output-action>
         <order>0</order>
       </action>
     </apply-actions>
    </instruction>
   </instructions>
   <priority>0</priority>
   <strict>false</strict>
   <table_id>0</table_id>
</input>