Structure of the TCP/IP manager

As a resource manager, io-pkt-* benefits from the code savings and standard interface that all native resource managers enjoy. Due to the natural priority inheritance of BlackBerry 10 OS IPC, clients are dealt with in priority and time order, which leads to a more natural allocation of CPU resources.

Diagram showing io-pkt and its dependents.

PPP is implemented as part of io-pkt* . Since io-pkt* handles the transmission of PPP packets, there is no need for a memory copy of the packet data. This approach allows for high-performance PPPoE connections.

Other components of the TCP/IP suite (such as the NFS, and so on.) are implemented outside of io-pkt*. This leads to better modularity and fault-tolerance.

Socket API

The BSD Socket API was the obvious choice for the BlackBerry 10 OS. The Socket API is the standard API for TCP/IP programming in the UNIX world. In the Windows world, the Winsock API is based on and shares a lot with the BSD Socket API. This makes conversion between the two fairly easy. All the routines that application programmers would expect are available, including (but not limited to):

The common daemons and utilities from the Internet easily port or just compile in this environment. This makes it easy to leverage what already exists for your applications.

Database routines

The database routines listed below have been modified to better suit embedded systems.

The getprotobyname() and getprotobynumber() functions have been modified to contain a small number of builtin protocols, including IP, ICNP, UDP, and TCP. For many applications, this means that the /etc/protocols file doesn't need to exist.
The getservbyname() function has been modified to contain a small number of builtin services, including ftp, telnet, smtp, domain, nntp, netbios-ns, netbios-ssn, sunrpc, and nfsd. For many applications, this means that the /etc/services file doesn't need to exist.

Multiple stacks

The BlackBerry 10 OS network manager (io-pkt) lets you load multiple protocol shared objects. You can even run multiple, independent instances of the network manager (io-pkt*) itself. As with all BlackBerry 10 OS system components, each io-pkt* naturally benefits from complete memory protection thanks to our microkernel architecture.

IP filtering and NAT

The IP filtering and NAT (Network Address Translation) io-pkt* module is a dynamically loadable TCP/IP stack module. The lsm-pf-*.so module provides high-efficiency firewall services and includes such features as:

  • Rule grouping—to apply different groups of rules to different packets
  • Stateful filtering—an optional configuration to allow packets related to an already authorized connection to bypass the filter rules
  • NAT—for mapping several internal addresses into a public (Internet) address, allowing several internal systems to share a single Internet IP address.
  • Proxy services—to allow ftp, netbios, and H.323 to use NAT
  • Port redirection—for redirecting incoming traffic to an internal server or to a pool of servers.

The IP filtering and NAT rules can be added or deleted dynamically to a running system. Logging services are also provided with the suite of utilities to monitor and control this module.


NTP (Network Time Protocol) allows you to keep the time of day for the devices in your network synchronized with the Internet standard time servers. The BlackBerry 10 OS NTP daemon supports both server and client modes. In server mode, a daemon on the local network synchronizes with the standard time servers. It then broadcasts or multicasts what it learned to the clients on the local network, or wait for client requests. The client NTP systems is then synchronized with the server NTP system. The NTP suite implements NTP v4 while maintaining compatibility with v3, v2, and v1.

Dynamic host configuration

We support DHCP (Dynamic Host Configuration Protocol), which is used to obtain TCP/IP configuration parameters. The DHCP client ( dhcp.client ) obtains its configuration parameters from the DHCP server and configure the TCP/IP host for the user. This allows the user to add a host to the network without knowing what parameters (IP address, gateway, and so on.) are required for the host. DHCP also allows a system administrator to control how hosts are added to the network. A DHCP server daemon (dhcpd) is also provided to manage these clients.

For more information, see dhcp.client , and dhcpd .

Last modified: 2015-03-31

Got questions about leaving a comment? Get answers from our Disqus FAQ.

comments powered by Disqus