The net kernel is a system process which must be running
for distributed Erlang to work. The purpose of this process is to implement parts
of the BIFs spawn/4 and spawn_link/4, and to provide
authentication and monitoring of the network.
An Erlang runtime system can be started from the UNIX command line as follows:
% erl -name foobar
With this command line, the net_kernel is started as
net_kernel:start([foobar]). See erl(1).
This is done by the system itself, but the start([Name]) function
can also be called directly from the normal Erlang shell prompt,
and a normal Erlang runtime system is then converted to a node. The
kernel can be shut down with the function
stop(), but only if the kernel was not started by the system itself.
The node is then converted into a normal Erlang runtime system. All other
nodes on the network will regard this as a total node crash.
If the system is started as % erl -sname foobar,
the node name of the node will be foobar@Host, where Host is the
short name of the host (not the fully qualified domain name). The -name
flag gives a node with the fully qualified domain name. See erl(1).
The system can be started with the flag
-dist_auto_connect to control automatic connection of
remote nodes. See connect_node/1 below and erl(1).
A process which evaluates this function receives copies of the
{nodeup, Node} and
{nodedown, Node} messages that the net kernel receives from
the runtime system. The flag Flag is set to true to
turn the service on, and false to turn it off.
Nodes connected through hidden connections, see global_group(3),
cannot be monitored with net_kernel:monitor_nodes/1.
In a simple way, this function limits access to a node from a specific number of named nodes. A node which evaluates this function can only be accessed
from nodes listed in the NodeList variable.
Any access attempts made from nodes not listed in NodeList are rejected.
Explicitly establishes a connection to the node
specified by the atom Node.
Returns true if successful, false if not,
and ignored if net_kernel is not started.
This function is only necessary if the system
is started with the flag -dist_auto_connect.
See erl(1).
set_net_ticktime(NetTicktime, TransitionPeriod) -> Res
Types:
NetTicktime = integer() (> 0)
TransitionPeriod = integer() (>= 0)
Res = atom() | {atom(), integer()}
Sets net_ticktime (see kernel(6)) to
NetTicktime seconds.
Some definitions:
MTTI)
minimum(NetTicktime, PreviousNetTicktime)*1000 div 4
milliseconds.MTTIs to
cover TransitionPeriod seconds following the call to
set_net_ticktime() (i.e. ((TransitionPeriod*1000 -
1) div MTTI + 1)*MTTI milliseconds). If NetTicktime < PreviousNetTicktime, the actual
net_ticktime change will be done at the end of the
transition period; otherwise, at the beginning. During the
transition period the net_kernel will ensure that there
will be outgoing traffic on all connections at least every
MTTI millisecond.
![]() |
The |
Currently defined return values (Res):
unchanged
net_ticktime already had the value of
NetTicktime and was left unchanged.change_initiated
net_kernel has initiated the change of the
net_ticktime to NetTicktime seconds.{ongoing_change_to, NewNetTicktime}
net_kernel was busy changing the net_ticktime to
NewTicktime seconds.set_net_ticktime(NetTicktime) -> Res
Types:
NetTicktime = integer()
Res = atom() | {atom(), integer()}
The same as the call set_net_ticktime(NetTicktime, 60).
Types:
Res = integer() | {atom(), integer()}
Gets the net_ticktime.
Currently defined return values (Res):
NetTicktime
net_ticktime is NetTicktime
seconds.{ongoing_change_to, NetTicktime}
net_kernel is currently changing the
net_ticktime to NetTicktime seconds.