Let me try restating. Imagine you have a hardware switch. It has some ports which connect it to other switches and hosts and stuff -- it makes a network (call this the "data network" for lack of a better term).
So if it's an OpenFlow switch, where is the controller in this picture? One type configuration, the controller can be anywhere on the data network. It communicates with the switch over IP, so why not? You have OpenFlow mixed with normal traffic all over your network. (This is often called "in band control") In another type of configuration (out of band control), you set aside one port on each switch as "special", and use this port to connect to the controller. The special port is *not* a part of the data network. You might say it's part of a control or management network. No normal forwarding ever takes place over this port -- *only* OpenFlow. If your setup looks like the first configuration, a controller can easily send arbitrary traffic over the data network using plain old socket programming. But if your configuration is similar to the second option, there's no direct way for the controller to send to or receive from the data network. The only way it can do it is over OpenFlow -- by instructing one of the switches to send data (via a packet out) and having the switch send data to the controller (via packet in). Of course, even in the second configuration, you could run a cable between a second interface on the controller and a normal port on the switch. That way you have two cables between switch and controller -- one on the management network and one on the data network. Hope that helps. -- Murphy On Jul 20, 2013, at 8:49 AM, Silvia Fichera wrote: > > In which case, there's no way to send except via a datapath or a host > > which actually is. > Can you clarify this sentence? > > Am I following the right way to send packets from the controller to hosts > through switches, so using my network, or do I miss something? > > > 2013/7/20 Murphy McCauley <[email protected]> > If I'm understanding correctly, the problem is that the controller isn't > necessarily *on* the data network. In Mininet, for example, it is often the > case that the controller and the datapaths are linked essentially by a > separate management network, and this is not an unusual case in the real > world either. In which case, there's no way to send except via a datapath or > a host which actually is. > > Hope that helps. > > -- Murphy > > On Jul 19, 2013, at 3:39 PM, Silvia Fichera wrote: > >> Hello, >> I am having trouble sending packets from l3_learning controller to host. >> I would like to send UDP packets but if I try to use normal socket from >> controller I see no traffic (I minotired it with wireshark on all switches) >> unless I send to itself (127.0.0.1). I was also trying to make a switch >> sending the controller generated packet in this way: >> http://lists.noxrepo.org/pipermail/pox-dev-noxrepo.org/2012-October/000281.html >> >> Although I have no traffic too. >> I guess the problem is that I am missing something like >> >> self.connection.send(msg) >> >> but I don't have any datapath connection with any switch since I want to >> start the communication from the controller. >> Is there an easier way to send these udp packets? >> >> thanks >> >> -- >> Silvia Fichera > > > > > -- > Silvia Fichera
