intro.xml 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
  3. "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
  4. <!ENTITY mdash "&#x2014;" >
  5. <!ENTITY % version SYSTEM "version.ent">
  6. %version;
  7. ]>
  8. <chapter id="intro">
  9. <title>Introduction</title>
  10. <para>
  11. Kea is the next generation of DHCP servers developed by ISC.
  12. It supports both DHCPv4 and DHCPv6 protocols along with their
  13. extensions, e.g. prefix delegation and dynamic updates to DNS.
  14. </para>
  15. <para>
  16. Kea has been initially developed as a part of the BIND 10 framework
  17. (<ulink url="http://bind10.isc.org"/>). In early 2014, ISC
  18. made the decision to discontinue active development of BIND 10 and
  19. continue development of Kea as standalone DHCP servers. As a result,
  20. the components and libraries related to the BIND10 framework and DNS
  21. are going to be removed from the Kea source tree over time.
  22. In order to remove the dependency on Python 3, the BIND 10 framework
  23. will be replaced by the server startup and configuration mechanisms
  24. written in C++.
  25. </para>
  26. <note>
  27. <simpara>Kea has been implemented in BIND 10 framework and to certain extent
  28. it still depends on various BIND 10 libraries. It also requires the BIND 10
  29. framework to run, because BIND 10 configuration mechanisms are used to
  30. configure Kea. As a result, this document still refers to BIND 10 in many
  31. paragraphs. The term "BIND 10" in the context of this document means
  32. "BIND 10 libraries and applications which are necessary for Kea to run
  33. and configure". The term "Kea" means "the collection of binaries and libraries
  34. which, as a whole, implement the DHCP protocols".
  35. </simpara>
  36. </note>
  37. <para>
  38. This guide covers Kea version &__VERSION__;.
  39. </para>
  40. <section>
  41. <title>Supported Platforms</title>
  42. <para>
  43. Kea is officially supported on RedHat Enterprise Linux,
  44. CentOS, Fedora and FreeBSD systems. It is also likely to work on many
  45. other platforms: builds have been tested on (in no particular order)
  46. Debian GNU/Linux 6 and unstable, Ubuntu 9.10, NetBSD 5,
  47. Solaris 10 and 11, FreeBSD 7 and 8, CentOS Linux 5.3,
  48. MacOS 10.6 and 10.7, and OpenBSD 5.1. Non supported systems
  49. (especially non-Linux) are likely to have issues with directly
  50. connected DHCPv4 clients.
  51. </para>
  52. <para>There are currently no plans to port Kea to Windows platforms.</para>
  53. </section>
  54. <section id="required-software">
  55. <title>Required Software at Run-time</title>
  56. <para>
  57. Running Kea uses various extra software which may
  58. not be provided in some operating systems' default
  59. installations nor standard packages collections. You may
  60. need to install this required software separately.
  61. (For the build requirements, also see
  62. <xref linkend="build-requirements"/>.)
  63. </para>
  64. <para>
  65. Kea was developed as a collection of applications within BIND
  66. 10 framework and it still relies on the remaining parts of
  67. this framework. In particular, the servers' configuration and
  68. startup are still facilitated by the modules which originate
  69. in BIND 10. These modules require at least Python 3.1 to run.
  70. They also work with Python 3.2, 3.3 or 3.4 (<ulink
  71. url="http://www.python.org/"/>). The dependency on Python will
  72. be removed once a replacing configuration and startup
  73. mechanisms are developed and released as Kea 0.9. At this
  74. point Kea will be written in pure C++.
  75. </para>
  76. <para>
  77. Kea uses the Botan crypto library for C++
  78. (<ulink url="http://botan.randombit.net/"/>).
  79. It requires at least Botan version 1.8.
  80. <!-- @todo 0.9/#2406: Add info about OpenSSL here -->
  81. </para>
  82. <para>
  83. Kea uses the log4cplus C++ logging library
  84. (<ulink url="http://log4cplus.sourceforge.net/"/>).
  85. It requires at least log4cplus version 1.0.3.
  86. </para>
  87. <para>
  88. Kea can use MySQL headers and libraries to build MySQL database backend
  89. that can be used to store leases. This is an optional dependency. When
  90. it is missing, Kea will lack the ability to store leases in MySQL
  91. database.
  92. </para>
  93. <para>
  94. Kea can use PostgreSQL headers and libraries to build PostgreSQL
  95. database backend that can be used to store leases. This is an optional
  96. dependency. When it is missing, Kea will lack the ability to store
  97. leases in PostgreSQL database.
  98. </para>
  99. </section>
  100. <section id="starting_stopping">
  101. <title>Starting and Stopping the Server</title>
  102. <!-- @todo: Rewrite this section after #3422 is done -->
  103. <para>
  104. Kea is modular. Part of this modularity is
  105. accomplished using multiple cooperating processes which, together,
  106. provide the server functionality.
  107. </para>
  108. <!-- @todo: Rename processes here, once they are renamed in the source -->
  109. <para>
  110. At first, running many different processes may seem confusing.
  111. However, these processes are started by running a single
  112. command, <command>bind10</command>. This command starts
  113. a master process, <command>b10-init</command>, which will
  114. start other required processes and other processes when
  115. configured. The processes that may be started have names
  116. starting with "b10-", including:
  117. </para>
  118. <para>
  119. <itemizedlist>
  120. <listitem>
  121. <simpara>
  122. <command>b10-cfgmgr</command> &mdash;
  123. Configuration manager.
  124. This process maintains all of the configuration for BIND 10.
  125. </simpara>
  126. </listitem>
  127. <listitem>
  128. <simpara>
  129. <command>b10-cmdctl</command> &mdash;
  130. Command and control service.
  131. This process allows external control of the BIND 10 system.
  132. </simpara>
  133. </listitem>
  134. <listitem>
  135. <simpara>
  136. <command>b10-dhcp4</command> &mdash;
  137. DHCPv4 server process.
  138. This process responds to DHCPv4 queries from clients.
  139. </simpara>
  140. </listitem>
  141. <listitem>
  142. <simpara>
  143. <command>b10-dhcp6</command> &mdash;
  144. DHCPv6 server process.
  145. This process responds to DHCPv6 queries from clients.
  146. </simpara>
  147. </listitem>
  148. <listitem>
  149. <simpara>
  150. <command>b10-dhcp-ddns</command> &mdash;
  151. DHCP-DDNS process.
  152. This process acts as an intermediary between the DHCP servers
  153. and DNS server. It receives name update requests from the DHCP
  154. servers and sends DNS Update messages to the DNS servers.
  155. </simpara>
  156. </listitem>
  157. <listitem>
  158. <simpara>
  159. <command>b10-msgq</command> &mdash;
  160. Message bus daemon.
  161. This process coordinates communication between all of the other
  162. BIND 10 processes.
  163. </simpara>
  164. </listitem>
  165. <listitem>
  166. <simpara>
  167. <command>b10-sockcreator</command> &mdash;
  168. Socket creator daemon.
  169. This process creates sockets used by
  170. network-listening BIND 10 processes.
  171. </simpara>
  172. </listitem>
  173. <listitem>
  174. <simpara>
  175. <command>b10-stats</command> &mdash;
  176. Statistics collection daemon.
  177. This process collects and reports statistics data.
  178. </simpara>
  179. </listitem>
  180. <listitem>
  181. <simpara>
  182. <command>b10-stats-httpd</command> &mdash;
  183. HTTP server for statistics reporting.
  184. This process reports statistics data in XML format over HTTP.
  185. </simpara>
  186. </listitem>
  187. </itemizedlist>
  188. </para>
  189. <para>
  190. These do not need to be manually started independently.
  191. </para>
  192. </section>
  193. <section id="managing_once_running">
  194. <title>Managing BIND 10</title>
  195. <!-- @todo: Rewrite this section after #3422 is done -->
  196. <para>
  197. Once BIND 10 is running, a few commands are used to interact
  198. directly with the system:
  199. <itemizedlist>
  200. <listitem>
  201. <simpara>
  202. <command>bindctl</command> &mdash;
  203. Interactive administration interface.
  204. This is a low-level command-line tool which allows
  205. a developer or an experienced administrator to control
  206. Kea.
  207. </simpara>
  208. </listitem>
  209. <listitem>
  210. <simpara>
  211. <command>b10-cmdctl-usermgr</command> &mdash;
  212. User access control.
  213. This tool allows an administrator to authorize additional users
  214. to manage Kea.
  215. </simpara>
  216. </listitem>
  217. <!-- TODO usermgr -->
  218. </itemizedlist>
  219. </para>
  220. </section>
  221. <para>
  222. The tools and modules are covered in full detail in this guide.
  223. <!-- TODO point to these -->
  224. In addition, manual pages are also provided in the default installation.
  225. </para>
  226. <!--
  227. bin/
  228. bindctl*
  229. host*
  230. lib/
  231. libauth
  232. libdns
  233. libexceptions
  234. python3.1/site-packages/isc/{cc,config}
  235. sbin/
  236. bind10
  237. share/
  238. share/bind10/
  239. auth.spec
  240. b10-cmdctl.pem
  241. init.spec
  242. passwd.csv
  243. man/
  244. var/
  245. bind10/b10-config.db
  246. -->
  247. <para>
  248. BIND 10 also provides libraries and programmer interfaces
  249. for C++ and Python for the message bus and configuration backend,
  250. and, of course, DHCP. These include detailed developer
  251. documentation and code examples.
  252. <!-- TODO point to this -->
  253. </para>
  254. </chapter>