opendaylight: Genius 在 switch 中安装流程
opendaylight: Genius install flow in switch
我正在使用 opendaylight / Carbon 并尝试使用 Genius 包装器。我想根据传入数据包的 MAC 地址匹配在交换机中安装流。我要安装的指令是 "GOTO" 指令。我进行如下操作:
FlowEntityBuilder flowEntityBuilder = new FlowEntityBuilder();
flowEntityBuilder.setTableId(tableId)
.setDpnId(dpnId)
.setFlowId(FlowUtils.createFlowId().toString())
.setFlowName("gotoTable1");
MatchInfo matchInfo = new MatchEthernetSource(macAddress);
InstructionInfo instructionInfo = new InstructionGotoTable(tableId);
FlowEntity flowEntity = flowEntityBuilder.addInstructionInfoList(instructionInfo).addMatchInfoList(matchInfo).build();
mdsalApiManager.installFlow(dpnId,flowEntity);
Mu 的意图是创建一个流实体并使用 IMDSalApiManager.installFlow 方法安装它。
这是我看到的例外情况:
java.lang.IllegalArgumentException: Node (urn:opendaylight:flow:inventory?revision=2013-08-19)ethernet-source is missing mandatory descendant /(urn:opendaylight:flow:inventory?revision=2013-08-19)address
任何调试帮助将不胜感激。
原来是我这边的问题,提供的 MacAddress 为空。我解决了这个问题。但是我仍然没有看到开关中的流量。
这就是使用 OpenDaylight 构建 GOTO 指令的方式:
GoToTableBuilder gttb = new GoToTableBuilder();
gttb.setTableId(tableGoto);
Instruction gotoInstruction = new InstructionBuilder()
.setOrder(1).setInstruction(new GoToTableCaseBuilder()
.setGoToTable(gttb.build())
.build())
.build();
您可以使用它来调整您的代码。
我正在使用 opendaylight / Carbon 并尝试使用 Genius 包装器。我想根据传入数据包的 MAC 地址匹配在交换机中安装流。我要安装的指令是 "GOTO" 指令。我进行如下操作:
FlowEntityBuilder flowEntityBuilder = new FlowEntityBuilder();
flowEntityBuilder.setTableId(tableId)
.setDpnId(dpnId)
.setFlowId(FlowUtils.createFlowId().toString())
.setFlowName("gotoTable1");
MatchInfo matchInfo = new MatchEthernetSource(macAddress);
InstructionInfo instructionInfo = new InstructionGotoTable(tableId);
FlowEntity flowEntity = flowEntityBuilder.addInstructionInfoList(instructionInfo).addMatchInfoList(matchInfo).build();
mdsalApiManager.installFlow(dpnId,flowEntity);
Mu 的意图是创建一个流实体并使用 IMDSalApiManager.installFlow 方法安装它。
这是我看到的例外情况:
java.lang.IllegalArgumentException: Node (urn:opendaylight:flow:inventory?revision=2013-08-19)ethernet-source is missing mandatory descendant /(urn:opendaylight:flow:inventory?revision=2013-08-19)address
任何调试帮助将不胜感激。
原来是我这边的问题,提供的 MacAddress 为空。我解决了这个问题。但是我仍然没有看到开关中的流量。
这就是使用 OpenDaylight 构建 GOTO 指令的方式:
GoToTableBuilder gttb = new GoToTableBuilder();
gttb.setTableId(tableGoto);
Instruction gotoInstruction = new InstructionBuilder()
.setOrder(1).setInstruction(new GoToTableCaseBuilder()
.setGoToTable(gttb.build())
.build())
.build();
您可以使用它来调整您的代码。