On Sat, May 09, 2020 at 08:46:56AM +0800, Tonghao Zhang wrote:
> On Sat, May 9, 2020 at 7:12 AM William Tu <[email protected]> wrote:
> >
> > On Thu, Apr 30, 2020 at 07:00:38PM +0800, [email protected] wrote:
> > > From: Tonghao Zhang <[email protected]>
> > >
> > > When setting the meter rate to 4+Gbps, there is an overflow, the
> > > meters don't work as expected.
> > >
> > > Cc: Ilya Maximets <[email protected]>
> > > Cc: William Tu <[email protected]>
> > > Cc: Jarno Rajahalme <[email protected]>
> > > Cc: Ben Pfaff <[email protected]>
> > > Cc: Andy Zhou <[email protected]>
> > > Signed-off-by: Tonghao Zhang <[email protected]>
> > > ---
> > >  include/openvswitch/ofp-meter.h | 2 +-
> > >  lib/dpif-netdev.c               | 4 ++--
> > >  lib/ofp-meter.c                 | 4 ++--
> > >  3 files changed, 5 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/include/openvswitch/ofp-meter.h 
> > > b/include/openvswitch/ofp-meter.h
> > > index 6776eae87e26..f55f89ac1a71 100644
> > > --- a/include/openvswitch/ofp-meter.h
> > > +++ b/include/openvswitch/ofp-meter.h
> > > @@ -37,7 +37,7 @@ struct ofputil_meter_band {
> > >      uint16_t type;
> > >      uint8_t prec_level;         /* Non-zero if type == 
> > > OFPMBT_DSCP_REMARK. */
> > >      uint32_t rate;
> > > -    uint32_t burst_size;
> > > +    uint64_t burst_size;
> > >  };
> > >
> > >  void ofputil_format_meter_band(struct ds *, enum ofp13_meter_flags,
> > > diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
> > > index 59546db6a2a2..104347d8b251 100644
> > > --- a/lib/dpif-netdev.c
> > > +++ b/lib/dpif-netdev.c
> > > @@ -277,7 +277,7 @@ static bool dpcls_lookup(struct dpcls *cls,
> > >
> > >  struct dp_meter_band {
> > >      struct ofputil_meter_band up; /* type, prec_level, pad, rate, 
> > > burst_size */
> > > -    uint32_t bucket; /* In 1/1000 packets (for PKTPS), or in bits (for 
> > > KBPS) */
> > > +    uint64_t bucket; /* In 1/1000 packets (for PKTPS), or in bits (for 
> > > KBPS) */
> >
> > why setting to 4Gbps will overflow?
> > Each unit in bucket is 1kbpf, so 4Gbps is around 4M, around 2^20.
> Hi William, thanks for your review,
> If we set the rate to 4300000kbps == 4.3Gbps
> ovs-ofctl -O OpenFlow13 add-meter br-int "meter=104 kbps stats
> bands=type=drop rate=4300000"
> 
> In the dpif_netdev_meter_set function:
> meter->bands[i].up.burst_size *= 1000;
> burst_size should be 4300000000 but the max u32 is 4294967296
> 
Now I understand, thanks.

Acked-by: William Tu <[email protected]>

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to