Mpd-4.1 released

2 views
Skip to first unread message

Alexander Motin

unread,
Feb 12, 2007, 6:04:03 AM2/12/07
to mpd-...@lists.sourceforge.net, FreeBSD Net
I am glad to present you the first stable release of mpd4.x branch - the
mpd4.1!

It has almost a two years passed since last stable release of mpd3.18
and I must say that this time wasn't spent useless. Comparing to the
3.18, release 4.1 presents:
- performance multithreading auth backend,
- IPv6 support,
- L2TP link type,
- working TCP and UDP link types,
- NetFlow,
- NAT,
- new Telnet console,
- WEB interface,
- Deflate and Predictor-1 traffic compression,
- DESE-bis traffic encryption,
- _HUGE_ amount of bug fixes, refactoring cases and performance
optimizations.

Considering above, the mpd3.x branch is announced as legacy and will not
be anymore supported and updated. All mpd users are strongly recommended
to upgrade to the latest 4.x release.

Complete change log of MPD4 branch you can find here:
http://mpd.sourceforge.net/doc/mpd5.html

You can download mpd in source form here:
http://sourceforge.net/project/showfiles.php?group_id=14145
, or install it via FreeBSD ports system.

--
Alexander Motin m...@alkar.net

Andrew Pantyukhin

unread,
Feb 12, 2007, 6:30:36 AM2/12/07
to Alexander Motin, FreeBSD Net, mpd-...@lists.sourceforge.net
On 2/12/07, Alexander Motin <m...@alkar.net> wrote:
> I am glad to present you the first stable release of mpd4.x
> branch - the mpd4.1!

You can't imagine how much your effort is appreciated!

We'll be looking at mpd4.1 this or next week during the
FreeBSD course at specialist.ru. It really seems you've
done a lot to shorten the learning curve while giving a
boost to functionality.

Thanks!

Andrew Bliznak

unread,
Feb 13, 2007, 3:35:31 AM2/13/07
to m...@alkar.net, freeb...@freebsd.org
Hi,

> I am glad to present you the first stable release of mpd4.x branch - the
> mpd4.1!

Thank you very much, great software!

I testing it now and have some bug reports...

I have set netflow node <nodename> option in mpd.conf to attach to
existing ng_netflow node
---
default:
load psrv1
load psrv3
...
pppoe:
...
set netflow node netflow
set netflow export 172.16.2.35 9996
...
psrv1:
new -n -i ng1 pppoe1 pppoe1
load pppoe
psrv3:
new -n -i ng2 pppoe2 pppoe2
load pppoe
...
---
After loading I got:
ngctl list
There are 115 total nodes:
...
Name: mpd45965-pppoe3-bpf Type: bpf ID: 000017ce Num hooks: 5
Name: mpd45965-pppoe3-vjc Type: vjc ID: 000017cd Num hooks: 4
Name: mpd45965-pppoe3 Type: ppp ID: 000017cc Num hooks: 7
Name: ng3 Type: iface ID: 000017cb Num hooks: 2
Name: mpd45965-pppoe3-so Type: socket ID: 000017ca Num hooks: 2
Name: <unnamed> Type: socket ID: 000017c9 Num hooks: 1
Name: mpd45965-mss Type: tcpmss ID: 000017c8 Num hooks: 40
Name: mpd45965-nfso Type: ksocket ID: 000017c7 Num hooks: 1
Name: mpd45965-nf Type: netflow ID: 000017c6 Num hooks: 3
Name: mpd45965-pppoe1-bpf Type: bpf ID: 000017c5 Num hooks: 5
Name: mpd45965-pppoe1-vjc Type: vjc ID: 000017c4 Num hooks: 4
Name: mpd45965-pppoe1 Type: ppp ID: 000017c3 Num hooks: 8
Name: ng1 Type: iface ID: 000017c2 Num hooks: 2
Name: mpd45965-pppoe1-so Type: socket ID: 000017c1 Num hooks: 2
Name: mpd43388-nfso Type: ksocket ID: 00001759 Num hooks: 1
Name: mpd43388-nf Type: netflow ID: 00001758 Num hooks: 1
Name: <unnamed> Type: ksocket ID: 000016e5 Num hooks: 1
Name: netflow Type: netflow ID: 000016e4 Num hooks: 5
Name: <unnamed> Type: pppoe ID: 00001691 Num hooks: 3
Name: ng0 Type: iface ID: 00001630 Num hooks: 0
Name: ng2 Type: iface ID: 00000013 Num hooks: 0
Name: vlan4 Type: ether ID: 0000000b Num hooks: 1
Name: rl0 Type: ether ID: 0000000a Num hooks: 2

