[ovs-discuss] Switch architecture of OVS userspace switch

Ben Pfaff blp at nicira.com
Tue Mar 13 16:27:29 UTC 2012


Yes, that's correct.  In a switch, packets can come in and go out on
the same set of ports, so there is only one list.  Why do you expect
differently?

On Tue, Mar 13, 2012 at 06:20:21PM +0800, Jingfei Hu wrote:
> Ben, Sorry for the delay.
> In the struct dp_netdev, there are two members, struct dp_netdev_port
> *ports[MAX_PORTS] and struct list port_list, which mean the ports of this
> datapath, also a switch. And in the snippet code of function
> dpif_netdev_run():
> --------------------------------------------------------------------
> LIST_FOR_EACH (port, node, &dp->port_list)
> --------------------------------------------------------------------
> 
> so dp->port_list represents the input ports of the datapath. Then following
> the call stack, here is the code of function dp_netdev_output_port():
> -------------------------------------------------------------------
>     struct dp_netdev_port *p = dp->ports[out_port];
>     if (p) {
>         netdev_send(p->netdev, packet);
>     }
> ------------------------------------------------------------------
> 
> So this dp->ports represent the output ports of the datapath. Is that
> correct?
> 
> Cheers,
> 
> Jfhu
> 2012/3/9 Ben Pfaff <blp at nicira.com>
> 
> > What is "the output ports list" and "the input ports list"?  I don't
> > know what list (lists?) you mean.
> >
> > On Thu, Mar 08, 2012 at 08:35:38PM +0800, HuJingfei wrote:
> > >
> > > Thanks, Ben,Exactly speaking, it's the loop of function
> > > dpif_netdev_run() that does the packets scheduling. Now, I know that
> > > the next procedure of normal process is: dpif_netdev_run() ->
> > > dp_netdev_port_input() -> dp_netdev_execute_actions() ->
> > > dp_netdev_output_port()But what confuses me is that why the output
> > > ports list is the same with input ports list? Is that scan?
> > > Cheers,
> > > Jfhu
> > > > Date: Wed, 7 Mar 2012 08:00:06 -0800
> > > > From: blp at nicira.com
> > > > To: hujingfei914 at msn.com
> > > > CC: discuss at openvswitch.org
> > > > Subject: Re: [ovs-discuss] Switch architecture of OVS userspace switch
> > > >
> > > > Since you are specifically interested in the userspace OVS switch, you
> > > > can just follow the process of the loop in dpif_run().  Each iteration
> > > > of the loop fully processes one packet.
> > > >
> > > > On Wed, Mar 07, 2012 at 03:56:03PM +0800, HuJingfei wrote:
> > > > >
> > > > > Thanks, Ben, I appreciate your help very much.Is there any
> > > > > documentation or schematic diagram that describes the process that a
> > > > > packet entering the switch's input ports, scheduling, and departing
> > > > > from the switch's output ports? Or there is no such stuff in OVS?
> > > > > Cheers,
> > > > > Jfhu> Date: Tue, 6 Mar 2012 21:37:32 -0800
> > > > > > From: blp at nicira.com
> > > > > > To: hujingfei914 at msn.com
> > > > > > CC: discuss at openvswitch.org
> > > > > > Subject: Re: [ovs-discuss] Switch architecture of OVS userspace
> > switch
> > > > > >
> > > > > > On Wed, Mar 07, 2012 at 11:35:57AM +0800, HuJingfei wrote:
> > > > > > >
> > > > > > >
> > > > > > > Thanks, Ben, All right. However, at least there is a mapping
> > from the
> > > > > > > software implementation of a switch to its real component. Is
> > that
> > > > > > > right? For example,The struct, dp_netdev, may be mapped to a
> > switch,
> > > > > > > because of following mappings:1. member struct dp_netdev_queue
> > > > > > > queues[N_QUEUES] corresponds to actual buffer of a switch, every
> > > > > > > packet from input ports will enter this buffer first, then will
> > be
> > > > > > > scheduled to go to its destined output port.
> > > > > >
> > > > > > No, that's wrong, that's not at all how these queues are used.
> >  These
> > > > > > queues are used to respond to dpif_recv().  Please read the
> > > > > > documentation for that function to obtain more insight.
> > > > > >
> > > > > > > 2. member struct dp_netdev_port *ports[MAX_PORTS] corresponds to
> > > > > > > actual ports of a switch.
> > > > > >
> > > > > > Yes, that is correct.
> > > > > >
> > > > > > > Please correct me if I am wrong.  Cheers,Jfhu
> > > > > > > > Date: Tue, 6 Mar 2012 14:17:57 -0800
> > > > > > > > From: blp at nicira.com
> > > > > > > > To: hujingfei914 at msn.com
> > > > > > > > CC: discuss at openvswitch.org
> > > > > > > > Subject: Re: [ovs-discuss] Switch architecture of OVS
> > userspace switch
> > > > > > > >
> > > > > > > > On Tue, Mar 06, 2012 at 11:35:42AM +0800, HuJingfei wrote:
> > > > > > > > >
> > > > > > > > > Hi, all,I'm newbie to OVS. I know there are quite a lot of
> > switch
> > > > > > > > > architectures such as Shared Memory, Shared Medium,
> > Crossbar, Banyan
> > > > > > > > > and so on. Could anyone tell me the userspace OVS switch's
> > > > > > > > > architecture please?  Forgive me for my stupid question.
> >  Cheers, Jfhu
> > > > > > > >
> > > > > > > > It's a piece of software, not a piece of hardware, so it's not
> > > > > > > > meaningful to try to classify it in terms of hardware designs.
> > > > > > >
> > > > >
> > >
> > _______________________________________________
> > discuss mailing list
> > discuss at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/discuss
> >



More information about the discuss mailing list