2017-11-14 4 views
0

私はopendaylight(Carbon)を使用し、VSwitchを開きます。私は複数のGoToターゲットテーブルにパケットを送信したいアプリケーションをJavaで構築しています。次のコードは、私が指示を構築しています方法を示しています。opendaylight:単一のフロールールで複数の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対応スイッチでサポートされる複数の後藤目標を持っていますか?具体的には、openvswitchは複数のターゲットをサポートしていますか?

私は次のことを試してみました。ここで

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. これはグループテーブルを使用する場所ですか?

ありがとうございます。

+0

明らかにopenvswitchでは、複数のgotoターゲットを持つことはできません。どのようにこれをグループテーブルで行うことができますか? – LostInTheFrequencyDomain

+0

これは役立つかもしれませんhttps://networkengineering.stackexchange.com/questions/38232/forwarding-to-multiple-output-ports-using-sdn 私は、グループには全くテーブルに出力することはできないと思います。 –

答えて

0

openflowの1つのフロールールに複数のGoToターゲットを設定することは実際には不可能であることを確認しました。他の人の利益のためにここをフォローするだけです。

関連する問題