summaryrefslogtreecommitdiffstats
path: root/etc/stas/stafd.conf
blob: 22b3f96d3174c676a51187754ca70ae9048ac0f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
# Copyright (c) 2021, Dell Inc. or its subsidiaries.  All rights reserved.
# SPDX-License-Identifier: Apache-2.0
# See the LICENSE file for details.
#
# This file is part of NVMe STorage Appliance Services (nvme-stas).

# ==============================================================================
# STorage Appliance Finder Daemon (stafd) - configuration file
#
# In this file, options that are commented represent the default values used.
# Uncommented options override the default value.


[Global]
# tron:        Trace-ON. Enable additional debug info
#              Type:  boolean
#              Range: [false, true]
#tron=false

# hdr-digest:  Protocol Data Unit (PDU) Header Digest. NVMe/TCP facilitates an
#              optional PDU Header digest. Digests are calculated using the
#              CRC32C algorithm.
#              Type:  boolean
#              Range: [false, true]
#hdr-digest=false

# data-digest: Protocol Data Unit (PDU) Data Digest. NVMe/TCP facilitates an
#              optional PDU Data digest. Digests are calculated using the
#              CRC32C algorithm.
#              Type:  boolean
#              Range: [false, true]
#data-digest=false

# kato:        Keep Alive Timeout (KATO): This field specifies the timeout value
#              for the Keep Alive feature in seconds. The default value for this
#              field is 30 seconds.
#              Type:  Unsigned integer
#              Range: 0..N
#              Unit:  Seconds
#kato=30

# queue-size:        Overrides the default number of elements in the I/O queues
#                    created by the driver.
#                    Type:  Unsigned integer
#                    Range: 16..1024
#                    Default: 128
#queue-size=128

# reconnect-delay:   Overrides the default delay, in seconds, before reconnect
#                    is attempted after a connect loss.
#                    Type:  Unsigned integer
#                    Range: 1..N
#                    Unit:  Seconds
#                    Default: 10     (retry to connect every 10 seconds)
#reconnect-delay=10

# ctrl-loss-tmo:     Overrides the default controller loss timeout period in
#                    seconds.
#                    Type:  Unsigned integer
#                    Range: -1, 0..N  where -1 means retry forever
#                    Unit:  Seconds
#                    Default: 600    (retry to connect for up to 10 minutes)
#ctrl-loss-tmo=600

# disable-sqflow:    Disables SQ flow control to omit head doorbell update for
#                    submission queues when sending nvme completions.
#                    Type:  boolean
#                    Range: [false, true]
#                    Default: false
#disable-sqflow=false

# ignore-iface: This option controls whether connections with Discovery
#               Controllers (DC) will be forced on a specific interface or
#               will rely on the routing tables to determine the interface.
#
#               See the man pages for details: man stafd.conf
#
#               Type:    boolean
#               Range:   [false, true]
#               Default: true
#ignore-iface=false

# ip-family: With this you can specify whether stafd will support IPv4, IPv6,
#            or both when connecting to Discovery Controllers (DC).
#
#            See the man pages for details: man stafd.conf
#
#            Type:    String
#            Range:   [ipv4, ipv6, ipv4+ipv6]
#            Default: ipv4+ipv6
#ip-family=ipv4+ipv6

# pleo: Port Local Entries Only. If enabled and supported, when connected to a
#       Direct Discovery Controller (DDC), stafd will ask the DDC to return
#       records for only NVM subsystem ports that are presented through the same
#       NVM subsystem port that received the Get Log Page command. When disabled
#       or not supported by the DDC, the DDC may return NVM subsystems that are
#       not even reachable by the host, including those using a transport
#       different from the transport used for the Get Log Page command (e.g. Get
#       Log Page using TCP and receiving FC subsystems). This configuration
#       parameter has no effect if the DDC does not support PLEO (see PLEOS).
#
#       Type:    String
#       Range:   [disabled, enabled]
#       Default: enabled
#pleo=enabled

# ==============================================================================
[Service Discovery]
# zeroconf: Control whether DNS-SD/mDNS automatic discovery is enabled. This is
#           used to enable or disable automatic discovery of Discovery
#           Controllers using DNS-SD/mDNS.
#
#           Type:    String
#           Range:   [disabled, enabled]
#           Default: enabled
#zeroconf=enabled

# ==============================================================================
[Discovery controller connection management]
# persistent-connections: Whether connections to Discovery Controllers (DC)
#                         are persistent. If stafd is stopped, the connections
#                         will persists. When this is set to false, stafd will
#                         disconnect from all DCs it is connected to when stafd
#                         is stopped.
#                         Type:  boolean
#                         Range: [false, true]
#persistent-connections=true

# zeroconf-connections-persistence: DCs that are discovered with mDNS service
#                                   discovery which are later lost (i.e. no mDNS
#                                   and TCP connection fails), will be purged from
#                                   the configuration after this amount of time.
#                                   Type:  Time specs.
#                                   Unit:  Takes a unit-less value in seconds,
#                                          or a time span (TS) value such as
#                                          "3 days 5 hours".
#                                   Range: -1, 0, TS.
#                                          With "-1" equal to "no timeout" and
#                                          0 equal to timeout immediately.
#                                   Default: 72 hours (3 days)
#zeroconf-connections-persistence=72hours

