opendaylight:单个流规则中的多个goto指令

时间:2017-11-14 03:28:41

标签: openflow opendaylight

我正在使用opendaylight(Carbon)并打开VSwitch。我正在java中构建一个应用程序,我想将数据包发送到多个GoTo目标表。以下代码片段显示了我如何构建指令:

   private static InstructionsBuilder createGoToNextTableInstruction(short idstable, short l2switchTable) {
    // Create an instruction allowing the interaction.

    List<Instruction> instructions = new ArrayList<Instruction>();

    Instruction gotoIdsTableInstruction = new InstructionBuilder()
            .setInstruction(new GoToTableCaseBuilder()
                    .setGoToTable(new GoToTableBuilder().setTableId(idstable).build()).build())
            .setKey(new InstructionKey(getInstructionKey())).setOrder(0).build();

    instructions.add(gotoIdsTableInstruction);

    Instruction gotoL2SwitchInstruction = new InstructionBuilder()
            .setInstruction(new GoToTableCaseBuilder()
                    .setGoToTable(new GoToTableBuilder().setTableId(l2switchTable).build()).build())
            .setKey(new InstructionKey(getInstructionKey())).setOrder(1).build();

    instructions.add(gotoL2SwitchInstruction);
    InstructionsBuilder isb = new InstructionsBuilder();
    isb.setInstruction(instructions);
    return isb;
    }

说明用于构建流规则如下:

   flowBuilder.setMatch(match).setInstructions(isb.build()).setPriority(30)
            .setBufferId(OFConstants.ANY).setHardTimeout(0).setIdleTimeout(0)
            .setFlags(new FlowModFlags(false, false, false, false, false));

我运行应用程序,不会抛出任何异常。但是,当我在交换机上列出流规则时,流程从未安装过。当我有一个GoTo指令时,我可以在交换机上成功安装流程,但是当我有多个GoTo指令时,我不能成功安装流程。

我的问题是:

  1. 在openflow中是否允许多个GoTo目标,并且所有兼容openflow的交换机都支持这些目标?具体来说,openvswitch是否支持多个目标?
  2. 我尝试了以下内容:

     sudo ovs-ofctl -O OpenFlow13 add-flow s1 table=0,in_port=2,actions=goto_table:1,goto_table:2
      ovs-ofctl: instruction goto_table may be specified only once
    

    这是我的版本:

      ovs-ofctl --version
      ovs-ofctl (Open vSwitch) 2.4.1
      Compiled Sep 25 2016 21:59:05
      OpenFlow versions 0x1:0x4
    

    这是一个ovs版本的问题吗?

    1. 这是一个应该使用组表的地方吗?
    2. 感谢。

1 个答案:

答案 0 :(得分:0)

我确认在openflow中的单个流规则中确实不可能有多个GoTo目标。只是为了别人的利益而在这里跟进。