[[overview]]
== OsmoPCAP Overview

=== Package Capturing in distributed telecoms networks

Obtaining raw, binary protocol traces [for later analysis] is an
essential capability in order to investigate any kind of problem
in any computer networking system.

The very distributed, heterogenuous nature of cellular networks
(compared to end-to-end IP networks) results in a lot of relevant
information being present only at some specific interfaces / points
in the network.  This in turn means that packet captures have to
be performed at a variety of different network elements in order
to get the full picture of what is happening.

Recording protocol traces at various different points in the network
inevitably raises the question of how to aggregate these.

[[about]]
=== About OsmoPCAP

OsmoPCAP is a software suite consisting of two programs, a client and a
server component.

- osmo-pcap-client obtains protocol traces by using AF_PACKET sockets,
  optionally with a capture filter.  It then forwards the captures to
  a remote server.
- osmo-pcap-server accepts incoming connections from clients. It
  receives captured packets from those clients and stores them.

The server and client communicate using a custom, TCP based protocol
for passing captured packets from client to server.  Based on your
configuration, it can optionally be secured by TLS transport-level
encryption and authentication.

NOTE:: The osmo-pcap programs runs as normal, single-threaded userspace
programs, without any specific emphasis on efficiency.  It doesn't use
any of the advanced zero-copy mechanisms available on many modern OSs.
The goal is to capture telecom signaling (control plane) traffic, whose
bandwidth is (unlike that of the user plane) typically relatively low
compared to the available CPU / IO speeds.  Don't expect osmo-pcap to
handle wire-rate multi-gigabit throughput.
