intro.xml 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  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 software 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 was 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 software. 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 was implemented in the BIND 10 framework and to certain extent
  28. still depends on various BIND 10 libraries. It also requires the BIND 10
  29. framework to run, because the 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 the default installation of some operating systems,
  59. nor in the standard package 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. <itemizedlist>
  65. <listitem>
  66. <simpara>
  67. Kea was developed as a collection of applications within BIND
  68. 10 framework and it still relies on the remaining parts of
  69. this framework. In particular, the servers' configuration and
  70. startup are still facilitated by the modules which originate
  71. in BIND 10. These modules require at least Python 3.1 to run.
  72. They also work with Python 3.2, 3.3 or 3.4 (<ulink
  73. url="http://www.python.org/"/>). The dependency on Python will
  74. be removed once replacement configuration and startup
  75. mechanisms are developed and released as Kea 0.9. At this
  76. point Kea will be written in pure C++.
  77. </simpara>
  78. </listitem>
  79. <listitem>
  80. <simpara>
  81. Kea uses the Botan cryptographic library for C++
  82. (<ulink url="http://botan.randombit.net/"/>).
  83. It requires at least Botan version 1.8.
  84. <!-- @todo 0.9/#2406: Add info about OpenSSL here -->
  85. </simpara>
  86. </listitem>
  87. <listitem>
  88. <simpara>
  89. Kea uses the log4cplus C++ logging library
  90. (<ulink url="http://log4cplus.sourceforge.net/"/>).
  91. It requires at least log4cplus version 1.0.3.
  92. </simpara>
  93. </listitem>
  94. <listitem>
  95. <simpara>
  96. In order to store lease information in a MySQL database, Kea requires MySQL
  97. headers and libraries. This is an optional dependency in that Kea can be
  98. built without MySQL support.
  99. </simpara>
  100. </listitem>
  101. <listitem>
  102. <simpara>
  103. In order to store lease information in a PostgresSQL database, Kea requires PostgresSQL
  104. headers and libraries. This is an optional dependency in that Kea can be
  105. built without PostgresSQL support.
  106. </simpara>
  107. </listitem>
  108. </itemizedlist>
  109. </section>
  110. <section id="starting_stopping">
  111. <title>Starting and Stopping the Server</title>
  112. <!-- @todo: Rewrite this section after #3422 is done -->
  113. <para>
  114. Kea is modular. Part of this modularity is
  115. accomplished using multiple cooperating processes which, together,
  116. provide the server functionality.
  117. </para>
  118. <!-- @todo: Rename processes here, once they are renamed in the source -->
  119. <para>
  120. At first, running many different processes may seem confusing.
  121. However, these processes are started by running a single
  122. command, <command>bind10</command>. This command starts
  123. a master process, <command>b10-init</command>, which will
  124. start other required processes and other processes when
  125. configured. The processes that may be started have names
  126. starting with "b10-", including:
  127. </para>
  128. <para>
  129. <itemizedlist>
  130. <listitem>
  131. <simpara>
  132. <command>b10-cfgmgr</command> &mdash;
  133. Configuration manager.
  134. This process maintains all of the configuration for BIND 10.
  135. </simpara>
  136. </listitem>
  137. <listitem>
  138. <simpara>
  139. <command>b10-cmdctl</command> &mdash;
  140. Command and control service.
  141. This process allows external control of the BIND 10 system.
  142. </simpara>
  143. </listitem>
  144. <listitem>
  145. <simpara>
  146. <command>b10-dhcp4</command> &mdash;
  147. DHCPv4 server process.
  148. This process responds to DHCPv4 queries from clients.
  149. </simpara>
  150. </listitem>
  151. <listitem>
  152. <simpara>
  153. <command>b10-dhcp6</command> &mdash;
  154. DHCPv6 server process.
  155. This process responds to DHCPv6 queries from clients.
  156. </simpara>
  157. </listitem>
  158. <listitem>
  159. <simpara>
  160. <command>b10-dhcp-ddns</command> &mdash;
  161. DHCP-DDNS process.
  162. This process acts as an intermediary between the DHCP servers
  163. and DNS server. It receives name update requests from the DHCP
  164. servers and sends DNS Update messages to the DNS servers.
  165. </simpara>
  166. </listitem>
  167. <listitem>
  168. <simpara>
  169. <command>b10-msgq</command> &mdash;
  170. Message bus daemon.
  171. This process coordinates communication between all of the other
  172. BIND 10 processes.
  173. </simpara>
  174. </listitem>
  175. <listitem>
  176. <simpara>
  177. <command>b10-sockcreator</command> &mdash;
  178. Socket creator daemon.
  179. This process creates sockets used by
  180. network-listening BIND 10 processes.
  181. </simpara>
  182. </listitem>
  183. <listitem>
  184. <simpara>
  185. <command>b10-stats</command> &mdash;
  186. Statistics collection daemon.
  187. This process collects and reports statistics data.
  188. </simpara>
  189. </listitem>
  190. <listitem>
  191. <simpara>
  192. <command>b10-stats-httpd</command> &mdash;
  193. HTTP server for statistics reporting.
  194. This process reports statistics data in XML format over HTTP.
  195. </simpara>
  196. </listitem>
  197. </itemizedlist>
  198. </para>
  199. <para>
  200. These do not need to be manually started independently.
  201. </para>
  202. </section>
  203. <section id="managing_once_running">
  204. <title>Managing BIND 10</title>
  205. <!-- @todo: Rewrite this section after #3422 is done -->
  206. <para>
  207. Once BIND 10 is running, a few commands are used to interact
  208. directly with the system:
  209. <itemizedlist>
  210. <listitem>
  211. <simpara>
  212. <command>bindctl</command> &mdash;
  213. Interactive administration interface.
  214. This is a low-level command-line tool which allows
  215. a developer or an experienced administrator to control
  216. Kea.
  217. </simpara>
  218. </listitem>
  219. <listitem>
  220. <simpara>
  221. <command>b10-cmdctl-usermgr</command> &mdash;
  222. User access control.
  223. This tool allows an administrator to authorize additional users
  224. to manage Kea.
  225. </simpara>
  226. </listitem>
  227. <!-- TODO usermgr -->
  228. </itemizedlist>
  229. </para>
  230. </section>
  231. <para>
  232. The tools and modules are covered in full detail in this guide.
  233. <!-- TODO point to these -->
  234. In addition, manual pages are also provided in the default installation.
  235. </para>
  236. <!--
  237. bin/
  238. bindctl*
  239. host*
  240. lib/
  241. libauth
  242. libdns
  243. libexceptions
  244. python3.1/site-packages/isc/{cc,config}
  245. sbin/
  246. bind10
  247. share/
  248. share/bind10/
  249. auth.spec
  250. b10-cmdctl.pem
  251. init.spec
  252. passwd.csv
  253. man/
  254. var/
  255. bind10/b10-config.db
  256. -->
  257. <para>
  258. BIND 10 also provides libraries and programmer interfaces
  259. for C++ and Python for the message bus and configuration backend,
  260. and, of course, DHCP. These include detailed developer
  261. documentation and code examples.
  262. <!-- TODO point to this -->
  263. </para>
  264. </chapter>