Imagine there is a topology which contains vswitchs on hypervisors and those are some how connected to outside physical network devices(I don't know whether this is possible or not...vswitchs and outsides switches in same topology). Now, does controller aware of these (virtual)devices just like as n OSPF protocol,,SDN controller learns the DOWN of a (virtual)devices and send correct flow entries to (v)devices. Note: Think the topology as complex, like vswitches on different hosts and in same host are connected to same SDN controller. Thanks!
Let's say you have multiple openflow enabled switches with virtual and physical hosts connected to the same controller. As long as they are reachable through the network when you link the switch to the controller, controller is aware of them. You can check this in the controller's topology. (Eg: In the case of ovs, you do "ovs-vsctl set-controller br0 tcp::6633" and the switch will come up in the topology gui of ODL).
In the case of adding flows and forwarding, you can a) set-fail-mode br0 secure and add flows manually through ofctl or rest api (or) b) enable the switch to behave as a learning switch.
Note- Whenever there is no flow entry in the switch and it is NOT a learning switch, it will send a packet_in to the controller and wait for instructions (packet_out).