2017-09-13 3 views
0

opendaylight/Carbon을 사용 중이며 Genius 래퍼로 작업하려고합니다. 들어오는 패킷에 대한 MAC 주소 일치를 기반으로 스위치에 플로우를 설치하려고합니다. 설치하고자하는 명령은 "GOTO"명령입니다. 다음과 같이 진행합니다 :opendaylight : 스위치에 천재 설치 흐름

 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); 

의도는 흐름 실체를 만들고 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 

어떤 도움 디버깅이 평가 될 것입니다 : 여기

는 내가 보는 예외입니다.

답변

0

제공된 MacAddress가 내 문제인 것으로 판명되었습니다. 나는이 문제를 해결했다. 그러나 나는 여전히 스위치의 흐름을 보지 못한다.

GoToTableBuilder gttb = new GoToTableBuilder(); 
gttb.setTableId(tableGoto); 

Instruction gotoInstruction = new InstructionBuilder() 
    .setOrder(1).setInstruction(new GoToTableCaseBuilder() 
     .setGoToTable(gttb.build()) 
     .build()) 
    .build(); 

당신은 당신의 코드를 조정하려면이 옵션을 사용할 수 있습니다 : 이것은 당신이 OpenDaylight와 GOTO 명령을 구축하는 방법이다

+0

ovs 로그의 오류는 무엇입니까? 그렇지 않으면 컨트롤러와 ov 간의 패킷 전송을 캡처하여 오류를 확인할 수 있습니다. –

+0

Node에 대한 null이 있으므로 오류가 있습니다. 흐름을 설치하려면 InstanceId 를 사용해야했습니다. – LostInTheFrequencyDomain