# ==============================================================================
[Controllers]
# controller: Discovery Controllers (DC) are specified with this keyword.
#
#             Syntax:
#               controller = transport=[trtype];traddr=[traddr];trsvcid=[trsvcid];host-traddr=[traddr];host-iface=[iface];nqn=<dcnqn>
#
#             transport=<trtype>   [MANDATORY]
#               This field specifies the network fabric being used for a NVMe-over-
#               Fabrics network. Current string values include:
#
#               Value   Definition
#               ------- -----------------------------------------------------------
#               rdma    The network fabric is an rdma network (RoCE, iWARP,
#                       Infiniband, basic rdma, etc)
#               fc      The network fabric is a Fibre Channel network.
#               tcp     The network fabric is a TCP/IP network.
#               loop    Connect to a NVMe over Fabrics target on the local host
#
#             traddr=<traddr>      [MANDATORY]
#               This field specifies the network address of the Controller. For
#               transports using IP addressing (e.g. rdma) this should be an IP-
#               based address (ex. IPv4, IPv6). It could also be a resolvable host
#               name (e.g. localhost).
#
#             nqn=<dcnqn>          [OPTIONAL]
#               This field specifies the Discovery Controller's NVMe Qualified
#               Name. If not specified, this will default to the well-known DC
#               NQN: "nqn.2014-08.org.nvmexpress.discovery".
#
#             trsvcid=<trsvcid>    [OPTIONAL]
#               This field specifies the transport service id. For transports using
#               IP addressing (e.g. rdma) this field is the port number.
#
#               Depending on the transport type, this field will default to either
#               8009 or 4420 as follows.
#
#               UDP port 4420 and TCP port 4420 have been assigned by IANA
#               for use by NVMe over Fabrics. NVMe/RoCEv2 controllers use UDP port
#               4420 by default. NVMe/iWARP controllers use TCP port 4420 by
#               default.
#
#               TCP port 4420 has been assigned for use by NVMe over Fabrics and TCP
#               port 8009 has been assigned by IANA for use by NVMe over Fabrics
#               discovery. TCP port 8009 is the default TCP port for NVMe/TCP
#               discovery controllers. There is no default TCP port for NVMe/TCP I/O
#               controllers, the Transport Service Identifier (TRSVCID) field in the
#               Discovery Log Entry indicates the TCP port to use.
#
#               The TCP ports that may be used for NVMe/TCP I/O controllers include
#               TCP port 4420, and the Dynamic and/or Private TCP ports (i.e., ports
#               in the TCP port number range from 49152 to 65535). NVMe/TCP I/O
#               controllers should not use TCP port 8009. TCP port 4420 shall not be
#               used for both NVMe/iWARP and NVMe/TCP at the same IP address on the
#               same network.
#
#               Ref: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=nvme
#
#             host-traddr=<traddr> [OPTIONAL]
#               This field specifies the network address used on the host to connect
#               to the Controller. For TCP, this sets the source address on the
#               socket.
#
#             host-iface=<iface>   [OPTIONAL]
#               This field specifies the network interface used on the host to
#               connect to the Controller (e.g. IP eth1, enp2s0, enx78e7d1ea46da).
#               This forces the connection to be made on a specific interface
#               instead of letting the system decide.
#
#             hdr-digest            [OPTIONAL]
#               See definition in [Global] section. This is used to override
#               the value specified in the [Global] section.
#
#             data-digest           [OPTIONAL]
#               See definition in [Global] section. This is used to override
#               the value specified in the [Global] section.
#
#             kato                  [OPTIONAL]
#               See definition in [Global] section. This is used to override
#               the value specified in the [Global] section.
#
#             reconnect-delay       [OPTIONAL]
#               See definition in [Global] section. This is used to override
#               the value specified in the [Global] section.
#
#             ctrl-loss-tmo         [OPTIONAL]
#               See definition in [Global] section. This is used to override
#               the value specified in the [Global] section.
#
#             disable-sqflow        [OPTIONAL]
#               See definition in [Global] section. This is used to override
#               the value specified in the [Global] section.
#
#             Multiple DCs may be specified on separate lines like this (this is
#             just an example and does not represent default values):
#
#             controller = transport=tcp;traddr=localhost;trsvcid=8009
#             controller = transport=tcp;traddr=2001:db8::370:7334;host-iface=enp0s8
#             controller = transport=fc;traddr=nn-0x204600a098cbcac6:pn-0x204700a098cbcac6
#                 ...
#
#             Type: String
#
#             Default: There is no default controller. STAF will not try to
#                      connect to a default Discovery Controller.
#controller=


# exclude: Excluded controllers. Using mDNS to automatically detect
#          and connect controllers, can result in unintentional connections
#          being made. This keyword allows configuring the controllers that
#          should not be connected to (whatever the reason may be).
#
#          The syntax is the same as for "controller=", except that the key
#          host-traddr does not apply. Multiple "exclude=" keywords may
#          appear in the config file to define the exclusion list.
#
#          Note 1: A minimal match approach is used to eliminate unwanted
#          controllers. That is, you do not need to specify all the
#          parameters to identify a controller. Just specifying the
#          host-iface, for example, can be used to exclude all controllers
#          on an interface.
#
#          Note 2: "exclude=" takes precedence over "controller=". A
#          controller specified by the "controller=" keyword, can be
#          eliminated by the "exclude=" keyword.
#
#          Syntax: Same as "controller=" above.
#          Type:   String
#
#          Example:
#           exclude = transport=tcp;traddr=fe80::2c6e:dee7:857:26bb # Eliminate a specific address
#           exclude = host-iface=enp0s8                             # Eliminate everything on this interface
#exclude=