<chapter>
<title>Requirements</title>

	<para>This chapter lists the requirements of the gateway and
	its design.</para>

	<para>The gateway must be able to share load between serveral
	hosts. This is also necessary for fault tolerance.</para>

	<para>The gateway needs to be able to serve hundreds of concurrent
	users on a PC with a 400 MHz Pentium CPU, 128 MB of memory,
	10 Mbit/s network interface.</para>
	
	<para>The gateway needs to be able to serve thousands of
	concurrent users on reasonably priced hardware: less than ten
	PCs with high-end Intel CPUs, 128 MB of memory, fast network
	interfaces. It needs to be scalable to even higher levels of
	perfomance by adding more hardware (meaning that there can't
	be a single bottleneck that prevents more users from being
	served).</para>

	<para>If one of the hosts running the gateway crashes (or the
	gateway component running on that host crashes), the rest of the
	gateway must continue to work. If the crashed component recovers,
	the rest of the gateway needs to start using it again.	Likewise,
	for load balancing, new components must be able to connect to the
	rest of the gateway while running.  Sessions and transactions that
	were running on the crashed component may be terminated, i.e.,
	it is not necessary to migrate them to another component.  </para>
	
	<para>The architecture design needs to be simple. We have
	limited resources, and it is simply not realistic to assume
	that a complicated design is implementable quickly. We can assume
	that performance is adequate as long as no single bottleneck
	exists in the design.</para>
	
	<para>The gateway needs to support both WAP and SMS services.
	New bearers and transport protocols must be simple to add.</para>

</chapter>

