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

Reply via email to