Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 May 2014 23:06:43 +0800
From:      "bycn82" <bycn82@gmail.com>
To:        "'Julian Elischer'" <julian@freebsd.org>, "'Luigi Rizzo'" <rizzo@iet.unipi.it>, <freebsd-ipfw@FreeBSD.org>
Subject:   RE: kern/189720: [ipfw] [patch] pps action for ipfw
Message-ID:  <000001cf7c18$c6cbd460$54637d20$@gmail.com>
In-Reply-To: <53889829.6030307@freebsd.org>
References:  <201405291520.s4TFK124032925@freefall.freebsd.org> <007f01cf7b52$efd8a0c0$cf89e240$@gmail.com> <53889829.6030307@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi ,
I am currently using HZ=3D2 in my testing environment, then the traffic =
in dummynet  by default delays for 500ms, the same reason for this PPS. =
Because it is based on the TICK.

How about introduce another option named PPT ? ( sounds familiar! ). and =
in the ipfw_chk,  PPS can just convert the duration from measurement =
`milliseconds` to `ticks`, and can reuse the logic of PPT. PPT =
technically is perfect. But for user, It is ugly. They need to know what =
TICK is ! anyway, at least user have an option to choose when they =
really need to be accurate.

Regards,
Bycn82

> -----Original Message-----
> From: Julian Elischer [mailto:julian@freebsd.org]
> Sent: 30 May, 2014 22:40
> To: bycn82; 'Luigi Rizzo'; freebsd-ipfw@FreeBSD.org
> Subject: Re: kern/189720: [ipfw] [patch] pps action for ipfw
>=20
> On 5/29/14, 11:30 PM, bycn82 wrote:
> > I got it,
> >
> > if the HZ=3D3, it always cannot meet the " 1 packet per 500ms"  =
perfectly.
> > But if we to "X packet per Y ticks", actually the result is the =
same, still
> cannot meet the "1 packet per 500 ms" perfectly, instead, the "packet =
per Y
> ticks" will force user to use " X packet per Y*300 ms".   And the user =
need to
> understand how many millisecond each tick is .
> on e can write an implementation that notes how much the calculation =
was
> off by for each tick and corrects the number for the next tick..
>=20
> e.g. with Hz=3D10,   8pps should give sometimes 1ppt  and sometimes =
0ppt
> but a simple calculation will always give 0 every tick so you need to =
have
> some way of carrying forward 'unused bandwidth' so that  teh =
calculation
> looks like (over  a second)
> ppt(real) ppt(int)
> 0.8             (0)
> 0.8+0.8=3D1.6 (1)
> 0.6+0.8=3D1.4 (1)  (subtract 1 from 1.6, and then add the 0.8 per =
tick)
> 0.4+0.8=3D1.2 (1)
> 0.2+0.8=3D1.0 (1)
> 0.0+0.8=3D0.8(0)
> (sequence repeats)
> 0.8+0.8=3D1.6 (1)
> 0.6+0.8=3D1.4 (1)
> 0.4+0.8=3D1.2 (1)
> 0.2+0.8=3D1.0 (1)
> 0.0+0.8=3D0.8(0)
>=20
> if you use any of the the int(ppt) in a tick you subtract the amount =
used. if
> not you allow it to build, up to some maximum value.
>=20
> (sequence repeats)
> 0.8+0.8=3D1.6 (1)  (not used)
> 1.6+0.8=3D2.4 (2)  (not used)
> 2.4+0.8=3D3.2 (3)  (not used)
> 3.2+0.8=3D4.0 (4)  (4 packets allowed through further packets held or
> dropped)
> 0.0+0.8=3D0.8(0)
> 0.8+0.8=3D1.6 (1)  (not used)
> 1.6+0.8=3D2.4 (2)  (not used)
> 2.4+0.8=3D3.2 (3)  1 packet used.. 1.0 subtracted
> 2.2+0.8=3D3.0 (4)  (4 packets allowed through further packets held or
> dropped)
> 0.0+0.8=3D0.8(0)
> etc.
>=20
> one does this with some form of fixed point arithmetic as floating =
point isn't
> used in the kernel.
>=20
>=20
>=20
> > So I will update it this weekend.
> >
> >
> >> -----Original Message-----
> >> From: owner-freebsd-ipfw@freebsd.org [mailto:owner-freebsd-
> >> ipfw@freebsd.org] On Behalf Of 'Luigi Rizzo'
> >> Sent: 29 May, 2014 23:20
> >> To: freebsd-ipfw@FreeBSD.org
> >> Subject: Re: kern/189720: [ipfw] [patch] pps action for ipfw
> >>
> >> The following reply was made to PR kern/189720; it has been noted =
by
> >> GNATS.
> >>
> >> From: 'Luigi Rizzo' <rizzo@iet.unipi.it>
> >> To: bycn82 <bycn82@gmail.com>
> >> Cc: bug-followup@FreeBSD.org
> >> Subject: Re: kern/189720: [ipfw] [patch] pps action for ipfw
> >> Date: Thu, 29 May 2014 17:17:59 +0200
> >>
> >>   On Thu, May 29, 2014 at 11:06:27PM +0800, bycn82 wrote:
> >>   >
> >>   >
> >>   > -----Original Message-----
> >>   > From: Luigi Rizzo [mailto:rizzo@iet.unipi.it]  > Sent: 29 May, =
2014 22:12  >
> To:
> >> bug-followup@FreeBSD.org; bycn82@gmail.com  > Subject: kern/189720:
> >> [ipfw] [patch] pps action for ipfw  >  > Hi,  > I have looked at =
the update
> from
> >> May 13th but it is not ready yet, the code assumes HZ=3D1000 so 1 =
tick=3D1ms.
> >>   >
> >>   > The translation can be done in userspace or in the kernel.
> >>   > I would prefer the latter.
> >>   > I see,
> >>   > If the HZ=3D3, that means every tick=3D333ms  > And if the user =
wants to ???
> 1
> >> packet per 500ms???, then in the backend will not do the exactly =
the
> same as
> >> what user expect.
> >>   >
> >>   > Actually the implementation should be ???packets per ticks???, =
so how
> >> about this? Instead of translate it in codes. Why not update the =
document,
> >> and explain it to the user in the document ?
> >>
> >>   'Packets per tick' this is not a useful specification  since the =
tick's duration
> is
> >> unknown to the user.
> >>   Depending on the platform you can have HZ ranging from 15-20 (on
> windows)
> >> to 10000 or even more. Normal values are 100, 250, 1000 but  you =
just
> cannot
> >> know what you are going to get.
> >>
> >>   Yes there are rounding issues, and yes it is boring to write  =
code to
> handle
> >> them.
> >>
> >>   luigi
> >> _______________________________________________
> >> freebsd-ipfw@freebsd.org mailing list
> >> http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw
> >> To unsubscribe, send any mail to "freebsd-ipfw-
> unsubscribe@freebsd.org"
> > _______________________________________________
> > freebsd-ipfw@freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw
> > To unsubscribe, send any mail to =
"freebsd-ipfw-unsubscribe@freebsd.org"
> >




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?000001cf7c18$c6cbd460$54637d20$>