Re: [PATCH] conntrackd: basic TIPC implementation for NOTRACK mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for your comments Pablo,

I added a small paragraph on the conntrack-tools.tmpl like you suggested.
I understood that you wanted the default TIPC conntrackd.conf to replace the TCP conntrackd.conf on the notrack directory, so that's what I did.

From : Quentin Aebischer <quentin.aebischer@xxxxxxxxxxxxxx>

- Added documentation to the conntrack-tools for the TIPC protocol with NOTRACK mode.

Signed-off-by: Quentin Aebischer <quentin.aebischer@xxxxxxxxxxxxxx>
---
 doc/manual/conntrack-tools.tmpl  |   17 ++++--
 doc/sync/notrack/README          |   16 ++++-
 doc/sync/notrack/conntrackd.conf |  119 +++++++++++++++++++------------------
 3 files changed, 86 insertions(+), 66 deletions(-)

diff --git a/doc/manual/conntrack-tools.tmpl b/doc/manual/conntrack-tools.tmpl
index 4936a76..40c331c 100644
--- a/doc/manual/conntrack-tools.tmpl
+++ b/doc/manual/conntrack-tools.tmpl
@@ -573,20 +573,27 @@ Sync {
 </sect3>

 <sect3 id="sync-transport-protocol">
-<title>Using UDP, TCP or multicast for flow-state synchronization</title>
+
+<title>Using UDP, multicast, TCP or TIPC for flow-state synchronization</title>

  <para>You can use up to three different transport layer protocols to
- synchronize flow-state changes between the firewalls: UDP, TCP and
- Multicast. UDP and multicast are unreliable but together with the FT-FW
- mode provide partial reliable flow-state synchronization.
+ synchronize flow-state changes between the firewalls: UDP, TCP, Multicast and
+TIPC. UDP and multicast are unreliable but together with the FT-FW
+ mode provide partial reliable flow-state synchronization. TIPC provides a
+connectionless yet reliable message-based delivery system.
  </para>

- <para>The preferred choice is FT-FW over UDP, or multicast alternatively.
+ <para>The preferred choice is FT-FW over UDP unicast/multicast, or TIPC alternatively.
  TCP introduces latency in the flow-state synchronization due to the
  congestion control. Under flow-state message are lost, the FIFO delivery
  becomes also a problem since the backup firewall quickly gets out of
  sync. For that reason, its use is discouraged. Note that using TCP only
  makes sense with the NOTRACK mode.
+ TIPC provides some kind of link level sequencing in order to guarantee succesfull + delivery of messages between nodes in the cluster. Hence, it is recommended to use it + along with NOTRACK mode to minimise protocol overhead on the firewalls dedicated link. + Further informations on how to configure TIPC can be found in the README file under
+ the doc/notrack/ directory
  </para>

 </sect3>
diff --git a/doc/sync/notrack/README b/doc/sync/notrack/README
index b064e21..e7afcc7 100644
--- a/doc/sync/notrack/README
+++ b/doc/sync/notrack/README
@@ -1,3 +1,13 @@
-This directory contains the files for the NOTRACK replication protocol. This
-protocol provides best effort delivery. Therefore, it is unreliable unless
-that you select TCP-based state-synchronization.
+Installation instructions :
+
+TIPC is a built-in kernel module since kernel version 2.6.35 ; please make sure your using a => 2.6.35 kernel with TIPC 2.0, as this patch has not been tested with older versions of the protocol yet.
+
+For easy and fast configuration, you must install the TIPC utilies v2.0.0, available from sources here :
+
+ git://tipc.git.sourceforge.net/gitroot/tipc/tipcutils (branch tipcutils2.0)
+
+or by using aptitude on debian distributions :
+
+    sudo apt-get install tipcutils
+
+For further details on installation, node and network configuration, please refer to the online documentation : http://tipc.sourceforge.net/doc/tipc_2.0_users_guide.html#installation. diff --git a/doc/sync/notrack/conntrackd.conf b/doc/sync/notrack/conntrackd.conf
index 34e7b32..acfc91b 100644
--- a/doc/sync/notrack/conntrackd.conf
+++ b/doc/sync/notrack/conntrackd.conf
@@ -4,6 +4,17 @@
 Sync {
 	Mode NOTRACK {
 		#
+		# Size of the resend queue (in objects). This is the maximum
+		# number of objects that can be stored waiting to be confirmed
+		# via acknoledgment. If you keep this value low, the daemon
+		# will have less chances to recover state-changes under message
+		# omission. On the other hand, if you keep this value high,
+		# the daemon will consume more memory to store dead objects.
+		# Default is 131072 objects.
+		#
+		# ResendQueueSize 131072
+
+		#
 		# This parameter allows you to set an initial fixed timeout
 		# for the committed entries when this node goes from backup
 		# to primary. This mechanism provides a way to purge entries
@@ -26,14 +37,19 @@ Sync {
 		#
 		# PurgeTimeout 60

+		# Set the acknowledgement window size. If you decrease this
+		# value, the number of acknowlegdments increases. More
+		# acknowledgments means more overhead as conntrackd has to
+		# handle more control messages. On the other hand, if you
+		# increase this value, the resend queue gets more populated.
+		# This results in more overhead in the queue releasing.
+		# The following value is based on some practical experiments
+		# measuring the cycles spent by the acknowledgment handling
+		# with oprofile. If not set, default window size is 300.
 		#
-		# This clause allows you to disable the internal cache. Thus,
-		# the synchronization messages are directly send through
-		# the dedicated link. This option is set of off by default.
-		#
-		# DisableInternalCache Off
+		# ACKWindowSize 300

-		#
+		#
 		# This clause allows you to disable the external cache. Thus,
 		# the state entries are directly injected into the kernel
 		# conntrack table. As a result, you save memory in user-space
@@ -57,33 +73,33 @@ Sync {
 	#	iptables -I INPUT -d 225.0.0.50 -j ACCEPT
 	#	iptables -I OUTPUT -d 225.0.0.50 -j ACCEPT
 	#
-	Multicast {
+	# Multicast {
 		#
 		# Multicast address: The address that you use as destination
 		# in the synchronization messages. You do not have to add
 		# this IP to any of your existing interfaces. If any doubt,
 		# do not modify this value.
 		#
-		IPv4_address 225.0.0.50
+		# IPv4_address 225.0.0.50

 		#
 		# The multicast group that identifies the cluster. If any
 		# doubt, do not modify this value.
 		#
-		Group 3780
+		# Group 3780

 		#
 		# IP address of the interface that you are going to use to
 		# send the synchronization messages. Remember that you must
 		# use a dedicated link for the synchronization messages.
 		#
-		IPv4_interface 192.168.100.100
+		# IPv4_interface 192.168.100.100

 		#
 		# The name of the interface that you are going to use to
 		# send the synchronization messages.
 		#
-		Interface eth2
+		# Interface eth2

 		# The multicast sender uses a buffer to enqueue the packets
 		# that are going to be transmitted. The default size of this
@@ -94,10 +110,8 @@ Sync {
 		# notice some packet loss, you may want to increase the size
 		# of the sender buffer. The default size is usually around
 		# ~100 KBytes which is fairly small for busy firewalls.
-		# Note: This protocol is best effort, it is really recommended
-		# to increase the buffer size.
 		#
-		SndSocketBuffer 1249280
+		# SndSocketBuffer 1249280

 		# The multicast receiver uses a buffer to enqueue the packets
 		# that the socket is pending to handle. The default size of this
@@ -106,20 +120,18 @@ Sync {
 		# receiver queue. The overrun results packet loss, thus, losing
 		# state information that would have to be retransmitted. If you
 		# notice some packet loss, you may want to increase the size of
-		# of the sender buffer. The default size is usually around
+		# the receiver buffer. The default size is usually around
 		# ~100 KBytes which is fairly small for busy firewalls.
-		# Note: This protocol is best effort, it is really recommended
-		# to increase the buffer size.
 		#
-		RcvSocketBuffer 1249280
+		# RcvSocketBuffer 1249280

-		#
+		#
 		# Enable/Disable message checksumming. This is a good
 		# property to achieve fault-tolerance. In case of doubt, do
 		# not modify this value.
 		#
-		Checksum on
-	}
+		# Checksum on
+	# }
 	#
 	# You can specify more than one dedicated link. Thus, if one dedicated
 	# link fails, conntrackd can fail-over to another. Note that adding
@@ -192,60 +204,50 @@ Sync {
 		# Checksum on
 	# }

-	#
-	# You can also use Unicast TCP to propagate events. Thus, the NOTRACK
-	# mode becomes reliable.
-	#
-	# TCP {
-		#
-		# TCP address that this firewall uses to listen to events.
-		#
-		# IPv4_address 192.168.2.100
-		#
-		# or you may want to use an IPv6 address:
-		#
-		# IPv6_address fe80::215:58ff:fe28:5a27
-
+	TIPC {
 		#
-		# Destination TCP address that receives events, ie. the other
-		# firewall's dedicated link address.
+		# Name of the other TIPC port in the cluster (in the form type:instance)
 		#
-		# IPv4_Destination_Address 192.168.2.101
+		  TIPC_Destination_Name 1000:51
+
 		#
-		# or you may want to use an IPv6 address:
+		# Name of the local TIPC port (used to listen to events)
 		#
-		# IPv6_Destination_Address fe80::2d0:59ff:fe2a:775c
+		  TIPC_Name 1000:50

 		#
-		# TCP port used
+		# The name of the TIPC configured interface that you are going to use
+		# to send synchronization messages.
 		#
-		# Port 3780
-
+		  Interface eth0
+
 		#
-		# The name of the interface that you are going to use to
-		# send the synchronization messages.
+		# The importance of the TIPC messages sent (the more important
+		# this is, the more packets will be enabled to queue up on the
+		# slave).
+		# This should be set to High or Critical to avoid congestion
+		# on the receiver side.
+		# (possible values : LOW, MEDIUM, HIGH, CRITICAL)
 		#
-		# Interface eth2
+		  TIPC_Message_Importance HIGH

 		#
 		# The sender socket buffer size
-		#
-		# SndSocketBuffer 1249280
+		#
+		#  SndSocketBuffer 1249280

 		#
 		# The receiver socket buffer size
 		#
-		# RcvSocketBuffer 1249280
+		#  RcvSocketBuffer 1249280

-		#
-		# Enable/Disable message checksumming.
 		#
-		# Checksum on
-	# }
+		# Current TIPC implementation doesnt allow checksumming
+	}

-	#
+	#
 	# Other unsorted options that are related to the synchronization.
-	#
+	#
 	# Options {
 		#
 		# TCP state-entries have window tracking disabled by default,
@@ -259,9 +261,9 @@ Sync {
 		# you want to enable. Default is off.
 		#
 		# ExpectationSync {
-		#       ftp
-		#       h323
-		#       sip
+		#	ftp
+		#	h323
+		#	sip
 		# }
 		#
 		# You can use this alternatively:
@@ -368,6 +370,7 @@ General {
 	#
 	# NetlinkOverrunResync On

+	#
 	# If you want reliable event reporting over Netlink, set on this
 	# option. If you set on this clause, it is a good idea to set off
 	# NetlinkOverrunResync. This option is off by default and you need


Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx> a écrit :

On Thu, Jan 26, 2012 at 09:46:41PM -0500, Quentin Aebischer wrote:
Sorry, forgot to add conntrackd.conf example and README files ...

From : Quentin Aebischer <quentin.aebischer@xxxxxxxxxxxxxx>

Example file conntrackd.conf and README for TIPC implementation of
the conntrackd daemon.

Signed-off-by: Quentin Aebischer <quentin.aebischer@xxxxxxxxxxxxxx>
---
 doc/sync/tipc/README          |   13 ++

I'd appreciate if you can send me a patch for the
doc/manual/conntrack-tools.tmpl instead.

I suggest you to add a small paragraph at "Other configuration
options".

 doc/sync/tipc/conntrackd.conf |  454
+++++++++++++++++++++++++++++++++++++++++
 2 files changed, 467 insertions(+), 0 deletions(-)

diff --git a/doc/sync/tipc/README b/doc/sync/tipc/README
new file mode 100644
index 0000000..e7afcc7
--- /dev/null
+++ b/doc/sync/tipc/README
@@ -0,0 +1,13 @@
+Installation instructions :
+
+TIPC is a built-in kernel module since kernel version 2.6.35 ;
please make sure your using a => 2.6.35 kernel with TIPC 2.0, as
this patch has not been tested with older versions of the protocol
yet.
+
+For easy and fast configuration, you must install the TIPC utilies
v2.0.0, available from sources here :
+
+    git://tipc.git.sourceforge.net/gitroot/tipc/tipcutils (branch
tipcutils2.0)
+
+or by using aptitude on debian distributions :
+
+    sudo apt-get install tipcutils
+
+For further details on installation, node and network
configuration, please refer to the online documentation : http://tipc.sourceforge.net/doc/tipc_2.0_users_guide.html#installation.
diff --git a/doc/sync/tipc/conntrackd.conf b/doc/sync/tipc/conntrackd.conf
new file mode 100644
index 0000000..71946ec
--- /dev/null
+++ b/doc/sync/tipc/conntrackd.conf
@@ -0,0 +1,454 @@
+#
+# Synchronizer settings
+#
+Sync {
+	Mode NOTRACK {

Better, add this example to the existing notrack file.

More specifically, this part below just after the commented UDP and
Multicast examples.

+	TIPC {
+		#
+		# Name of the other TIPC port in the cluster (in the form type:instance)

Please, break lines at 80 char, btw.

+		#
+		  TIPC_Destination_Name 1000:51
+
+		#
+		# Name of the local TIPC port (used to listen to events)
+		#
+		  TIPC_Name 1000:50
+
+		#
+		# The name of the TIPC configured interface that you are going to use
+		# to send synchronization messages.
+		#
+		  Interface eth0
+
+		#
+		# The importance of the TIPC messages sent (the more important
this is, the more packets will be enabled to queue up on the slave)
+		# This should be set to High or Critical to avoid congestion on
the receiver side.
+		# (possible values : TIPC_LOW_IMPORTANCE, TIPC_MEDIUM_IMPORTANCE,
TIPC_HIGH_IMPORTANCE, TIPC_CRITICAL_IMPROTANCE)
+		#
+		  TIPC_Message_Importance TIPC_CRITICAL_IMPORTANCE
+
+		#
+		# Current TIPC implementation doesnt allow checksumming
+	}

Thanks Quentin.





--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux