Don't know if this question has already been asked but I am curious about how real world deployments would be. Would all the switches have a direct connection to the controller? Or would controllers always be deployed in a distributed fashion with protocols for ensuring consistency between the controllers?
Piggybacking off the same question, is there any way I could identify the switches themselves with Java APIs and maybe use an abstract identifier to recognize each one of them? This is just to get an idea and does not directly relate to my implementation.