[[modules-network]]
== Network Settings

There are several modules within a Node that use network based
configuration, for example, the
<<modules-transport,transport>> and
<<modules-http,http>> modules. Node level
network settings allows to set common settings that will be shared among
all network based modules (unless explicitly overridden in each module).

The `network.bind_host` setting allows to control the host different
network components will bind on. By default, the bind host will be
`anyLocalAddress` (typically `0.0.0.0` or `::0`).

The `network.publish_host` setting allows to control the host the node
will publish itself within the cluster so other nodes will be able to
connect to it. Of course, this can't be the `anyLocalAddress`, and by
default, it will be the first non loopback address (if possible), or the
local address.

The `network.host` setting is a simple setting to automatically set both
`network.bind_host` and `network.publish_host` to the same host value.

Both settings allows to be configured with either explicit host address
or host name. The settings also accept logical setting values explained
in the following table:

[cols="<,<",options="header",]
|=======================================================================
|Logical Host Setting Value |Description
|`_local_` |Will be resolved to the local ip address.

|`_non_loopback_` |The first non loopback address.

|`_non_loopback:ipv4_` |The first non loopback IPv4 address.

|`_non_loopback:ipv6_` |The first non loopback IPv6 address.

|`_[networkInterface]_` |Resolves to the ip address of the provided
network interface. For example `_en0_`.

|`_[networkInterface]:ipv4_` |Resolves to the ipv4 address of the
provided network interface. For example `_en0:ipv4_`.

|`_[networkInterface]:ipv6_` |Resolves to the ipv6 address of the
provided network interface. For example `_en0:ipv6_`.
|=======================================================================

When the `cloud-aws` plugin is installed, the following are also allowed
as valid network host settings:

[cols="<,<",options="header",]
|==================================================================
|EC2 Host Value |Description
|`_ec2:privateIpv4_` |The private IP address (ipv4) of the machine.
|`_ec2:privateDns_` |The private host of the machine.
|`_ec2:publicIpv4_` |The public IP address (ipv4) of the machine.
|`_ec2:publicDns_` |The public host of the machine.
|`_ec2_` |Less verbose option for the private ip address.
|`_ec2:privateIp_` |Less verbose option for the private ip address.
|`_ec2:publicIp_` |Less verbose option for the public ip address.
|==================================================================

[float]
=== TCP Settings

Any component that uses TCP (like the HTTP, Transport and Memcached)
share the following allowed settings:

[cols="<,<",options="header",]
|=======================================================================
|Setting |Description
|`network.tcp.no_delay` |Enable or disable tcp no delay setting.
Defaults to `true`.

|`network.tcp.keep_alive` |Enable or disable tcp keep alive. By default
not explicitly set.

|`network.tcp.reuse_address` |Should an address be reused or not.
Defaults to `true` on none windows machines.

|`network.tcp.send_buffer_size` |The size of the tcp send buffer size
(in size setting format). By default not explicitly set.

|`network.tcp.receive_buffer_size` |The size of the tcp receive buffer
size (in size setting format). By default not explicitly set.
|=======================================================================