1

我使用带有自定义拓扑的 Mininet 和 RYU-REST 控制器“ofctl-rest.py”。在交换机中安装一些 flowentries,通过网络发送一些数据包并捕获流量后,我认识到交换机不会减少 ip - 层中的 ttl - 字段。我发现我必须告诉交换机减少 ttl 字段(这从 OpenFlow - 1.1 版开始是可能的)。为此,我尝试使用“type”行:“DEC_NW_TTL”,但它不起作用。我的完整命令如下所示:

curl -X POST -d '{
    "dpid": 1,
    "cookie": 1,
    "cookie_mask": 1,
    "table_id": 0,
    "idle_timeout": 3600,
    "hard_timeout": 3600,
    "priority": 0,
    "flags": 1,
    "match":{
        "in_port": 1
    },
    "actions":[
        {
            "type":"OUTPUT",
            "port": 4,
            "type":"DEC_NW_TTL"
        }
    ]
 }' http://localhost:8080/stats/flowentry/add

我错了什么?我如何修改命令以让开关减少 ttl?请帮我。先感谢您。

4

2 回答 2

0

Abbadon的答案应该有效。您应该将每个操作放在一对括号内。但是,发布请求中不同操作的顺序无关紧要。OpenFlow 对不同类型的操作有其默认顺序。

  1. 向内复制 TTL:对数据包应用复制 TTL 向内操作
  2. pop:对数据包应用所有标签弹出动作
  3. push-MPLS:对数据包应用 MPLS 标签推送动作
  4. push-PBB:对数据包应用 PBB 标签推送动作
  5. push-VLAN:对数据包应用 VLAN 标记推送操作
  6. 向外复制 TTL:对数据包应用复制 TTL 向外操作
  7. 递减 TTL:对数据包应用递减 TTL 动作
  8. set:将所有 set-field 操作应用于数据包
  9. qos:应用所有的 QoS 动作,例如设置队列到数据包
  10. group:如果指定了组操作,则按此列表指定的顺序应用相关组存储桶的操作
  11. 输出:如果没有指定组动作,则在输出动作指定的端口上转发数据包
于 2018-09-21T03:13:35.990 回答
0

我认为您必须指定多个操作。此外,您应该更改操作的顺序。首先,您需要减少 TTL,然后将数据包发送出去。先发送数据包然后再递减不起作用。

我会这样尝试:

curl -X POST -d '{
    "dpid": 1,
    "cookie": 1,
    "cookie_mask": 1,
    "table_id": 0,
    "idle_timeout": 3600,
    "hard_timeout": 3600,
    "priority": 0,
    "flags": 1,
    "match":{
        "in_port": 1
    },
    "actions":[
        {
            "type":"DEC_NW_TTL"
        },
        {
            "type":"OUTPUT",
            "port": 4
        }
    ]
 }' http://localhost:8080/stats/flowentry/add
于 2015-11-07T14:17:45.567 回答