[ovs-discuss] Multipath routing

Ben Pfaff blp at nicira.com
Mon Mar 19 22:56:04 UTC 2012


That's one way to do it, sure.  Flows are pretty cheap.  How big is
your N?  I wouldn't hesitate to do it this way up to, say, N=100.

On Mon, Mar 19, 2012 at 03:50:41PM -0700, Masoud Moshref Javadi wrote:
> Nice trick, but does that mean we need n_links-1 rules for each
> source on a switch running multipath routing?
> for example suppose a switch is connected to four machines: M0 on
> port 0,M1 on port 1,M2,M3
> I define this rules (loose syntax)
> ovs-ofctl add-flow br0 action=multipath..,resubmit on table 1
> 
> Then for each source I need to add n_links-1 rules
> ovs-ofctl add-flow br0 table=1,NXM_NX_REG0=0,nw_src=M0,action=output=1
> ovs-ofctl add-flow br0 table=1,NXM_NX_REG0=1,nw_src=M0,action=output=2
> ovs-ofctl add-flow br0 table=1,NXM_NX_REG0=2,nw_src=M0,action=output=3
> 
> 
> ovs-ofctl add-flow br0 table=1,NXM_NX_REG0=0,nw_src=M1,action=output=0
> ovs-ofctl add-flow br0 table=1,NXM_NX_REG0=1,nw_src=M1,action=output=2
> ovs-ofctl add-flow br0 table=1,NXM_NX_REG0=2,nw_src=M1,action=output=3
> and so on?
> 
> Is this correct?
> 
> On 3/19/2012 3:31 PM, Ben Pfaff wrote:
> >A register, such as NXM_NX_REG0[], is one reasonable choice.
> >
> >You can use "resubmit" along with a special OpenFlow table to map this
> >value to a destination.
> >
> >On Mon, Mar 19, 2012 at 03:29:21PM -0700, Masoud Moshref Javadi wrote:
> >>Hum, thanks I have not read that in detail.
> >>OK, still I have question: We store the output of multipath
> >>algorithm in a field defined there, but which field should we use?
> >>how the value of this field relates to the routing to the destination?
> >>
> >>On 3/19/2012 3:11 PM, Ben Pfaff wrote:
> >>>Did you read nicira-ext.h?
> >>>
> >>>On Mon, Mar 19, 2012 at 03:08:37PM -0700, Masoud Moshref Javadi wrote:
> >>>>I just want an example that fills the action part in the following rule:
> >>>>ovs-ofctl add-flow br0 nw_src=10.0.0.1/32,nw_dst=10.0.0.1/32,action=?
> >>>>
> >>>>The manual page says:
> >>>>
> >>>>    multipath(fields, basis, algorithm, n_links, arg, dst[start..end])
> >>>>
> >>>>    Hashes fields using basis as a universal hash parameter, then the
> >>>>    applies multipath link selection algorithm (with parameter arg) to
> >>>>    choose one of n_links output links numbered 0 through n_links minus
> >>>>    1, and stores the link into dst[start..end], which must be an NXM
> >>>>    field as described above.
> >>>>
> >>>>    Currently, fields must be either eth_src or symmetric_l4 and
> >>>>    algorithm must be one of modulo_n, hash_threshold, hrw, and
> >>>>    iter_hash. Only the iter_hash algorithm uses arg.
> >>>>
> >>>>"one of n_links output links numbered 0 through n_links minus 1",
> >>>>which links? Does it mean all ports? If yes, then what if it is the
> >>>>wrong port that does not lead to the destination? If the algorithm
> >>>>keeps track of the correct links that will lead to the destination
> >>>>what is the use of this parameter?
> >>>>What is dst[start..end]? would you give an example?
> >>>>what is *symmetric_l4?* there is no definition for it in this manual?
> >>>>
> >>>>On 3/19/2012 2:56 PM, Ben Pfaff wrote:
> >>>>>On Sat, Mar 17, 2012 at 10:41:05AM -0700, Masoud Moshref Javadi wrote:
> >>>>>>Would anyone give an example for a multipath action in openvswitch? How
> >>>>>>does the rule look like in ovs-ofctl command? What are the per-requisites?
> >>>>>It's all documented.  Which part is troublesomee?
> >>>>>
> >>>>>Thanks,
> >>>>>
> >>>>>Ben.
> 



More information about the discuss mailing list