给指定OF交换机增加meter,反馈成功但是dump-meters为空。


想给mininet模拟的OpenFlow交换机s1增加一个meter,SalFlowService.addMeter()反馈的结果是成功的,但是dump-meters却没有任何内容。有人知道是怎么回事么?

// 指定S1交换机
private NodeRef createNode(String node_id) {
System.out.println("create note " node_id);
NodeId nodeId = new NodeId(node_id);
NodeKey nodeKey = new NodeKey(nodeId);
InstanceIdentifier<Node> identifier = InstanceIdentifier.builder(Nodes.class)
.child(Node.class, nodeKey).build();
NodeRef nodeRef = new NodeRef(identifier);
return nodeRef;
}

//创建Meter
public MeterBuilder createMeter(long meterId) {
MeterBuilder meterBuilder = new MeterBuilder();
meterBuilder.setContainerName("meter_container");
meterBuilder.setKey(new MeterKey(new MeterId(meterId)));
meterBuilder.setMeterId(new MeterId(meterId));
meterBuilder.setMeterName("meterName");
meterBuilder.setFlags(new MeterFlags(true, false, false, false));

MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
List<MeterBandHeader> meterBandHeaders = new ArrayList<>();
MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
meterBandHeaderBuilder.setBandRate((long) 123);
meterBandHeaderBuilder.setBandBurstSize((long) 233);
DscpRemarkBuilder dscpRemarkBuilder = new DscpRemarkBuilder();
dscpRemarkBuilder.setDscpRemarkBurstSize((long) 5);
dscpRemarkBuilder.setDscpRemarkRate((long) 12);
dscpRemarkBuilder.setPrecLevel((short) 1);
meterBandHeaderBuilder.setBandType(dscpRemarkBuilder.build());
MeterBandTypesBuilder meterBandTypesBuilder = new MeterBandTypesBuilder();
MeterBandType meterBandType = new MeterBandType(false, true, false);
meterBandTypesBuilder.setFlags(meterBandType);
meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesBuilder.build());
meterBandHeaderBuilder.setBandId(new BandId(0L));
meterBandHeaders.add(meterBandHeaderBuilder.build());
meterBandHeadersBuilder.setMeterBandHeader(meterBandHeaders);
meterBuilder.setMeterBandHeaders(meterBandHeadersBuilder.build());
System.out.println("createMeter");

return meterBuilder;
}

private void addMeter() {
AddMeterInputBuilder addMeterInputBuilder = new AddMeterInputBuilder(
createMeter(METER_ID).build());
InstanceIdentifier<Meter> identifier = InstanceIdentifier.create(Nodes.class)
.child(Node.class, new NodeKey(new NodeId(NODE_ID)))
.augmentation(FlowCapableNode.class)
.child(Meter.class, new MeterKey(new MeterId(METER_ID)));
addMeterInputBuilder.setMeterRef(new MeterRef(identifier));
addMeterInputBuilder.setNode(createNode(NODE_ID));
ListenableFuture<RpcResult<AddMeterOutput>> result = JdkFutureAdapters
.listenInPoolThread(salMeterService.addMeter(addMeterInputBuilder.build()));
Futures.addCallback(result, new FutureCallback<RpcResult<AddMeterOutput>>() {

@Override
public void onFailure(final Throwable throwable) {
System.out.println("failure...");
}

@Override
public void onSuccess(RpcResult<AddMeterOutput> result) {
System.out.println("success...");
}
});
}
已邀请:

rocson001 - SDN 云计算

赞同来自:


先在OF交换机上确认meter能力:ovs-ofctl -O OpenFlow13 meter-features br0

要回复问题请先登录注册