Loading this component will cause POX to create pcap traces containing OpenFlow messages, which you can then load into Wireshark to analyze. All the
headers are synthetic so it's not totally a replacement for actually running tcpdump or Wireshark. It does, however, have the nice property that there is
exactly one OpenFlow message in each frame (which makes it easier to look at!).
openflow.keepalive
This component causes POX to send periodic echo requests to connected switches. This addresses two issues.
First, some switches (including the reference switch) will assume that an idle control connection indicates a loss of connectivity to the controller and will
disconnect after some period of silence (often not particularly long). This behavior is almost certainly broken: one can easily argue that if the switches
want to disconnect when the connection is idle, it is their responsibility to send echo requests, but arguing won't fix the switches.
Secondly, if you lose network connectivity to the switch, you don't immediately get a FIN or a RST, so it's hard to say exactly when you'll notice that you've
lost the switch. By sending echo requests and tracking their responses, you get a bound on how long it will take to notice.
NOTE: This component is badly named and will probably be renamed in the carp branch.
proto.pong
The pong component is a sort of silly example which simply watches for ICMP echo requests (pings) and replies to them. If you run this component, all
pings will seem to be successful! It serves as a simple example of monitoring and sending packets and of working with ICMP.
proto.arp_responder
An ARP utility that can learn and proxy ARPs, and can also answer queries from a list of static entries. This component also adds the ARP table to the
interactive console as "arp" – allowing you to interactively query and modify it.
Simply specify IP addresses and the ethernet address you want to associate with them as options:
proto.arp_responder --192.168.0.1=00:00:00:00:00:01 --192.168.0.2=00:00:00:00:00:02
info.packet_dump
A simple component that dumps packet_in info to the log. Sort of like running tcpdump on a switch.
proto.dns_spy
This component monitors DNS replies and stores their results. Other components can examine them by accessing core.DNSSpy.ip_to_name[<ip
address>] and core.DNSSpy.name_to_ip[<domain name>].
proto.dhcp_client
A DHCP client component. This is probably not useful on its own, but can be useful in conjunction with other components.
proto.dhcpd
This is a simple DHCP server. By default, it claims to be 192.168.0.254, and serves clients addresses in the range 192.168.0.1 to 192.168.0.253,
claiming itself to be the gateway and the DNS server.
Note: You might want to use proto.arp_responder to make 192.168.0.254 (or whatever you choose as the IP address) ARP-able.
There are a number of options you can configure:
Option Meaning
network Subnet to allocate addresses from, e.g., "192.168.0.0/24" or "10.0.0.0/255.0.0.0"
first First'th address in subnet to use (256 is x.x.1.0 in a /16).
last Last'th address in subnet to use (258 is x.x.1.2 in a /16). If 'None', use rest of valid range.
count Alternate way to specify last address to use
ip IP to use for DHCP server
router Router IP to tell clients. Defaults to whatever is set for ip. 'None' will stop the server from telling clients anything.
dns DNS server to tell clients. Defaults to whatever is set for router. 'None' will stop the server from telling clients anything.
Example:
proto.dhcpd --network=10.1.1.0/24 --ip=10.1.1.1 --first=10 --last=None --router=None --dns=4.2.2.1