-
Notifications
You must be signed in to change notification settings - Fork 7
ARPModule
ModuleTypeID (hex) | 0x0003 |
---|---|
ModuleTypeID (decimal) | 3 |
Distribution support | single instance |
Dependencies (Modules) | DeviceModule |
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.
MessageType: TO.SWITCH_ADAPTER.SWITCH_INSTANCE(switchID).OPENFLOW.PACKET_OUT
Comment: Forwarding ARP-packets.
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
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.)
MessageType: FROM.SWITCH_ADAPTER.OPENFLOW.PACKET_IN.MULTICAST_GROUP(*).ARP
Comment: Receiving ARP-packets to forward them.