Ask is moving to Stack Overflow and Serverfault.com! Please use the "opendaylight" tag on either of these sites. This site is now in Read-Only mode

0

How can I use java code to send a packet from Controller to a specific switch?

asked 2015-05-13 09:07:15 -0800

ShawLinLoveLife gravatar image

I use Controller Helium SR3. I have got Id of the switch to which I want to send a message(packet). How could I build up my package in controller and then let controller send this package to that switch?

Thanks & Best Wishes!

edit retag flag offensive close merge delete

2 answers

Sort by ยป oldest newest most voted
0

answered 2015-05-18 23:52:03 -0800

You can use the the PacketProcessingService interface from model-flow-service :

Future<RpcResult<java.lang.Void>> transmitPacket(TransmitPacketInput input);

Sample Example from the LLDP speaker, as suggested by the @dandrushko :

// Generate packet with destination switch and port
        TransmitPacketInput packet = new TransmitPacketInputBuilder()
                .setEgress(new NodeConnectorRef(nodeConnectorInstanceId))
                .setNode(new NodeRef(nodeInstanceId))
                .setPayload(
                        LLDPUtil.buildLldpFrame(nodeId, nodeConnectorId,
                                srcMacAddress, outputPortNo,
                                addressDestionation)).build();

        // Save packet to node connector id -> packet map to transmit it every 5
        // seconds
        nodeConnectorMap.put(nodeConnectorInstanceId, packet);
        LOG.trace("Port {} added to LLDPSpeaker.nodeConnectorMap",
                nodeConnectorId.getValue());

        // Transmit packet for first time immediately
        packetProcessingService.transmitPacket(packet);
edit flag offensive delete publish link more

Comments

Thanks a lot. It is really a great help!

ShawLinLoveLife ( 2015-05-19 03:00:25 -0800 )edit

I tried getting the PacketProcessingService from my odl plugin via session.getRpcService(PacketProcessingService.class) but when calling transmitPacket() on the Proxy I get IllegalStatsException: No default provider is available. I assume the service is not installed in karaf. Do you know which bundle do I need to install if this is the case?

cpetroaca ( 2015-05-25 07:05:18 -0800 )edit
0

answered 2015-05-18 07:22:03 -0800

dandrushko gravatar image

As one of the options, you can look at LLDP speaker code (LLDPSpeaker.java) in the Openflow plugin project to get basic understanding how to generate and send out arbitrary packet out of a given switch.

edit flag offensive delete publish link more

Comments

Thank you very much! It is really helpful!

ShawLinLoveLife ( 2015-05-19 03:07:16 -0800 )edit
Login/Signup to Answer

Question Tools

Follow
3 followers

Stats

Asked: 2015-05-13 09:07:15 -0800

Seen: 761 times

Last updated: May 18 '15