summaryrefslogtreecommitdiffstats
path: root/source/configuration/ipv6.rst
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--source/configuration/ipv6.rst47
1 files changed, 47 insertions, 0 deletions
diff --git a/source/configuration/ipv6.rst b/source/configuration/ipv6.rst
new file mode 100644
index 0000000..aeec21d
--- /dev/null
+++ b/source/configuration/ipv6.rst
@@ -0,0 +1,47 @@
+Notes on IPv6 Handling in Rsyslog
+=================================
+
+**Rsyslog fully\* supports sending and receiving syslog messages via
+both IPv4 and IPv6.** IPv6 is natively supported for both UDP and TCP.
+However, there are some options that control handling of IPv6
+operations. I thought it is is a good idea to elaborate a little about
+them, so that you can probably find your way somewhat easier.
+
+First of all, you can restrict rsyslog to using IPv4 or IPv6 addresses
+only by specifying the -4 or -6 command line option (now guess which one
+does what...). If you do not provide any command line option, rsyslog
+uses IPv4 and IPv6 addresses concurrently. In practice, that means the
+listener binds to both addresses (provided they are configured). When
+sending syslog messages, rsyslog uses IPv4 addresses when the receiver
+can be reached via IPv4 and IPv6 addresses if it can be reached via
+IPv6. If it can be reached on either IPv4 and v6, rsyslog leaves the
+choice to the socket layer. The important point to know is that it uses
+whatever connectivity is available to reach the destination.
+
+**There is one subtle difference between UDP and TCP.** With the new
+IPv4/v6 ignorant code, rsyslog has potentially different ways to reach
+destinations. The socket layer returns all of these paths in a sorted
+array. For TCP, rsyslog loops through this array until a successful TCP
+connect can be made. If that happens, the other addresses are ignored
+and messages are sent via the successfully-connected socket.
+
+For UDP, there is no such definite success indicator. Sure, the socket
+layer may detect some errors, but it may not notice other errors (due to
+the unreliable nature of UDP). By default, the UDP sender also tries one
+entry after the other in the sorted array of destination addresses. When
+a send fails, the next address is tried. When the send function finally
+succeeds, rsyslogd assumes the UDP packet has reached its final
+destination. However, if rsyslogd is started with the "-A" (capital A!)
+was given on the command line, rsyslogd will continue to send messages
+until the end of the destination address array is reached. This may
+result in duplicate messages, but it also provides some additional
+reliability in case a message could not be received. You need to be sure
+about the implications before applying this option. In general, it is
+NOT recommended to use the -A option.
+
+**\***\ rsyslog does not support RFC 3195 over IPv6. The reason is that
+the RFC 3195 library, `liblogging <http://www.liblogging.org/>`_,
+supports IPv4, only. Currently, there are no plans to update either
+rsyslog to another RFC 3195 stack or update liblogging. There is simply
+no demand for 3195 solutions.
+