Scalability
Metaswitch's network software products are all architected and implemented such that they
can scale across a wide range of scalability requirements.
For example, Metaswitch network software products are utilized
by devices ranging from small footprint, hand held devices, all the way to core
switch/router applications that handle billions of transactions per year.
A key part of that scalability is that the core network software product code, and the
N-BASE itself, contain no hard coded limits. For example, there are no compile-time constants,
and data structures and search strategies are designed in such a way that they can be scaled
efficiently and arbitrarily. As a result, as our customers' platforms and architectures evolve,
and as they require greater scale, no adjustments are required to the core code.
Some of that scalability is the result of careful design choices within the individual
network software products, each of which is designed, implemented and maintained within
very specific performance and scalability targets.
But a great deal of that scalability is the result of either the network software products
using N-BASE features, or the result of inherent N-BASE design features.
The following illustrates some of the design and implementation strategies adopted within the
network software products and within the N-BASE to achieve unconstrained scalability.
Flexibility and scheduling
The N-BASE architecture is flexible enough to exploit the extra
processing power in multi-threaded, multicore and multi-processor systems. For example, components may be
distributed within a task, within a processor, across multicore processors,
across multiple processors, or across multiple cards,
to achieve the optimal architecture for a particular target platform.
The N-BASE scheduling model requires that no component can block pending a single action,
which enables vastly parallel processing across the components within a single network
software product, and across the components from potentially multiple network software
product within a given task or processor instance.
Message buffers
Network software product components do not communicate directly – but rather communicate
via N-BASE "messages", which are dedicated buffers, managed by the N-BASE,
and separate from other memory management requirements.
Passing messages between product components that reside within the same
address space, whether the components are from the same product or multiple products,
reduces to a simple function call that simply moves a pointer to the buffer concerned.
The N-BASE also provides a set of utilities for management of, and access to, messages in
dedicated buffers (see above). In particular, network software product components are not
aware of the underlying buffer structure, which can be contiguous or dis-contiguous,
and can be mapped directly onto underlying hardware memory structures.
This approach means that, in many cases, a message buffer can be processed across a series
of components without memory copies – through each component accessing and manipulating the
message contents via the appropriate N-BASE utilities, and by the message being passed between
components via pointer moves. This is a major scalability benefit, as in other network
software architectures memory copies between layers and/or components can be a major component
of all execution time – especially on the "golden path".
Memory
Network software product components do not manage operating system memory directly –
but acquire, manage and release memory via the N-BASE Memory Manager.
The N-BASE Memory Manager default implementation aids scalability and performance by reducing
calls to the operating system memory manager and reducing memory fragmentation.
The N-BASE Memory Manager may be further tuned for scalability, in terms of the overall
amount of memory managed, the mix of memory block sizes, and whether the Memory Manager
acquires further operating system memory post-initialization. Metaswitch provide a range
of diagnostics to aid in such tuning.
Timers
Network software products tend to set a large number of relatively short timers –
with timers typically set per link, per session etc., and often running for less than
100 milliseconds. General purpose and embedded operating systems timer implementations
often perform poorly in such situations.
The N-BASE default timer implementation can manage a very large number of fine-grained timers,
using timer heaps and lists, and can do so with a very small number of operating system timer resources.
Control blocks
Network software products use a relatively large number of control blocks (which are
essentially linked pieces of memory acquired through the N-BASE Memory Manager) to track
information about links, sessions, etc.
For large scale implementations, a particular component may be managing many thousands of
control blocks, where each control block is identified by a specific identifier. For example,
a link control block may need to be located by a Link ID that is supplied on an incoming
link message. As such, design decisions about management and search strategies for such data
structures can have a major impact on performance and scalability.
The network software product components do not manage or search control block structures
directly – but rather
-
use the N-BASE Memory Manager (see above) to acquire and release control blocks
-
use N-BASE utilities to manage and search control block data structures.
The N-BASE utilities are stable, robust and highly optimized utilities that are tuned to
particular data structures and search strategies – and allow for highly scalable implementations.
For example there are optimized N-BASE utilities for managing and searching
- hash tables
- AVL, AVLL and AVL3 trees - asynchronous binary trees of different types with different
occupancy trade-offs
- Patricia trees (also known as radix tries/trees, Patricia tries, or crit bit tries/trees)
- dictionaries
- doubly linked lists
- arrays
- pointers/handles
- tables.
Diagnostics
The network software products use a very rich set of N-BASE diagnostics tools, where there are
a variety of different diagnostics available and the level of detail can be configured for each.
These diagnostics can be stored in memory rather than on disk, which minimizes the overhead in
recording diagnostics when debugging issues (e.g. window conditions) that only occur in high
scale scenarios.
More Information
For more information about the N-BASE and Metaswitch's network software products and
expertise contact
.