Skip to content
Alex edited this page Nov 6, 2015 · 3 revisions

ARPModule

 

Information

ModuleTypeID (hex) 0x0003
ModuleTypeID (decimal) 3
Distribution support single instance
Dependencies (Modules) DeviceModule

 

Description

The ARPModule learns about devices in the network and will try to answer ARP-Requests by directly injecting an ARP-response. If it cannot locate the destination, it will broadcast the Request to all Switches. The module will also forward any ARP-Responses to their destination.

 

Publishes (TO)


MessageType: TO.SWITCH_ADAPTER.SWITCH_INSTANCE(switchID).OPENFLOW.PACKET_OUT
Comment: Forwarding ARP-packets.


 

Behavior for PacketIn

ZeroSDN SwitchRegistry main methods

 

Implementation Details

Enabling:

By enabling this Module it subscribes itself to the following packet_in topics of the SwitchAdapter:

  • ARP packet_in

and the following topics of the DeviceModule:

  • DEVICE_EVENT ADDED
  • DEVICE_EVENT CHANGED

All Devices information received via the topics DEVICE_EVENT are stored in a Map, which contains the information related to every host, such as MAC address, IP-Address, ID of the Switch it is attached to, and the port ID of the switch the host is attached to.

Adding / Updating a Device:

  • If a Device is not already registered in the ARPCache the device will be added.
  • If the Device is already known the their entry in the ARPCache will be modified.

The information contained in the packet_ins contains:

  • An ARP-Requests, this is used for creating and replying the corresponding an ARP-Replay according to the ARPCache of the ARP Module. or
  • An ARP-Reply, this ARP-Replay will be just forward to the target host according to the ARPCache of the ARP Module

 

Services used (REQUEST/REPLY)


MessageType: REQUEST.DEVICE_MODULE.GET_ALL_DEVICES
Comment: Initially request all devices to cache them locally in order to answer ARP-requests.


MessageType: REQUEST.DEVICE_MODULE.GET_DEVICES_BY_FILTER
Comment: Request device by IPv4 address on order to get its MAC address (if ARPModule does not know about it.)


 

Subscriptions used (FROM)


MessageType: FROM.SWITCH_ADAPTER.OPENFLOW.PACKET_IN.MULTICAST_GROUP(*).ARP
Comment: Receiving ARP-packets to forward them.