With the impending release of Shorewall 3.4, I have begun thinking about
where we go from here. The following are some thoughts about the current
state of Shorewall and possibilities for the future.

Activity on the mailing lists and IRC channel has been steadily declining
for the last couple of years. This signals to me that the rate at which
people are adopting Shorewall is waning (I grant that the documentation has
gotten better over the years which helps lower the noise level somewhat).
While I've never had any ambitions toward dominating the OSS firewall
market, Shorewall takes a lot of work so I would prefer to spend my effort
on something that people want to use. Maybe it is still Shorewall -- maybe
it is something else.

My list of the major Shorewall shortcomings:

1) No GUI (other than Webmin). That is something that I personally am
   unlikely to change because I have no interest in spending my time
   developing one. Besides, first attempts at GUI creation tend to have
   disappointing results at best.

2) Performance and scaling issues. Shorewall is being used in larger and
   more complex configurations and the time required to run the generated
   script increases non-linearly with configuration complexity. This has
   been a  common theme on the mailing list recently. Performance of the
   shell-based compiler is also awful when dealing with large complex
   configurations.

3) No IPv6 Support. We've talked about this before.

4) Lack of an ability to make quick "on the fly" configuration changes (this
   is closely related to the performance problem -- if "shorewall restart"
   always took less that a second, I don't believe that this would be an
   issue).

Resolving these issues will require considerable change to the current
shell-based product and I suspect that just adding IPv6 support would make
the performance problem even worse. My feeling is that the current
shell-based implementation has gone about as far as it can go and that
adding additional major function to it while trying to maintain even the
current mediocre level of performance will be difficult.

I have begun some experimentation with rewriting the compiler in Perl and
that is looking promising. Converting to Perl will unfortunately present
migration/compatibility issues with compile-time extension scripts although
I've been able to retain shorewall.conf and /etc/shorewall/params
functionality for the most part. A Perl-based compiler would of course mean
the end of the road for Shorewall Embedded System support (at least for the
full Shorewall product) since Perl is typically not available on those
systems. Embedded Systems could still support Shorewall Lite.

Here are a couple of possible approaches to the run-time performance problem.

a) Keep the current zone-policy-rule paradigm but have the
   compiler generate 'iptables-restore' input.

        This is clearly preferable to the current approach of running
        iptables repeatedly in the compiled script. We would still be stuck
        with the order (n**2) scaling issues inherent in that paradigm
        (see http://www.shorewall.net/ScalabilityAndPerformance.html).

b) Consider other paradigms which do not suffer from the scaling issues
   implicit in zone-policy-rule.

        For example, I'm familiar with one organization that has created a
        firewall configuration tool based on a service-policy-rule      
        paradigm which scales much better.

Both approaches present migration/compatibility issues. Approach a)
maintains compatibility with the tabular config files from earlier Shorewall
releases but would likely invalidate most runtime extension scripts. We
could probably continue to call the product "Shorewall" though as the
changes would be more evolutionary than revolutionary. Approach b) is
clearly a new product -- "Shorewall-ng" or something.

Approach a) is not as straight-forward as it might first appear. To
accommodate Shorewall Lite, the compiler cannot simply create a single
monolithic iptables-restore file because part of the contents of that file
cannot be determined until run-time (all uses of 'detect' for example). So
at run-time, the script still has to perform some configuration analysis
then glue together an iptables-restore file that is appropriate for the
current configuration.

So long as we are discussing what to add to Shorewall, it is also worth
asking what the next version of the product can leave behind. Given that
BRIDGING=Yes won't work with kernel version 2.6.20 and later, that feature
is a rather obvious choice for elimination. ECN is now widely deployed on
the Internet so /etc/shorewall/ecn might also be a candidate for extinction.
Are there others?

I welcome your input and look forward to further discussion.

Thanks,
-Tom
-- 
Tom Eastep    \ Nothing is foolproof to a sufficiently talented fool
Shoreline,     \ http://shorewall.net
Washington USA  \ [EMAIL PROTECTED]
PGP Public Key   \ https://lists.shorewall.net/teastep.pgp.key


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
leaf-devel mailing list
leaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/leaf-devel

Reply via email to