Nach mehreren Monaten Arbeit ist nun "smp-pf" ein Bestandteil von FreeBSD 10-CURRENT geworden. Wie der Name sagt, handelt es sich dabei um eine für den Betrieb in SMP-Kernel optimierte Version von "OpenBSD pf". Arbeitet FreeBSD bisher mit fast unverändert aus OpenBSD importierten Versionen, stellt dies einen Bruch da, handelt es sich doch nun de facto um einen Fork. Die wichtigsten Details sind:
- Es wird weiterhin der bisher von FreeBSD genutzte, "alte" Syntax verwendet. Die pf.conf muss daher nicht angepasst werden.
- "smp-pf" ist auf großen Maschinen mit vielen Prozessoren wesentlich schneller als die bisher verwendete Variante. Des Weiteren soll es zu weniger Jitter kommen und das Gesamtsystem soll unter hoher, durch den Filter verursachter Last responsiver bleiben.
Für die nähere Zukunft ist geplant, "smp-pf" tiefer in den Kernel zu integrieren und nicht länger als von außen stammenden Code zu betrachten. Es soll an dieser Stelle noch einmal gesagt werden, dass diese Entscheidungen nicht getroffen wurden, da OpenBSD pf in seiner bisherigen Form ein schlechter Paketfilter war. Viel mehr war ein solcher Schritt durch die inzwischen deutlich voneinander divergierten Kernel von OpenBSD und FreeBSD notwendig, simple Imports waren zu kompliziert geworden und das Ergebnis dieser entsprach nicht länger den Qualitätsanforderungen. Weder von Standpunkt der Bugfreiheit aus betrachtet, noch aus Performance-Sichtweise.
Die Commit-Beschreibung:
Die Ankündigung: http://lists.freebsd.org/pipermail/freebsd-pf/2012-September/006740.html
- Es wird weiterhin der bisher von FreeBSD genutzte, "alte" Syntax verwendet. Die pf.conf muss daher nicht angepasst werden.
- "smp-pf" ist auf großen Maschinen mit vielen Prozessoren wesentlich schneller als die bisher verwendete Variante. Des Weiteren soll es zu weniger Jitter kommen und das Gesamtsystem soll unter hoher, durch den Filter verursachter Last responsiver bleiben.
Für die nähere Zukunft ist geplant, "smp-pf" tiefer in den Kernel zu integrieren und nicht länger als von außen stammenden Code zu betrachten. Es soll an dieser Stelle noch einmal gesagt werden, dass diese Entscheidungen nicht getroffen wurden, da OpenBSD pf in seiner bisherigen Form ein schlechter Paketfilter war. Viel mehr war ein solcher Schritt durch die inzwischen deutlich voneinander divergierten Kernel von OpenBSD und FreeBSD notwendig, simple Imports waren zu kompliziert geworden und das Ergebnis dieser entsprach nicht länger den Qualitätsanforderungen. Weder von Standpunkt der Bugfreiheit aus betrachtet, noch aus Performance-Sichtweise.
Die Commit-Beschreibung:
Code:
Author: glebius
Date: Sat Sep 8 06:41:54 2012
New Revision: 240233
URL: http://svn.freebsd.org/changeset/base/240233
Log:
Merge the projects/pf/head branch, that was worked on for last six months,
into head. The most significant achievements in the new code:
o Fine grained locking, thus much better performance.
o Fixes to many problems in pf, that were specific to FreeBSD port.
New code doesn't have that many ifdefs and much less OpenBSDisms, thus
is more attractive to our developers.
Those interested in details, can browse through SVN log of the
projects/pf/head branch. And for reference, here is exact list of
revisions merged:
r232043, r232044, r232062, r232148, r232149, r232150, r232298, r232330,
r232332, r232340, r232386, r232390, r232391, r232605, r232655, r232656,
r232661, r232662, r232663, r232664, r232673, r232691, r233309, r233782,
r233829, r233830, r233834, r233835, r233836, r233865, r233866, r233868,
r233873, r234056, r234096, r234100, r234108, r234175, r234187, r234223,
r234271, r234272, r234282, r234307, r234309, r234382, r234384, r234456,
r234486, r234606, r234640, r234641, r234642, r234644, r234651, r235505,
r235506, r235535, r235605, r235606, r235826, r235991, r235993, r236168,
r236173, r236179, r236180, r236181, r236186, r236223, r236227, r236230,
r236252, r236254, r236298, r236299, r236300, r236301, r236397, r236398,
r236399, r236499, r236512, r236513, r236525, r236526, r236545, r236548,
r236553, r236554, r236556, r236557, r236561, r236570, r236630, r236672,
r236673, r236679, r236706, r236710, r236718, r237154, r237155, r237169,
r237314, r237363, r237364, r237368, r237369, r237376, r237440, r237442,
r237751, r237783, r237784, r237785, r237788, r237791, r238421, r238522,
r238523, r238524, r238525, r239173, r239186, r239644, r239652, r239661,
r239773, r240125, r240130, r240131, r240136, r240186, r240196, r240212.
I'd like to thank people who participated in early testing:
Tested by: Florian Smeets <flo freebsd.org>
Tested by: Chekaluk Vitaly <artemrts ukr.net>
Tested by: Ben Wilber <ben desync.com>
Tested by: Ian FREISLICH <ianf cloudseed.co.za>
Die Ankündigung: http://lists.freebsd.org/pipermail/freebsd-pf/2012-September/006740.html