ryu中的Instructions和Actions

1.instructions 首先来看一下instructions再openflow协议中的位置,如上图所示的一张流表项,instructions是一条流表项的组成部分。 每一个Flow Entry里都包含有一系列的Instructions,这些Instructions会在与该Flow Entry成功匹配的数据包上执行,进而导致数据包头信息的修改、Action Set的更新或者改变Pipelin
摘要由CSDN通过智能技术生成

这里写图片描述
1.instructions
首先来看一下instructions再openflow协议中的位置,如上图所示的一张流表项,instructions是一条流表项的组成部分。
每一个Flow Entry里都包含有一系列的Instructions,这些Instructions会在与该Flow Entry成功匹配的数据包上执行,进而导致数据包头信息的修改、Action Set的更新或者改变Pipeline Processing的处理行为。
Instructions大致有下列几种类型,交换机不一定要全部支持:

1)Meter meter_id:将数据包直接转发给指定的Meter处理。
2)Apply-Actions action(s):立即对数据包执行指定的action(s),而不是将这些action(s)更新到Actions Set中。这些action(s)可能会修改数据包的信息,它们以Action List的形式组织。
3)Clear-Actions:立即清除Actions Set中的所有action(s)。
4)Write-Actions action(s):将指定的action(s)合并到当前的Actions Set中;如果给定类型的action当前已经存在于Actions Set中,那么会覆写,否则直接加入。
5)Write-Metadata metadata/mask:将指定的metadata值写到当前的Metadata值域中。
6)Goto-Table next-table-id:指定了在Pipeline Processing中的下一张Flow Table。这里的table-id必须大于当前的Flow Table id,并且Pipeline的最后一张Flow Table中不能含有这个指令;如果仅有一张Flow Table的OpenFlow Switch也不能支持该指令。
 每一个Flow Entry里每种类型(如上列表)的Instruction最多只能有一个,并且这些Instructins必须得按照上述列表的顺序来依次执行。往往在实际上,唯一的限制就是 Meter 指令必须在 Apply-Actions 指令前执行,Clear-Actions 指令必须在 Write-Actions 指令前执行,Goto-Table 必须放在最后执行。
 一个OpenFlow Swtich必须拒绝它不能支持的Instructions的Flow Entry,并且发出一个unsupported flow error给Remote Controller。Flow Tables可能会不支持每一个match,每一个instruction或者每一个action。

在ryu中,关于协议的部分写在\ryu\ofproto文件夹中,现在ryu已经支持到openflow1.5版本,我这里介绍的只是1.3版本,ofproto_v1_3_parser.py这个文件。

关于Instructions,ryu定义了两个类,分别是OFPInstructionActions类和FPInstructionMeter类,关于这两个类的说明如下

    class OFPInstructionActions(OFPInstruction):
    """
    Actions instruction

    This instruction writes/applies/clears the actions.

    ================ ======================================================
    Attribute        Description
    ================ ======================================================
    type             One of following values.

                     | OFPIT_WRITE_ACTIONS
                     | OFPIT_APPLY_ACTIONS
                     | OFPIT_CLEAR_ACTIONS
    actions          list of OpenFlow action class
    ================ ======================================================

    ``type`` attribute corresponds to ``type_`` parameter of __init__.
    """
    class OFPInstructionMeter(OFPInstruction):
        """
    Meter instruction

    This instruction applies the meter.

    ================ ======================================================
    Attribute        Description
    ================ ======================================================
    meter_id         Meter instance
    ================ =========================
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值