First created bundle stay something special, it don't see
gNetflowNodeName, but rest connected correctly. Later, variable
gNetflowNodeName for first bundle is set and on shutdown mpd not
cleaning corresponding nodes. You can see two nodes from pid 43388...

Andrew Bliznak

unread,
Feb 13, 2007, 6:21:40 AM2/13/07
to Alexander Motin, freeb...@freebsd.org
2007/2/13, Alexander Motin <m...@alkar.net>:
> Hi.

>
> Andrew Bliznak wrote:
> > I have set netflow node <nodename> option in mpd.conf to attach to
> > existing ng_netflow node
> > ---
> > default:
> > load psrv1
> > load psrv3
> > ...
> > pppoe:
> > ...
> > set netflow node netflow
> > set netflow export 172.16.2.35 9996
> > ...
> > psrv1:
> > new -n -i ng1 pppoe1 pppoe1
> > load pppoe
>
> 'set netflow ...' options should be specified _before_ creation of any
> bundle which require it. Move 'set netflow ...' commands to the startup
> section.

OK. This works. Thanks...
One more questions.
a) Device type l2tp (copy pppoe config with changed device type)
produce INVARIANTS KASSERT in sys/netgraph/ng_l2tp.c on first packet
from nearest cisco :(
b) Now on exit not cleaned only three nodes:
...
Name: <unnamed> Type: pppoe ID: 00001843 Num hooks: 1


Name: ng0 Type: iface ID: 00001630 Num hooks: 0
Name: ng2 Type: iface ID: 00000013 Num hooks: 0

...
pyvo# ngctl show \[00001843\]:
Name: <unnamed> Type: pppoe ID: 00001843 Num hooks: 1
Local hook Peer name Peer type Peer ID Peer hook
---------- --------- --------- ------- ---------
ethernet vlan4 ether 0000000b orphans

>
> --
> Alexander Motin m...@alkar.net
> Optima Telecom
>

Alexander Motin

unread,
Feb 13, 2007, 6:53:55 AM2/13/07
to Andrew Bliznak, freeb...@freebsd.org
Andrew Bliznak wrote:
> One more questions.
> a) Device type l2tp (copy pppoe config with changed device type)
> produce INVARIANTS KASSERT in sys/netgraph/ng_l2tp.c on first packet
> from nearest cisco :(

I know about one KASSERT problem in ng_l2tp. I have already sent patches
to the commiter and waiting for his reply. You can try patch from
attachment.

> b) Now on exit not cleaned only three nodes:
> ...
> Name: <unnamed> Type: pppoe ID: 00001843 Num hooks: 1

This is current normal behavior. It doesn't usually make any problems.

> Name: ng0 Type: iface ID: 00001630 Num hooks: 0
> Name: ng2 Type: iface ID: 00000013 Num hooks: 0

This is strange. I think it can be result of using -i parameter at
bundle creation. Try to not use it.

ng_l2tp.c.patch

Andrew Bliznak

unread,
Feb 13, 2007, 7:59:30 AM2/13/07
to Alexander Motin, freeb...@freebsd.org
2007/2/13, Alexander Motin <m...@alkar.net>:

