如何在OpenFlow交换机上打开减少的ttl?

时间:2015-10-23 20:24:22

标签: rest mininet ryu

我使用Mininet的自定义拓扑和RYU-REST控制器“ofctl-rest.py”。在交换机中安装一些流条目后,通过网络发送一些数据包并捕获流量,我发现交换机不会减少ip-layer中的ttl-field。我发现我必须告诉交换机减少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?请帮我。 先感谢您。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

阿巴顿的答案应该起作用。您应该将每个动作放在方括号中。但是,发布请求中不同操作的顺序无关紧要。 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. 输出:如果未指定组操作,则在输出指定的端口上转发数据包 行动