summaryrefslogtreecommitdiff
path: root/man
diff options
context:
space:
mode:
Diffstat (limited to 'man')
-rw-r--r--man/Makefile.in7
-rw-r--r--man/ipsec.conf.5105
-rw-r--r--man/ipsec.conf.5.in105
-rw-r--r--man/ipsec.secrets.523
-rw-r--r--man/ipsec.secrets.5.in23
-rw-r--r--man/strongswan.conf.5347
-rw-r--r--man/strongswan.conf.5.in347
7 files changed, 869 insertions, 88 deletions
diff --git a/man/Makefile.in b/man/Makefile.in
index 679e3464b..a38cf70ba 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -170,6 +170,9 @@ am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
+attest_plugins = @attest_plugins@
+axis2c_CFLAGS = @axis2c_CFLAGS@
+axis2c_LIBS = @axis2c_LIBS@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -178,6 +181,7 @@ build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
c_plugins = @c_plugins@
+clearsilver_LIBS = @clearsilver_LIBS@
datadir = @datadir@
datarootdir = @datarootdir@
dbusservicedir = @dbusservicedir@
@@ -194,11 +198,13 @@ host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
+imcvdir = @imcvdir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
ipsecdir = @ipsecdir@
ipsecgroup = @ipsecgroup@
+ipseclibdir = @ipseclibdir@
ipsecuser = @ipsecuser@
libcharon_plugins = @libcharon_plugins@
libdir = @libdir@
@@ -242,6 +248,7 @@ sharedstatedir = @sharedstatedir@
soup_CFLAGS = @soup_CFLAGS@
soup_LIBS = @soup_LIBS@
srcdir = @srcdir@
+starter_plugins = @starter_plugins@
strongswan_conf = @strongswan_conf@
sysconfdir = @sysconfdir@
systemdsystemunitdir = @systemdsystemunitdir@
diff --git a/man/ipsec.conf.5 b/man/ipsec.conf.5
index b36a7ece7..0a7f8bfe5 100644
--- a/man/ipsec.conf.5
+++ b/man/ipsec.conf.5
@@ -1,4 +1,4 @@
-.TH IPSEC.CONF 5 "2010-10-19" "4.5.2" "strongSwan"
+.TH IPSEC.CONF 5 "2011-12-14" "4.6.4" "strongSwan"
.SH NAME
ipsec.conf \- IPsec configuration and connections
.SH DESCRIPTION
@@ -268,7 +268,7 @@ IKEv1 additionally supports the values
.B xauthpsk
and
.B xauthrsasig
-that will enable eXtended AUTHentication (XAUTH) in addition to IKEv1 main mode
+that will enable eXtended Authentication (XAuth) in addition to IKEv1 main mode
based on shared secrets or digital RSA signatures, respectively.
IKEv2 additionally supports the value
.BR eap ,
@@ -298,7 +298,7 @@ and
.B rightsubnet
, a connection is established.
.B start
-loads a connection and brings it up immediatly.
+loads a connection and brings it up immediately.
.B ignore
ignores the connection. This is equal to delete a connection from the config
file.
@@ -367,11 +367,17 @@ See
.IR strongswan.conf (5)
for a description of the IKEv2 retransmission timeout.
.TP
+.BR closeaction " = " none " | clear | hold | restart"
+defines the action to take if the remote peer unexpectedly closes a CHILD_SA
+(IKEv2 only, see dpdaction for meaning of values). A closeaction should not be
+used if the peer uses reauthentication or uniquids checking, as these events
+might trigger a closeaction when not desired.
+.TP
.BR inactivity " = <time>"
defines the timeout interval, after which a CHILD_SA is closed if it did
not send or receive any traffic. Currently supported in IKEv2 connections only.
.TP
-.BR eap " = md5 | mschapv2 | radius | ... | <type> | <type>-<vendor>
+.BR eap " = aka | ... | radius | ... | <type> | <type>-<vendor>
defines the EAP type to propose as server if the client requests EAP
authentication. Currently supported values are
.B aka
@@ -382,10 +388,17 @@ for EAP-GTC,
for EAP-MD5,
.B mschapv2
for EAP-MS-CHAPv2,
+.B peap
+for EAP-PEAPv0,
.B radius
-for the EAP-RADIUS proxy and
+for the EAP-RADIUS proxy,
.B sim
-for EAP-SIM. Additionally, IANA assigned EAP method numbers are accepted, or a
+for EAP-SIM,
+.B tls
+for EAP-TLS, and
+.B ttls
+for EAP-TTLSv0.
+Additionally, IANA assigned EAP method numbers are accepted, or a
definition in the form
.B eap=type-vendor
(e.g. eap=7-12345) can be used to specify vendor specific EAP types.
@@ -409,19 +422,34 @@ comma-separated list of ESP encryption/authentication algorithms to be used
for the connection, e.g.
.BR aes128-sha256 .
The notation is
-.BR encryption-integrity[-dhgroup][-esnmodes] .
+.BR encryption-integrity[-dhgroup][-esnmode] .
+.br
+Defaults to
+.BR aes128-sha1,3des-sha1
+for IKEv1. The IKEv2 daemon adds its extensive default proposal to this default
+or the configured value. To restrict it to the configured proposal an
+exclamation mark
+.RB ( ! )
+can be added at the end.
+.br
+.BR Note :
+As a responder both daemons accept the first supported proposal received from
+the peer. In order to restrict a responder to only accept specific cipher
+suites, the strict flag
+.RB ( ! ,
+exclamation mark) can be used, e.g: aes256-sha512-modp4096!
.br
If
.B dh-group
-is specified, CHILD_SA setup and rekeying include a separate diffe hellman
-exchange (IKEv2 only). Valid
-.B esnmodes
+is specified, CHILD_SA setup and rekeying include a separate Diffie-Hellman
+exchange (IKEv2 only). Valid values for
+.B esnmode
(IKEv2 only) are
.B esn
and
-.B noesn.
-Specifying both negotiates Extended Sequence number support with the peer,
-the defaut is
+.BR noesn .
+Specifying both negotiates Extended Sequence Number support with the peer,
+the default is
.B noesn.
.TP
.BR forceencaps " = yes | " no
@@ -436,7 +464,22 @@ to be used, e.g.
The notation is
.BR encryption-integrity-dhgroup .
In IKEv2, multiple algorithms and proposals may be included, such as
-.B aes128-aes256-sha1-modp1536-modp2048,3des-sha1-md5-modp1024.
+aes128-aes256-sha1-modp1536-modp2048,3des-sha1-md5-modp1024.
+.br
+Defaults to
+.B aes128-sha1-modp2048,3des-sha1-modp1536
+for IKEv1. The IKEv2 daemon adds its extensive default proposal to this
+default or the configured value. To restrict it to the configured proposal an
+exclamation mark
+.RB ( ! )
+can be added at the end.
+.br
+.BR Note :
+As a responder both daemons accept the first supported proposal received from
+the peer. In order to restrict a responder to only accept specific cipher
+suites, the strict flag
+.BR ( ! ,
+exclamation mark) can be used, e.g: aes256-sha512-modp4096!
.TP
.BR ikelifetime " = " 3h " | <time>"
how long the keying channel of a connection (ISAKMP or IKE SA)
@@ -468,11 +511,11 @@ whereas in older strongSwan releases
.B ikev1
was assumed.
.TP
-.BR keyingtries " = " %forever " | <number>"
+.BR keyingtries " = " 3 " | <number> | %forever"
how many attempts (a whole number or \fB%forever\fP) should be made to
negotiate a connection, or a replacement for one, before giving up
(default
-.BR %forever ).
+.BR 3 ).
The value \fB%forever\fP
means 'never give up'.
Relevant only locally, other end need not agree on it.
@@ -564,10 +607,12 @@ an optional EAP method can be appended. Currently defined methods are
.BR eap-aka ,
.BR eap-gtc ,
.BR eap-md5 ,
+.BR eap-mschapv2 ,
+.BR eap-peap ,
+.BR eap-sim ,
.BR eap-tls ,
-.B eap-mschapv2
and
-.BR eap-sim .
+.BR eap-ttls .
Alternatively, IANA assigned EAP method numbers are accepted. Vendor specific
EAP methods are defined in the form
.B eap-type-vendor
@@ -995,15 +1040,9 @@ signifying that packets should be discarded; and
signifying that packets should be discarded and a diagnostic ICMP returned
.RB ( reject
is currently not supported by the NETKEY stack of the Linux 2.6 kernel).
-The IKEv2 daemon charon currently supports
-.BR tunnel ,
-.BR transport ,
-and
-.BR transport_proxy
-connection types, only.
.TP
.BR xauth " = " client " | server"
-specifies the role in the XAUTH protocol if activated by
+specifies the role in the XAuth protocol if activated by
.B authby=xauthpsk
or
.B authby=xauthrsasig.
@@ -1012,6 +1051,10 @@ Accepted values are
and
.B client
(the default).
+.TP
+.BR xauth_identity " = <id>"
+defines the identity/username the client uses to reply to an XAuth request.
+If not defined, the IKEv1 identity will be used as XAuth identity.
.SS "CONN PARAMETERS: IKEv2 MEDIATION EXTENSION"
The following parameters are relevant to IKEv2 Mediation Extension
@@ -1166,7 +1209,7 @@ so a new (automatically-keyed) connection using the same ID is
almost invariably intended to replace an old one.
The IKEv2 daemon also accepts the value
.B replace
-wich is identical to
+which is identical to
.B yes
and the value
.B keep
@@ -1277,15 +1320,17 @@ parameters are used by the IKEv2 charon daemon only:
.TP
.BR charondebug " = <debug list>"
how much charon debugging output should be logged.
-A comma separated list containing type level/pairs may
+A comma separated list containing type/level-pairs may
be specified, e.g:
.B dmn 3, ike 1, net -1.
Acceptable values for types are
-.B dmn, mgr, ike, chd, job, cfg, knl, net, enc, lib
+.B dmn, mgr, ike, chd, job, cfg, knl, net, asn, enc, lib, tls, tnc, imc, imv, pts
and the level is one of
.B -1, 0, 1, 2, 3, 4
-(for silent, audit, control, controlmore, raw, private).
-For more flexibility see LOGGER CONFIGURATION in
+(for silent, audit, control, controlmore, raw, private). By default, the level
+is set to
+.B 1
+for all types. For more flexibility see LOGGER CONFIGURATION in
.IR strongswan.conf (5).
.SH IKEv2 EXPIRY/REKEY
diff --git a/man/ipsec.conf.5.in b/man/ipsec.conf.5.in
index 295100444..ab255304d 100644
--- a/man/ipsec.conf.5.in
+++ b/man/ipsec.conf.5.in
@@ -1,4 +1,4 @@
-.TH IPSEC.CONF 5 "2010-10-19" "@IPSEC_VERSION@" "strongSwan"
+.TH IPSEC.CONF 5 "2011-12-14" "@IPSEC_VERSION@" "strongSwan"
.SH NAME
ipsec.conf \- IPsec configuration and connections
.SH DESCRIPTION
@@ -268,7 +268,7 @@ IKEv1 additionally supports the values
.B xauthpsk
and
.B xauthrsasig
-that will enable eXtended AUTHentication (XAUTH) in addition to IKEv1 main mode
+that will enable eXtended Authentication (XAuth) in addition to IKEv1 main mode
based on shared secrets or digital RSA signatures, respectively.
IKEv2 additionally supports the value
.BR eap ,
@@ -298,7 +298,7 @@ and
.B rightsubnet
, a connection is established.
.B start
-loads a connection and brings it up immediatly.
+loads a connection and brings it up immediately.
.B ignore
ignores the connection. This is equal to delete a connection from the config
file.
@@ -367,11 +367,17 @@ See
.IR strongswan.conf (5)
for a description of the IKEv2 retransmission timeout.
.TP
+.BR closeaction " = " none " | clear | hold | restart"
+defines the action to take if the remote peer unexpectedly closes a CHILD_SA
+(IKEv2 only, see dpdaction for meaning of values). A closeaction should not be
+used if the peer uses reauthentication or uniquids checking, as these events
+might trigger a closeaction when not desired.
+.TP
.BR inactivity " = <time>"
defines the timeout interval, after which a CHILD_SA is closed if it did
not send or receive any traffic. Currently supported in IKEv2 connections only.
.TP
-.BR eap " = md5 | mschapv2 | radius | ... | <type> | <type>-<vendor>
+.BR eap " = aka | ... | radius | ... | <type> | <type>-<vendor>
defines the EAP type to propose as server if the client requests EAP
authentication. Currently supported values are
.B aka
@@ -382,10 +388,17 @@ for EAP-GTC,
for EAP-MD5,
.B mschapv2
for EAP-MS-CHAPv2,
+.B peap
+for EAP-PEAPv0,
.B radius
-for the EAP-RADIUS proxy and
+for the EAP-RADIUS proxy,
.B sim
-for EAP-SIM. Additionally, IANA assigned EAP method numbers are accepted, or a
+for EAP-SIM,
+.B tls
+for EAP-TLS, and
+.B ttls
+for EAP-TTLSv0.
+Additionally, IANA assigned EAP method numbers are accepted, or a
definition in the form
.B eap=type-vendor
(e.g. eap=7-12345) can be used to specify vendor specific EAP types.
@@ -409,19 +422,34 @@ comma-separated list of ESP encryption/authentication algorithms to be used
for the connection, e.g.
.BR aes128-sha256 .
The notation is
-.BR encryption-integrity[-dhgroup][-esnmodes] .
+.BR encryption-integrity[-dhgroup][-esnmode] .
+.br
+Defaults to
+.BR aes128-sha1,3des-sha1
+for IKEv1. The IKEv2 daemon adds its extensive default proposal to this default
+or the configured value. To restrict it to the configured proposal an
+exclamation mark
+.RB ( ! )
+can be added at the end.
+.br
+.BR Note :
+As a responder both daemons accept the first supported proposal received from
+the peer. In order to restrict a responder to only accept specific cipher
+suites, the strict flag
+.RB ( ! ,
+exclamation mark) can be used, e.g: aes256-sha512-modp4096!
.br
If
.B dh-group
-is specified, CHILD_SA setup and rekeying include a separate diffe hellman
-exchange (IKEv2 only). Valid
-.B esnmodes
+is specified, CHILD_SA setup and rekeying include a separate Diffie-Hellman
+exchange (IKEv2 only). Valid values for
+.B esnmode
(IKEv2 only) are
.B esn
and
-.B noesn.
-Specifying both negotiates Extended Sequence number support with the peer,
-the defaut is
+.BR noesn .
+Specifying both negotiates Extended Sequence Number support with the peer,
+the default is
.B noesn.
.TP
.BR forceencaps " = yes | " no
@@ -436,7 +464,22 @@ to be used, e.g.
The notation is
.BR encryption-integrity-dhgroup .
In IKEv2, multiple algorithms and proposals may be included, such as
-.B aes128-aes256-sha1-modp1536-modp2048,3des-sha1-md5-modp1024.
+aes128-aes256-sha1-modp1536-modp2048,3des-sha1-md5-modp1024.
+.br
+Defaults to
+.B aes128-sha1-modp2048,3des-sha1-modp1536
+for IKEv1. The IKEv2 daemon adds its extensive default proposal to this
+default or the configured value. To restrict it to the configured proposal an
+exclamation mark
+.RB ( ! )
+can be added at the end.
+.br
+.BR Note :
+As a responder both daemons accept the first supported proposal received from
+the peer. In order to restrict a responder to only accept specific cipher
+suites, the strict flag
+.BR ( ! ,
+exclamation mark) can be used, e.g: aes256-sha512-modp4096!
.TP
.BR ikelifetime " = " 3h " | <time>"
how long the keying channel of a connection (ISAKMP or IKE SA)
@@ -468,11 +511,11 @@ whereas in older strongSwan releases
.B ikev1
was assumed.
.TP
-.BR keyingtries " = " %forever " | <number>"
+.BR keyingtries " = " 3 " | <number> | %forever"
how many attempts (a whole number or \fB%forever\fP) should be made to
negotiate a connection, or a replacement for one, before giving up
(default
-.BR %forever ).
+.BR 3 ).
The value \fB%forever\fP
means 'never give up'.
Relevant only locally, other end need not agree on it.
@@ -564,10 +607,12 @@ an optional EAP method can be appended. Currently defined methods are
.BR eap-aka ,
.BR eap-gtc ,
.BR eap-md5 ,
+.BR eap-mschapv2 ,
+.BR eap-peap ,
+.BR eap-sim ,
.BR eap-tls ,
-.B eap-mschapv2
and
-.BR eap-sim .
+.BR eap-ttls .
Alternatively, IANA assigned EAP method numbers are accepted. Vendor specific
EAP methods are defined in the form
.B eap-type-vendor
@@ -995,15 +1040,9 @@ signifying that packets should be discarded; and
signifying that packets should be discarded and a diagnostic ICMP returned
.RB ( reject
is currently not supported by the NETKEY stack of the Linux 2.6 kernel).
-The IKEv2 daemon charon currently supports
-.BR tunnel ,
-.BR transport ,
-and
-.BR transport_proxy
-connection types, only.
.TP
.BR xauth " = " client " | server"
-specifies the role in the XAUTH protocol if activated by
+specifies the role in the XAuth protocol if activated by
.B authby=xauthpsk
or
.B authby=xauthrsasig.
@@ -1012,6 +1051,10 @@ Accepted values are
and
.B client
(the default).
+.TP
+.BR xauth_identity " = <id>"
+defines the identity/username the client uses to reply to an XAuth request.
+If not defined, the IKEv1 identity will be used as XAuth identity.
.SS "CONN PARAMETERS: IKEv2 MEDIATION EXTENSION"
The following parameters are relevant to IKEv2 Mediation Extension
@@ -1166,7 +1209,7 @@ so a new (automatically-keyed) connection using the same ID is
almost invariably intended to replace an old one.
The IKEv2 daemon also accepts the value
.B replace
-wich is identical to
+which is identical to
.B yes
and the value
.B keep
@@ -1277,15 +1320,17 @@ parameters are used by the IKEv2 charon daemon only:
.TP
.BR charondebug " = <debug list>"
how much charon debugging output should be logged.
-A comma separated list containing type level/pairs may
+A comma separated list containing type/level-pairs may
be specified, e.g:
.B dmn 3, ike 1, net -1.
Acceptable values for types are
-.B dmn, mgr, ike, chd, job, cfg, knl, net, enc, lib
+.B dmn, mgr, ike, chd, job, cfg, knl, net, asn, enc, lib, tls, tnc, imc, imv, pts
and the level is one of
.B -1, 0, 1, 2, 3, 4
-(for silent, audit, control, controlmore, raw, private).
-For more flexibility see LOGGER CONFIGURATION in
+(for silent, audit, control, controlmore, raw, private). By default, the level
+is set to
+.B 1
+for all types. For more flexibility see LOGGER CONFIGURATION in
.IR strongswan.conf (5).
.SH IKEv2 EXPIRY/REKEY
diff --git a/man/ipsec.secrets.5 b/man/ipsec.secrets.5
index 993b2ad10..c7c092502 100644
--- a/man/ipsec.secrets.5
+++ b/man/ipsec.secrets.5
@@ -1,4 +1,4 @@
-.TH IPSEC.SECRETS 5 "2010-05-30" "4.5.2" "strongSwan"
+.TH IPSEC.SECRETS 5 "2011-12-14" "4.6.2dr3" "strongSwan"
.SH NAME
ipsec.secrets \- secrets for IKE/IPsec authentication
.SH DESCRIPTION
@@ -124,12 +124,17 @@ whitespace).
.SS TYPES OF SECRETS
.TP
.B [ <selectors> ] : PSK <secret>
-A preshared secret is most conveniently represented as a sequence of
-characters, delimited by double-quote characters (\fB"\fP).
-The sequence cannot contain a newline or double-quote.
-Strictly speaking, the secret is actually the sequence
-of bytes that is used in the file to represent the sequence of
-characters (excluding the delimiters).
+A preshared \fIsecret\fP is most conveniently represented as a sequence of
+characters, which is delimited by double-quote characters (\fB"\fP).
+The sequence cannot contain newline or double-quote characters.
+.br
+Alternatively, preshared secrets can be represented as hexadecimal or Base64
+encoded binary values. A character sequence beginning with
+.B 0x
+is interpreted as sequence of hexadecimal digits.
+Similarly, a character sequence beginning with
+.B 0s
+is interpreted as Base64 encoded binary data.
.TP
.B [ <selectors> ] : RSA <private key file> [ <passphrase> | %prompt ]
.TQ
@@ -142,12 +147,12 @@ can be used which then causes the daemons to ask the user for the password
whenever it is required to decrypt the key.
.TP
.B <user id> : EAP <secret>
-As with \fBPSK\fP secrets the \fIsecret\fP is a sequence of characters,
-delimited by double-quote characters (\fB"\fP).
+The format of \fIsecret\fP is the same as that of \fBPSK\fP secrets.
.br
\fBEAP\fP secrets are IKEv2 only.
.TP
.B [ <servername> ] <username> : XAUTH <password>
+The format of \fIpassword\fP is the same as that of \fBPSK\fP secrets.
\fBXAUTH\fP secrets are IKEv1 only.
.TP
.B : PIN <smartcard selector> <pin code> | %prompt
diff --git a/man/ipsec.secrets.5.in b/man/ipsec.secrets.5.in
index 875b8e219..aa1b5c9c1 100644
--- a/man/ipsec.secrets.5.in
+++ b/man/ipsec.secrets.5.in
@@ -1,4 +1,4 @@
-.TH IPSEC.SECRETS 5 "2010-05-30" "@IPSEC_VERSION@" "strongSwan"
+.TH IPSEC.SECRETS 5 "2011-12-14" "@IPSEC_VERSION@" "strongSwan"
.SH NAME
ipsec.secrets \- secrets for IKE/IPsec authentication
.SH DESCRIPTION
@@ -124,12 +124,17 @@ whitespace).
.SS TYPES OF SECRETS
.TP
.B [ <selectors> ] : PSK <secret>
-A preshared secret is most conveniently represented as a sequence of
-characters, delimited by double-quote characters (\fB"\fP).
-The sequence cannot contain a newline or double-quote.
-Strictly speaking, the secret is actually the sequence
-of bytes that is used in the file to represent the sequence of
-characters (excluding the delimiters).
+A preshared \fIsecret\fP is most conveniently represented as a sequence of
+characters, which is delimited by double-quote characters (\fB"\fP).
+The sequence cannot contain newline or double-quote characters.
+.br
+Alternatively, preshared secrets can be represented as hexadecimal or Base64
+encoded binary values. A character sequence beginning with
+.B 0x
+is interpreted as sequence of hexadecimal digits.
+Similarly, a character sequence beginning with
+.B 0s
+is interpreted as Base64 encoded binary data.
.TP
.B [ <selectors> ] : RSA <private key file> [ <passphrase> | %prompt ]
.TQ
@@ -142,12 +147,12 @@ can be used which then causes the daemons to ask the user for the password
whenever it is required to decrypt the key.
.TP
.B <user id> : EAP <secret>
-As with \fBPSK\fP secrets the \fIsecret\fP is a sequence of characters,
-delimited by double-quote characters (\fB"\fP).
+The format of \fIsecret\fP is the same as that of \fBPSK\fP secrets.
.br
\fBEAP\fP secrets are IKEv2 only.
.TP
.B [ <servername> ] <username> : XAUTH <password>
+The format of \fIpassword\fP is the same as that of \fBPSK\fP secrets.
\fBXAUTH\fP secrets are IKEv1 only.
.TP
.B : PIN <smartcard selector> <pin code> | %prompt
diff --git a/man/strongswan.conf.5 b/man/strongswan.conf.5
index e1e4dbe91..e56e786e0 100644
--- a/man/strongswan.conf.5
+++ b/man/strongswan.conf.5
@@ -1,4 +1,4 @@
-.TH STRONGSWAN.CONF 5 "2010-09-09" "4.5.2" "strongSwan"
+.TH STRONGSWAN.CONF 5 "2011-07-26" "4.6.4" "strongSwan"
.SH NAME
strongswan.conf \- strongSwan configuration file
.SH DESCRIPTION
@@ -126,6 +126,13 @@ will return
The following keys are currently defined (using dot notation). The default
value (if any) is listed in brackets after the key.
+.SS attest section
+.TP
+.BR attest.database
+Path to database with file measurement information
+.TP
+.BR attest.load
+Plugins to load in ipsec attest tool
.SS charon section
.TP
.BR charon.block_threshold " [5]"
@@ -151,6 +158,9 @@ Section to define file loggers, see LOGGER CONFIGURATION
.BR charon.flush_auth_cfg " [no]"
.TP
+.BR charon.half_open_timeout " [30]"
+Timeout in seconds for connecting IKE_SAs (also see IKE_SA_INIT DROPPING).
+.TP
.BR charon.hash_and_url " [no]"
Enable hash and URL support
.TP
@@ -166,6 +176,14 @@ Size of the IKE_SA hash table
.BR charon.inactivity_close_ike " [no]"
Whether to close IKE_SA if the only CHILD_SA closed due to inactivity
.TP
+.BR charon.init_limit_half_open " [0]"
+Limit new connections based on the current number of half open IKE_SAs (see
+IKE_SA_INIT DROPPING).
+.TP
+.BR charon.init_limit_job_load " [0]"
+Limit new connections based on the number of jobs currently queued for
+processing (see IKE_SA_INIT DROPPING).
+.TP
.BR charon.install_routes " [yes]"
Install routes into a separate routing table for established IPsec tunnels
.TP
@@ -295,6 +313,9 @@ Start phase2 EAP TNC protocol after successful client authentication
Request peer authentication based on a client certificate
.TP
+.BR charon.plugins.eap-radius.accounting " [no]"
+Send RADIUS accounting information to RADIUS servers.
+.TP
.BR charon.plugins.eap-radius.class_group " [no]"
Use the
.I class
@@ -449,20 +470,57 @@ Section to configure the load-tester plugin, see LOAD TESTS
.BR charon.plugins.resolve.file " [/etc/resolv.conf]"
File where to add DNS server entries
.TP
+.BR charon.plugins.resolve.resolvconf.iface_prefix " [lo.inet.ipsec.]"
+Prefix used for interface names sent to resolvconf(8). The nameserver address
+is appended to this prefix to make it unique. The result has to be a valid
+interface name according to the rules defined by resolvconf. Also, it should
+have a high priority according to the order defined in interface-order(5).
+.TP
.BR charon.plugins.sql.database
Database URI for charons SQL plugin
.TP
.BR charon.plugins.sql.loglevel " [-1]"
Loglevel for logging to SQL database
.TP
+.BR charon.plugins.stroke.ignore_missing_ca_basic_constraint " [no]"
+Treat certificates in ipsec.d/cacerts and ipsec.conf ca sections as CA
+certificates even if they don't contain a CA basic constraint.
+.TP
+.BR charon.plugins.stroke.max_concurrent " [4]"
+Maximum number of stroke messages handled concurrently
+.TP
+.BR charon.plugins.tnc-ifmap.device_name
+Unique name of strongSwan as a PEP and/or PDP device
+.TP
+.BR charon.plugins.tnc-ifmap.key_file
+Concatenated client certificate and private key
+.TP
+.BR charon.plugins.tnc-ifmap.password
+Authentication password of strongSwan MAP client
+.TP
+.BR charon.plugins.tnc-ifmap.server_cert
+Certificate of MAP server
+.TP
+.BR charon.plugins.tnc-ifmap.ssl_passphrase
+Passphrase protecting the private key
+.TP
+.BR charon.plugins.tnc-ifmap.username
+Authentication username of strongSwan MAP client
+.TP
.BR charon.plugins.tnc-imc.preferred_language " [en]"
Preferred language for TNC recommendations
.TP
-.BR charon.plugins.tnc-imc.tnc_config " [/etc/tnc_config]"
-TNC IMC configuration directory
+.BR charon.plugins.tnc-pdp.method " [ttls]"
+EAP tunnel method to be used
.TP
-.BR charon.plugins.tnc-imv.tnc_config " [/etc/tnc_config]"
-TNC IMV configuration directory
+.BR charon.plugins.tnc-pdp.port " [1812]"
+RADIUS server port the strongSwan PDP is listening on
+.TP
+.BR charon.plugins.tnc-pdp.secret
+Shared RADIUS secret between strongSwan PDP and NAS
+.TP
+.BR charon.plugins.tnc-pdp.server
+name of the strongSwan PDP as contained in the AAA certificate
.TP
.BR charon.plugins.whitelist.enable " [yes]"
enable loaded whitelist plugin
@@ -502,6 +560,10 @@ Check daemon, libstrongswan and plugin integrity at startup
.BR libstrongswan.leak_detective.detailed " [yes]"
Includes source file names and line numbers in leak detective output
.TP
+.BR libstrongswan.processor.priority_threads
+Subsection to configure the number of reserved threads per priority class
+see JOB PRIORITY MANAGEMENT
+.TP
.BR libstrongswan.x509.enforce_critical " [yes]"
Discard certificates with unsupported or unknown critical extensions
.SS libstrongswan.plugins subsection
@@ -519,8 +581,96 @@ Use faster random numbers in gcrypt; for testing only, produces weak keys!
ENGINE ID to use in the OpenSSL plugin
.TP
.BR libstrongswan.plugins.pkcs11.modules
+List of available PKCS#11 modules
+.TP
+.BR libstrongswan.plugins.pkcs11.use_dh " [no]"
+Whether the PKCS#11 modules should be used for DH and ECDH (see use_ecc option)
+.TP
+.BR libstrongswan.plugins.pkcs11.use_ecc " [no]"
+Whether the PKCS#11 modules should be used for ECDH and ECDSA public key
+operations. ECDSA private keys can be used regardless of this option
.TP
.BR libstrongswan.plugins.pkcs11.use_hasher " [no]"
+Whether the PKCS#11 modules should be used to hash data
+.TP
+.BR libstrongswan.plugins.pkcs11.use_pubkey " [no]"
+Whether the PKCS#11 modules should be used for public key operations, even for
+keys not stored on tokens
+.TP
+.BR libstrongswan.plugins.pkcs11.use_rng " [no]"
+Whether the PKCS#11 modules should be used as RNG
+.SS libtnccs section
+.TP
+.BR libtnccs.tnc_config " [/etc/tnc_config]"
+TNC IMC/IMV configuration directory
+.SS libimcv section
+.TP
+.BR libimcv.debug_level " [1]"
+Debug level for a stand-alone libimcv library
+.TP
+.BR libimcv.stderr_quiet " [no]"
+Disable output to stderr with a stand-alone libimcv library
+.SS libimcv plugins section
+.TP
+.BR libimcv.plugins.imc-attestation.platform_info
+Information on operating system and hardware platform
+.TP
+.BR libimcv.plugins.imc-attestation.aik_blob
+AIK encrypted private key blob file
+.TP
+.BR libimcv.plugins.imc-attestation.aik_cert
+AIK certificate file
+.TP
+.BR libimcv.plugins.imc-attestation.aik_key
+AIK public key file
+.TP
+.BR libimcv.plugins.imv-attestation.nonce_len " [20]"
+DH nonce length
+.TP
+.BR libimcv.plugins.imv-attestation.use_quote2 " [yes]"
+Use Quote2 AIK signature instead of Quote signature
+.TP
+.BR libimcv.plugins.imv-attestation.cadir
+Path to directory with AIK cacerts
+.TP
+.BR libimcv.plugins.imv-attestation.database
+Path to database with file measurement information
+.TP
+.BR libimcv.plugins.imv-attestation.dh_group " [ecp256]"
+Preferred Diffie-Hellman group
+.TP
+.BR libimcv.plugins.imv-attestation.hash_algorithm " [sha256]"
+Preferred measurement hash algorithm
+.TP
+.BR libimcv.plugins.imv-attestation.min_nonce_len " [0]"
+DH minimum nonce length
+.TP
+.BR libimcv.plugins.imv-attestation.platform_info
+Information on operating system and hardware platform
+.TP
+.BR libimcv.plugins.imv-scanner.closed_port_policy " [yes]"
+By default all ports must be closed (yes) or can be open (no)
+.TP
+.BR libimcv.plugins.imv-scanner.tcp_ports
+List of TCP ports that can be open or must be closed
+.TP
+.BR libimcv.plugins.imv-scanner.udp_ports
+List of UDP ports that can be open or must be closed
+.TP
+.BR libimcv.plugins.imc-test.additional_ids " [0]"
+Number of additional IMC IDs
+.TP
+.BR libimcv.plugins.imc-test.command " [none]"
+Command to be sent to the Test IMV
+.TP
+.BR libimcv.plugins.imc-test.retry " [no]"
+Do a handshake retry
+.TP
+.BR libimcv.plugins.imc-test.retry_command
+Command to be sent to the Test IMV in the handshake retry
+.TP
+.BR libimcv.plugins.imv-test.rounds " [0]"
+Number of IMC-IMV retry rounds
.SS libtls section
.TP
.BR libtls.cipher
@@ -637,6 +787,9 @@ Plugins to load in ipsec pool tool
Plugins to load in ipsec scepclient tool
.SS starter section
.TP
+.BR starter.load
+Plugins to load in starter
+.TP
.BR starter.load_warning " [yes]"
Disable charon/pluto plugin load option warning
@@ -700,6 +853,14 @@ identifier for each IKE_SA.
Prefix each log entry with a timestamp. The option accepts a format string as
passed to
.BR strftime (3).
+.TP
+.BR charon.syslog.identifier
+Global identifier used for an
+.BR openlog (3)
+call, prepended to each log message by syslog. If not configured,
+.BR openlog (3)
+is not called, so the value will depend on system defaults (often the program
+name).
.SS Subsystems
.TP
@@ -727,6 +888,9 @@ IPsec/Networking kernel interface
.B net
IKE network communication
.TP
+.B asn
+Low-level encoding/decoding (ASN.1, X.509 etc.)
+.TP
.B enc
Packet encoding/decoding encryption/decryption operations
.TP
@@ -735,6 +899,18 @@ libtls library messages
.TP
.B lib
libstrongwan library messages
+.TP
+.B tnc
+Trusted Network Connect
+.TP
+.B imc
+Integrity Measurement Collector
+.TP
+.B imv
+Integrity Measurement Verifier
+.TP
+.B pts
+Platform Trust Service
.SS Loglevels
.TP
.B -1
@@ -783,6 +959,149 @@ Also include sensitive material in dumps, e.g. keys
}
.EE
+.SH JOB PRIORITY MANAGEMENT
+Some operations in the IKEv2 daemon charon are currently implemented
+synchronously and blocking. Two examples for such operations are communication
+with a RADIUS server via EAP-RADIUS, or fetching CRL/OCSP information during
+certificate chain verification. Under high load conditions, the thread pool may
+run out of available threads, and some more important jobs, such as liveness
+checking, may not get executed in time.
+.PP
+To prevent thread starvation in such situations job priorities were introduced.
+The job processor will reserve some threads for higher priority jobs, these
+threads are not available for lower priority, locking jobs.
+.SS Implementation
+Currently 4 priorities have been defined, and they are used in charon as
+follows:
+.TP
+.B CRITICAL
+Priority for long-running dispatcher jobs.
+.TP
+.B HIGH
+INFORMATIONAL exchanges, as used by liveness checking (DPD).
+.TP
+.B MEDIUM
+Everything not HIGH/LOW, including IKE_SA_INIT processing.
+.TP
+.B LOW
+IKE_AUTH message processing. RADIUS and CRL fetching block here
+.PP
+Although IKE_SA_INIT processing is computationally expensive, it is explicitly
+assigned to the MEDIUM class. This allows charon to do the DH exchange while
+other threads are blocked in IKE_AUTH. To prevent the daemon from accepting more
+IKE_SA_INIT requests than it can handle, use IKE_SA_INIT DROPPING.
+.PP
+The thread pool processes jobs strictly by priority, meaning it will consume all
+higher priority jobs before looking for ones with lower priority. Further, it
+reserves threads for certain priorities. A priority class having reserved
+.I n
+threads will always have
+.I n
+threads available for this class (either currently processing a job, or waiting
+for one).
+.SS Configuration
+To ensure that there are always enough threads available for higher priority
+tasks, threads must be reserved for each priority class.
+.TP
+.BR libstrongswan.processor.priority_threads.critical " [0]"
+Threads reserved for CRITICAL priority class jobs
+.TP
+.BR libstrongswan.processor.priority_threads.high " [0]"
+Threads reserved for HIGH priority class jobs
+.TP
+.BR libstrongswan.processor.priority_threads.medium " [0]"
+Threads reserved for MEDIUM priority class jobs
+.TP
+.BR libstrongswan.processor.priority_threads.low " [0]"
+Threads reserved for LOW priority class jobs
+.PP
+Let's consider the following configuration:
+.PP
+.EX
+ libstrongswan {
+ processor {
+ priority_threads {
+ high = 1
+ medium = 4
+ }
+ }
+ }
+.EE
+.PP
+With this configuration, one thread is reserved for HIGH priority tasks. As
+currently only liveness checking and stroke message processing is done with
+high priority, one or two threads should be sufficient.
+.PP
+The MEDIUM class mostly processes non-blocking jobs. Unless your setup is
+experiencing many blocks in locks while accessing shared resources, threads for
+one or two times the number of CPU cores is fine.
+.PP
+It is usually not required to reserve threads for CRITICAL jobs. Jobs in this
+class rarely return and do not release their thread to the pool.
+.PP
+The remaining threads are available for LOW priority jobs. Reserving threads
+does not make sense (until we have an even lower priority).
+.SS Monitoring
+To see what the threads are actually doing, invoke
+.IR "ipsec statusall" .
+Under high load, something like this will show up:
+.PP
+.EX
+ worker threads: 2 or 32 idle, 5/1/2/22 working,
+ job queue: 0/0/1/149, scheduled: 198
+.EE
+.PP
+From 32 worker threads,
+.IP 2
+are currently idle.
+.IP 5
+are running CRITICAL priority jobs (dispatching from sockets, etc.).
+.IP 1
+is currently handling a HIGH priority job. This is actually the thread currently
+providing this information via stroke.
+.IP 2
+are handling MEDIUM priority jobs, likely IKE_SA_INIT or CREATE_CHILD_SA
+messages.
+.IP 22
+are handling LOW priority jobs, probably waiting for an EAP-RADIUS response
+while processing IKE_AUTH messages.
+.PP
+The job queue load shows how many jobs are queued for each priority, ready for
+execution. The single MEDIUM priority job will get executed immediately, as
+we have two spare threads reserved for MEDIUM class jobs.
+
+.SH IKE_SA_INIT DROPPING
+If a responder receives more connection requests per seconds than it can handle,
+it does not make sense to accept more IKE_SA_INIT messages. And if they are
+queued but can't get processed in time, an answer might be sent after the
+client has already given up and restarted its connection setup. This
+additionally increases the load on the responder.
+.PP
+To limit the responder load resulting from new connection attempts, the daemon
+can drop IKE_SA_INIT messages just after reception. There are two mechanisms to
+decide if this should happen, configured with the following options:
+.TP
+.BR charon.init_limit_half_open " [0]"
+Limit based on the number of half open IKE_SAs. Half open IKE_SAs are SAs in
+connecting state, but not yet established.
+.TP
+.BR charon.init_limit_job_load " [0]"
+Limit based on the number of jobs currently queued for processing (sum over all
+job priorities).
+.PP
+The second limit includes load from other jobs, such as rekeying. Choosing a
+good value is difficult and depends on the hardware and expected load.
+.PP
+The first limit is simpler to calculate, but includes the load from new
+connections only. If your responder is capable of negotiating 100 tunnels/s, you
+might set this limit to 1000. The daemon will then drop new connection attempts
+if generating a response would require more than 10 seconds. If you are
+allowing for a maximum response time of more than 30 seconds, consider adjusting
+the timeout for connecting IKE_SAs
+.RB ( charon.half_open_timeout ).
+A responder, by default, deletes an IKE_SA if the initiator does not establish
+it within 30 seconds. Under high load, a higher value might be required.
+
.SH LOAD TESTS
To do stability testing and performance optimizations, the IKEv2 daemon charon
provides the load-tester plugin. This plugin allows to setup thousands of
@@ -802,9 +1121,15 @@ Delay between initiatons for each thread
.BR charon.plugins.load-tester.delete_after_established " [no]"
Delete an IKE_SA as soon as it has been established
.TP
+.BR charon.plugins.load-tester.dpd_delay " [0]"
+DPD delay to use in load test
+.TP
.BR charon.plugins.load-tester.dynamic_port " [0]"
Base port to be used for requests (each client uses a different port)
.TP
+.BR charon.plugins.load-tester.eap_password " [default-pwd]"
+EAP secret to use in load test
+.TP
.BR charon.plugins.load-tester.enable " [no]"
Enable the load testing plugin
.TP
@@ -814,18 +1139,27 @@ Fake the kernel interface to allow load-testing against self
.BR charon.plugins.load-tester.ike_rekey " [0]"
Seconds to start IKE_SA rekeying after setup
.TP
+.BR charon.plugins.load-tester.init_limit " [0]"
+Global limit of concurrently established SAs during load test
+.TP
.BR charon.plugins.load-tester.initiators " [0]"
Number of concurrent initiator threads to use in load test
.TP
.BR charon.plugins.load-tester.initiator_auth " [pubkey]"
Authentication method(s) the intiator uses
.TP
+.BR charon.plugins.load-tester.initiator_id
+Initiator ID used in load test
+.TP
.BR charon.plugins.load-tester.iterations " [1]"
Number of IKE_SAs to initate by each initiator in load test
.TP
.BR charon.plugins.load-tester.pool
Provide INTERNAL_IPV4_ADDRs from a named pool
.TP
+.BR charon.plugins.load-tester.preshared_key " [default-psk]"
+Preshared key to use in load test
+.TP
.BR charon.plugins.load-tester.proposal " [aes128-sha1-modp768]"
IKE proposal to use in load test
.TP
@@ -835,6 +1169,9 @@ Address to initiation connections to
.BR charon.plugins.load-tester.responder_auth " [pubkey]"
Authentication method(s) the responder uses
.TP
+.BR charon.plugins.load-tester.responder_id
+Responder ID used in load test
+.TP
.BR charon.plugins.load-tester.request_virtual_ip " [no]"
Request an INTERNAL_IPV4_ADDR from the server
.TP
diff --git a/man/strongswan.conf.5.in b/man/strongswan.conf.5.in
index 2d7475225..05493ec75 100644
--- a/man/strongswan.conf.5.in
+++ b/man/strongswan.conf.5.in
@@ -1,4 +1,4 @@
-.TH STRONGSWAN.CONF 5 "2010-09-09" "@IPSEC_VERSION@" "strongSwan"
+.TH STRONGSWAN.CONF 5 "2011-07-26" "@IPSEC_VERSION@" "strongSwan"
.SH NAME
strongswan.conf \- strongSwan configuration file
.SH DESCRIPTION
@@ -126,6 +126,13 @@ will return
The following keys are currently defined (using dot notation). The default
value (if any) is listed in brackets after the key.
+.SS attest section
+.TP
+.BR attest.database
+Path to database with file measurement information
+.TP
+.BR attest.load
+Plugins to load in ipsec attest tool
.SS charon section
.TP
.BR charon.block_threshold " [5]"
@@ -151,6 +158,9 @@ Section to define file loggers, see LOGGER CONFIGURATION
.BR charon.flush_auth_cfg " [no]"
.TP
+.BR charon.half_open_timeout " [30]"
+Timeout in seconds for connecting IKE_SAs (also see IKE_SA_INIT DROPPING).
+.TP
.BR charon.hash_and_url " [no]"
Enable hash and URL support
.TP
@@ -166,6 +176,14 @@ Size of the IKE_SA hash table
.BR charon.inactivity_close_ike " [no]"
Whether to close IKE_SA if the only CHILD_SA closed due to inactivity
.TP
+.BR charon.init_limit_half_open " [0]"
+Limit new connections based on the current number of half open IKE_SAs (see
+IKE_SA_INIT DROPPING).
+.TP
+.BR charon.init_limit_job_load " [0]"
+Limit new connections based on the number of jobs currently queued for
+processing (see IKE_SA_INIT DROPPING).
+.TP
.BR charon.install_routes " [yes]"
Install routes into a separate routing table for established IPsec tunnels
.TP
@@ -295,6 +313,9 @@ Start phase2 EAP TNC protocol after successful client authentication
Request peer authentication based on a client certificate
.TP
+.BR charon.plugins.eap-radius.accounting " [no]"
+Send RADIUS accounting information to RADIUS servers.
+.TP
.BR charon.plugins.eap-radius.class_group " [no]"
Use the
.I class
@@ -449,20 +470,57 @@ Section to configure the load-tester plugin, see LOAD TESTS
.BR charon.plugins.resolve.file " [/etc/resolv.conf]"
File where to add DNS server entries
.TP
+.BR charon.plugins.resolve.resolvconf.iface_prefix " [lo.inet.ipsec.]"
+Prefix used for interface names sent to resolvconf(8). The nameserver address
+is appended to this prefix to make it unique. The result has to be a valid
+interface name according to the rules defined by resolvconf. Also, it should
+have a high priority according to the order defined in interface-order(5).
+.TP
.BR charon.plugins.sql.database
Database URI for charons SQL plugin
.TP
.BR charon.plugins.sql.loglevel " [-1]"
Loglevel for logging to SQL database
.TP
+.BR charon.plugins.stroke.ignore_missing_ca_basic_constraint " [no]"
+Treat certificates in ipsec.d/cacerts and ipsec.conf ca sections as CA
+certificates even if they don't contain a CA basic constraint.
+.TP
+.BR charon.plugins.stroke.max_concurrent " [4]"
+Maximum number of stroke messages handled concurrently
+.TP
+.BR charon.plugins.tnc-ifmap.device_name
+Unique name of strongSwan as a PEP and/or PDP device
+.TP
+.BR charon.plugins.tnc-ifmap.key_file
+Concatenated client certificate and private key
+.TP
+.BR charon.plugins.tnc-ifmap.password
+Authentication password of strongSwan MAP client
+.TP
+.BR charon.plugins.tnc-ifmap.server_cert
+Certificate of MAP server
+.TP
+.BR charon.plugins.tnc-ifmap.ssl_passphrase
+Passphrase protecting the private key
+.TP
+.BR charon.plugins.tnc-ifmap.username
+Authentication username of strongSwan MAP client
+.TP
.BR charon.plugins.tnc-imc.preferred_language " [en]"
Preferred language for TNC recommendations
.TP
-.BR charon.plugins.tnc-imc.tnc_config " [/etc/tnc_config]"
-TNC IMC configuration directory
+.BR charon.plugins.tnc-pdp.method " [ttls]"
+EAP tunnel method to be used
.TP
-.BR charon.plugins.tnc-imv.tnc_config " [/etc/tnc_config]"
-TNC IMV configuration directory
+.BR charon.plugins.tnc-pdp.port " [1812]"
+RADIUS server port the strongSwan PDP is listening on
+.TP
+.BR charon.plugins.tnc-pdp.secret
+Shared RADIUS secret between strongSwan PDP and NAS
+.TP
+.BR charon.plugins.tnc-pdp.server
+name of the strongSwan PDP as contained in the AAA certificate
.TP
.BR charon.plugins.whitelist.enable " [yes]"
enable loaded whitelist plugin
@@ -502,6 +560,10 @@ Check daemon, libstrongswan and plugin integrity at startup
.BR libstrongswan.leak_detective.detailed " [yes]"
Includes source file names and line numbers in leak detective output
.TP
+.BR libstrongswan.processor.priority_threads
+Subsection to configure the number of reserved threads per priority class
+see JOB PRIORITY MANAGEMENT
+.TP
.BR libstrongswan.x509.enforce_critical " [yes]"
Discard certificates with unsupported or unknown critical extensions
.SS libstrongswan.plugins subsection
@@ -519,8 +581,96 @@ Use faster random numbers in gcrypt; for testing only, produces weak keys!
ENGINE ID to use in the OpenSSL plugin
.TP
.BR libstrongswan.plugins.pkcs11.modules
+List of available PKCS#11 modules
+.TP
+.BR libstrongswan.plugins.pkcs11.use_dh " [no]"
+Whether the PKCS#11 modules should be used for DH and ECDH (see use_ecc option)
+.TP
+.BR libstrongswan.plugins.pkcs11.use_ecc " [no]"
+Whether the PKCS#11 modules should be used for ECDH and ECDSA public key
+operations. ECDSA private keys can be used regardless of this option
.TP
.BR libstrongswan.plugins.pkcs11.use_hasher " [no]"
+Whether the PKCS#11 modules should be used to hash data
+.TP
+.BR libstrongswan.plugins.pkcs11.use_pubkey " [no]"
+Whether the PKCS#11 modules should be used for public key operations, even for
+keys not stored on tokens
+.TP
+.BR libstrongswan.plugins.pkcs11.use_rng " [no]"
+Whether the PKCS#11 modules should be used as RNG
+.SS libtnccs section
+.TP
+.BR libtnccs.tnc_config " [/etc/tnc_config]"
+TNC IMC/IMV configuration directory
+.SS libimcv section
+.TP
+.BR libimcv.debug_level " [1]"
+Debug level for a stand-alone libimcv library
+.TP
+.BR libimcv.stderr_quiet " [no]"
+Disable output to stderr with a stand-alone libimcv library
+.SS libimcv plugins section
+.TP
+.BR libimcv.plugins.imc-attestation.platform_info
+Information on operating system and hardware platform
+.TP
+.BR libimcv.plugins.imc-attestation.aik_blob
+AIK encrypted private key blob file
+.TP
+.BR libimcv.plugins.imc-attestation.aik_cert
+AIK certificate file
+.TP
+.BR libimcv.plugins.imc-attestation.aik_key
+AIK public key file
+.TP
+.BR libimcv.plugins.imv-attestation.nonce_len " [20]"
+DH nonce length
+.TP
+.BR libimcv.plugins.imv-attestation.use_quote2 " [yes]"
+Use Quote2 AIK signature instead of Quote signature
+.TP
+.BR libimcv.plugins.imv-attestation.cadir
+Path to directory with AIK cacerts
+.TP
+.BR libimcv.plugins.imv-attestation.database
+Path to database with file measurement information
+.TP
+.BR libimcv.plugins.imv-attestation.dh_group " [ecp256]"
+Preferred Diffie-Hellman group
+.TP
+.BR libimcv.plugins.imv-attestation.hash_algorithm " [sha256]"
+Preferred measurement hash algorithm
+.TP
+.BR libimcv.plugins.imv-attestation.min_nonce_len " [0]"
+DH minimum nonce length
+.TP
+.BR libimcv.plugins.imv-attestation.platform_info
+Information on operating system and hardware platform
+.TP
+.BR libimcv.plugins.imv-scanner.closed_port_policy " [yes]"
+By default all ports must be closed (yes) or can be open (no)
+.TP
+.BR libimcv.plugins.imv-scanner.tcp_ports
+List of TCP ports that can be open or must be closed
+.TP
+.BR libimcv.plugins.imv-scanner.udp_ports
+List of UDP ports that can be open or must be closed
+.TP
+.BR libimcv.plugins.imc-test.additional_ids " [0]"
+Number of additional IMC IDs
+.TP
+.BR libimcv.plugins.imc-test.command " [none]"
+Command to be sent to the Test IMV
+.TP
+.BR libimcv.plugins.imc-test.retry " [no]"
+Do a handshake retry
+.TP
+.BR libimcv.plugins.imc-test.retry_command
+Command to be sent to the Test IMV in the handshake retry
+.TP
+.BR libimcv.plugins.imv-test.rounds " [0]"
+Number of IMC-IMV retry rounds
.SS libtls section
.TP
.BR libtls.cipher
@@ -637,6 +787,9 @@ Plugins to load in ipsec pool tool
Plugins to load in ipsec scepclient tool
.SS starter section
.TP
+.BR starter.load
+Plugins to load in starter
+.TP
.BR starter.load_warning " [yes]"
Disable charon/pluto plugin load option warning
@@ -700,6 +853,14 @@ identifier for each IKE_SA.
Prefix each log entry with a timestamp. The option accepts a format string as
passed to
.BR strftime (3).
+.TP
+.BR charon.syslog.identifier
+Global identifier used for an
+.BR openlog (3)
+call, prepended to each log message by syslog. If not configured,
+.BR openlog (3)
+is not called, so the value will depend on system defaults (often the program
+name).
.SS Subsystems
.TP
@@ -727,6 +888,9 @@ IPsec/Networking kernel interface
.B net
IKE network communication
.TP
+.B asn
+Low-level encoding/decoding (ASN.1, X.509 etc.)
+.TP
.B enc
Packet encoding/decoding encryption/decryption operations
.TP
@@ -735,6 +899,18 @@ libtls library messages
.TP
.B lib
libstrongwan library messages
+.TP
+.B tnc
+Trusted Network Connect
+.TP
+.B imc
+Integrity Measurement Collector
+.TP
+.B imv
+Integrity Measurement Verifier
+.TP
+.B pts
+Platform Trust Service
.SS Loglevels
.TP
.B -1
@@ -783,6 +959,149 @@ Also include sensitive material in dumps, e.g. keys
}
.EE
+.SH JOB PRIORITY MANAGEMENT
+Some operations in the IKEv2 daemon charon are currently implemented
+synchronously and blocking. Two examples for such operations are communication
+with a RADIUS server via EAP-RADIUS, or fetching CRL/OCSP information during
+certificate chain verification. Under high load conditions, the thread pool may
+run out of available threads, and some more important jobs, such as liveness
+checking, may not get executed in time.
+.PP
+To prevent thread starvation in such situations job priorities were introduced.
+The job processor will reserve some threads for higher priority jobs, these
+threads are not available for lower priority, locking jobs.
+.SS Implementation
+Currently 4 priorities have been defined, and they are used in charon as
+follows:
+.TP
+.B CRITICAL
+Priority for long-running dispatcher jobs.
+.TP
+.B HIGH
+INFORMATIONAL exchanges, as used by liveness checking (DPD).
+.TP
+.B MEDIUM
+Everything not HIGH/LOW, including IKE_SA_INIT processing.
+.TP
+.B LOW
+IKE_AUTH message processing. RADIUS and CRL fetching block here
+.PP
+Although IKE_SA_INIT processing is computationally expensive, it is explicitly
+assigned to the MEDIUM class. This allows charon to do the DH exchange while
+other threads are blocked in IKE_AUTH. To prevent the daemon from accepting more
+IKE_SA_INIT requests than it can handle, use IKE_SA_INIT DROPPING.
+.PP
+The thread pool processes jobs strictly by priority, meaning it will consume all
+higher priority jobs before looking for ones with lower priority. Further, it
+reserves threads for certain priorities. A priority class having reserved
+.I n
+threads will always have
+.I n
+threads available for this class (either currently processing a job, or waiting
+for one).
+.SS Configuration
+To ensure that there are always enough threads available for higher priority
+tasks, threads must be reserved for each priority class.
+.TP
+.BR libstrongswan.processor.priority_threads.critical " [0]"
+Threads reserved for CRITICAL priority class jobs
+.TP
+.BR libstrongswan.processor.priority_threads.high " [0]"
+Threads reserved for HIGH priority class jobs
+.TP
+.BR libstrongswan.processor.priority_threads.medium " [0]"
+Threads reserved for MEDIUM priority class jobs
+.TP
+.BR libstrongswan.processor.priority_threads.low " [0]"
+Threads reserved for LOW priority class jobs
+.PP
+Let's consider the following configuration:
+.PP
+.EX
+ libstrongswan {
+ processor {
+ priority_threads {
+ high = 1
+ medium = 4
+ }
+ }
+ }
+.EE
+.PP
+With this configuration, one thread is reserved for HIGH priority tasks. As
+currently only liveness checking and stroke message processing is done with
+high priority, one or two threads should be sufficient.
+.PP
+The MEDIUM class mostly processes non-blocking jobs. Unless your setup is
+experiencing many blocks in locks while accessing shared resources, threads for
+one or two times the number of CPU cores is fine.
+.PP
+It is usually not required to reserve threads for CRITICAL jobs. Jobs in this
+class rarely return and do not release their thread to the pool.
+.PP
+The remaining threads are available for LOW priority jobs. Reserving threads
+does not make sense (until we have an even lower priority).
+.SS Monitoring
+To see what the threads are actually doing, invoke
+.IR "ipsec statusall" .
+Under high load, something like this will show up:
+.PP
+.EX
+ worker threads: 2 or 32 idle, 5/1/2/22 working,
+ job queue: 0/0/1/149, scheduled: 198
+.EE
+.PP
+From 32 worker threads,
+.IP 2
+are currently idle.
+.IP 5
+are running CRITICAL priority jobs (dispatching from sockets, etc.).
+.IP 1
+is currently handling a HIGH priority job. This is actually the thread currently
+providing this information via stroke.
+.IP 2
+are handling MEDIUM priority jobs, likely IKE_SA_INIT or CREATE_CHILD_SA
+messages.
+.IP 22
+are handling LOW priority jobs, probably waiting for an EAP-RADIUS response
+while processing IKE_AUTH messages.
+.PP
+The job queue load shows how many jobs are queued for each priority, ready for
+execution. The single MEDIUM priority job will get executed immediately, as
+we have two spare threads reserved for MEDIUM class jobs.
+
+.SH IKE_SA_INIT DROPPING
+If a responder receives more connection requests per seconds than it can handle,
+it does not make sense to accept more IKE_SA_INIT messages. And if they are
+queued but can't get processed in time, an answer might be sent after the
+client has already given up and restarted its connection setup. This
+additionally increases the load on the responder.
+.PP
+To limit the responder load resulting from new connection attempts, the daemon
+can drop IKE_SA_INIT messages just after reception. There are two mechanisms to
+decide if this should happen, configured with the following options:
+.TP
+.BR charon.init_limit_half_open " [0]"
+Limit based on the number of half open IKE_SAs. Half open IKE_SAs are SAs in
+connecting state, but not yet established.
+.TP
+.BR charon.init_limit_job_load " [0]"
+Limit based on the number of jobs currently queued for processing (sum over all
+job priorities).
+.PP
+The second limit includes load from other jobs, such as rekeying. Choosing a
+good value is difficult and depends on the hardware and expected load.
+.PP
+The first limit is simpler to calculate, but includes the load from new
+connections only. If your responder is capable of negotiating 100 tunnels/s, you
+might set this limit to 1000. The daemon will then drop new connection attempts
+if generating a response would require more than 10 seconds. If you are
+allowing for a maximum response time of more than 30 seconds, consider adjusting
+the timeout for connecting IKE_SAs
+.RB ( charon.half_open_timeout ).
+A responder, by default, deletes an IKE_SA if the initiator does not establish
+it within 30 seconds. Under high load, a higher value might be required.
+
.SH LOAD TESTS
To do stability testing and performance optimizations, the IKEv2 daemon charon
provides the load-tester plugin. This plugin allows to setup thousands of
@@ -802,9 +1121,15 @@ Delay between initiatons for each thread
.BR charon.plugins.load-tester.delete_after_established " [no]"
Delete an IKE_SA as soon as it has been established
.TP
+.BR charon.plugins.load-tester.dpd_delay " [0]"
+DPD delay to use in load test
+.TP
.BR charon.plugins.load-tester.dynamic_port " [0]"
Base port to be used for requests (each client uses a different port)
.TP
+.BR charon.plugins.load-tester.eap_password " [default-pwd]"
+EAP secret to use in load test
+.TP
.BR charon.plugins.load-tester.enable " [no]"
Enable the load testing plugin
.TP
@@ -814,18 +1139,27 @@ Fake the kernel interface to allow load-testing against self
.BR charon.plugins.load-tester.ike_rekey " [0]"
Seconds to start IKE_SA rekeying after setup
.TP
+.BR charon.plugins.load-tester.init_limit " [0]"
+Global limit of concurrently established SAs during load test
+.TP
.BR charon.plugins.load-tester.initiators " [0]"
Number of concurrent initiator threads to use in load test
.TP
.BR charon.plugins.load-tester.initiator_auth " [pubkey]"
Authentication method(s) the intiator uses
.TP
+.BR charon.plugins.load-tester.initiator_id
+Initiator ID used in load test
+.TP
.BR charon.plugins.load-tester.iterations " [1]"
Number of IKE_SAs to initate by each initiator in load test
.TP
.BR charon.plugins.load-tester.pool
Provide INTERNAL_IPV4_ADDRs from a named pool
.TP
+.BR charon.plugins.load-tester.preshared_key " [default-psk]"
+Preshared key to use in load test
+.TP
.BR charon.plugins.load-tester.proposal " [aes128-sha1-modp768]"
IKE proposal to use in load test
.TP
@@ -835,6 +1169,9 @@ Address to initiation connections to
.BR charon.plugins.load-tester.responder_auth " [pubkey]"
Authentication method(s) the responder uses
.TP
+.BR charon.plugins.load-tester.responder_id
+Responder ID used in load test
+.TP
.BR charon.plugins.load-tester.request_virtual_ip " [no]"
Request an INTERNAL_IPV4_ADDR from the server
.TP