> Andrew Bliznak wrote:
> > One more questions.
> > a) Device type l2tp (copy pppoe config with changed device type)
> > produce INVARIANTS KASSERT in sys/netgraph/ng_l2tp.c on first packet
> > from nearest cisco :(
>
> I know about one KASSERT problem in ng_l2tp. I have already sent patches
> to the commiter and waiting for his reply. You can try patch from
> attachment.

Patch works, I now can connect cisco router without KASSERTs

>
> > b) Now on exit not cleaned only three nodes:
> > ...
> > Name: <unnamed> Type: pppoe ID: 00001843 Num hooks: 1
>
> This is current normal behavior. It doesn't usually make any problems.

OK

>
> > Name: ng0 Type: iface ID: 00001630 Num hooks: 0
> > Name: ng2 Type: iface ID: 00000013 Num hooks: 0
>
> This is strange. I think it can be result of using -i parameter at
> bundle creation. Try to not use it.

This clear all issues for now. Thank you!!!

Bjoern A. Zeeb

unread,
Feb 13, 2007, 8:37:34 AM2/13/07
to Alexander Motin, freeb...@freebsd.org, Andrew Bliznak
On Tue, 13 Feb 2007, Alexander Motin wrote:

Hi,

--- ng_l2tp.c.orig Sat Feb 10 06:58:03 2007
+++ ng_l2tp.c Sat Feb 10 06:58:00 2007
@@ -1121,6 +1121,10 @@

/* If ack is still outstanding, send a ZLB */
- if (seq->xack != seq->nr)
+ if (seq->xack != seq->nr) {
ng_l2tp_xmit_ctrl(priv, NULL, seq->ns);
+ /* If there was memory error, ignore it.
+ We must keep state consistent here. */
+ seq->xack = seq->nr;
+ }

This change is not needed. ng_l2tp_xmit_ctrl() does this already.

It's not a good idea to remove the L2TP_SEQ_CHECK()s.
Been there years ago but seems I missed to get this fixed
in the FreeBSD repo.
The problem is in ng_l2tp_seq_check(). Fix it there.

/bz

--
Bjoern A. Zeeb bzeeb at Zabbadoz dot NeT

Alexander Motin

unread,
Feb 13, 2007, 9:42:55 AM2/13/07
to Bjoern A. Zeeb, freeb...@freebsd.org, Andrew Bliznak
Bjoern A. Zeeb wrote:
> --- ng_l2tp.c.orig Sat Feb 10 06:58:03 2007
> +++ ng_l2tp.c Sat Feb 10 06:58:00 2007
> @@ -1121,6 +1121,10 @@
>
> /* If ack is still outstanding, send a ZLB */
> - if (seq->xack != seq->nr)
> + if (seq->xack != seq->nr) {
> ng_l2tp_xmit_ctrl(priv, NULL, seq->ns);
> + /* If there was memory error, ignore it.
> + We must keep state consistent here. */
> + seq->xack = seq->nr;
> + }
>
> This change is not needed. ng_l2tp_xmit_ctrl() does this already.

It does this usually. But in case of no free mbufs it does not. Usually
it's ok. But in this case it will lead to assertion in next check. The
other way is to schedule next timeout, but in lack of system resources
it can be better to just skip this packet.

> It's not a good idea to remove the L2TP_SEQ_CHECK()s.

It is _incorrect_ to call it there. When ng_l2tp_seq_xack_timeout()
called callout_pending() function will already return FALSE because of
timeout already ended. But at this moment action is not actually done
and seq->xack != seq->nr. This leads to KASSERT without any reason.

> Been there years ago but seems I missed to get this fixed
> in the FreeBSD repo.
> The problem is in ng_l2tp_seq_check(). Fix it there.

Problem is not there! ng_l2tp_seq_check() works correctly from it's
point of view.

Reply all
Reply to author
Forward
0 new messages