[pox-dev] Unable to set a match based on nw_tos
Sameer Katti
skatti at usc.edu
Mon Dec 9 01:56:26 PST 2013
Thanks Murphy,
Finally got it to work. I set the ToS bits in my packet generation code as
4. And set a match for nw_tos=4 on the switch. This was a little confusing.
On Sun, Dec 8, 2013 at 11:54 PM, Murphy McCauley
<murphy.mccauley at gmail.com>wrote:
> The issue you're having is described on page 24 of the OpenFlow spec as
> well as on the ovs-ofctl man page, but without some context, it may not
> entirely make sense. Specifically, the spec says:
> The nw_tos fi eld is the 6 upper bits of the ToS field to set, in the
> original bit positions (shifted to the left by 2).
>
> To understand this better: nw_tos is actually not really to do with the
> TOS field (which is long retired), but with the DiffServ field which
> superseded it. The bottom two bits of this field were originally unused,
> and later became the ECN bits. The top six bits are the DiffServ Code
> Point (DSCP), which is what nw_tos actually matches (right; it should
> actually probably be called nw_dscp).
>
> So the value you give to OpenFlow for nw_tos is actually a six bit field
> -- the top six bits of eight. One might imagine that the values of this
> field would therefore be 0 through 63, and would be shifted up two bits
> when written to the packet. However, as the spec says, these are "in the
> original bit positions". Thus, the smallest value legal for this field is
> 4 (followed by 8 and then 12, etc.).
>
> TLDR: You can't set the bottom two bits. You want one of the following,
> though it's hard to say which for sure: 1) to shift what you think the
> value should be to the left by two, or 2) to set the ECN bits and not the
> "TOS" (DSCP) bits.
>
> -- Murphy
>
> On Dec 8, 2013, at 11:12 PM, Sameer Katti <skatti at usc.edu> wrote:
>
> > Hi All,
> >
> > I am trying to set a flow that matches based on the nw_tos field of the
> match object. But when I dump the flows on the switch it has nw_tos field
> set as 0.
> > I am using OpenvSwitch 1.10 on Mininet 2.0
> > The code snippet I am using is:-
> >
> > msg = of.ofp_flow_mod()
> > #msg.match.dl_dst = packet.dst
> > msg.match.dl_type = ethernet.IP_TYPE
> > msg.match.nw_tos = 1;
> >
> > Even after installing a flow with such a match the nw_tos is still set
> to zero.
> >
> > *** s1
> ------------------------------------------------------------------------
> > NXST_FLOW reply (xid=0x4):
> > cookie=0x0, duration=13.677s, table=0, n_packets=1, n_bytes=98,
> idle_age=12, ip,dl_dst=d2:35:53:03:83:bc,nw_tos=0 actions=output:1
> > cookie=0x0, duration=6.652s, table=0, n_packets=3, n_bytes=294,
> idle_age=3, ip,dl_dst=da:79:78:e1:7c:4f,nw_tos=0 actions=output:2
> >
> >
> > How should I set the nw_tos field in ofp_match object?
> > --
> > -Sameer
>
>
--
-Sameer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.noxrepo.org/pipermail/pox-dev-noxrepo.org/attachments/20131209/634d3cca/attachment-0002.htm>
More information about the pox-dev
mailing list