Automatic Push PCAP

Prev Next

FMADIO Packet Capture systems provide a built-in Push PCAP feature to transfer captured PCAP data on a regular schedule to a remote system or local Scratch Disk. An example is pushing 1 minute PCAPs to a remote NFS share or an S3 storage bucket.

Supported Hardware

Hardware

Push PCAP Intraday

Push PCAP End of Day

Min. firmware version

Notes

FMADIO-3114

✅

6979

FMADIO-3214

✅

6979

FMADIO-3414

✅

6979

FMADIO-3514

✅

6979

FMADIO-5114

✅

✅

6979

FMADIO-5214

✅

✅

6979

FMADIO-5414

✅

✅

6979

FMADIO-5514

✅

✅

6979

Configuration

Configuration is via configuration scripts located at:

/opt/fmadio/etc/push_pcap.lua

If there is no such file above, please copy the basic example from the following location:

/opt/fmadio/etc_ro/push_pcap.lua.basic

An example is shown as follows:

local Config = {}

Config.TimeoutRing      = 5*60e9
Config.Target           = {}

table.insert(Config.Target,
{
        Desc      = "Full",
        Mode      = "File",
        Path      = os.date("/mnt/remote0/pcap/%Y%m%d/all-"),
        Split     = "--split-time "..(60*60*1e9),
        SplitCmd  = "-Z fmadio",
        FileName  = "--filename-tstr-HHMMSS",
        FilterBPF = "",
        PipeCmd   = "zstd -c -T8",
        FileSuffix= ".pcap.zstd",
})

table.insert(Config.Target,
{
        Desc      = "tcp_192_168_1_0",
        Mode      = "File",
        Path      = os.date("/mnt/remote0/pcap/%Y%m%d/tcp_host-"),
        Split     = "--split-time "..(60*60*1e9),
        SplitCmd  = "-Z fmadio",
        FileName  = "--filename-tstr-HHMMSS",
        FilterBPF = "net 192.168.1.0/24",
        PipeCmd   = "zstd -c -T8",
        FileSuffix= ".pcap.zstd",
})
return Config

Multiple Push PCAP targets can be specified, there is no real limit however throughput of processing may be impacted.

In the above example there are 2 Push PCAP rules:

A) Push all packet data (no filter)

This Push PCAP target sends all PCAP data the remote NFS share mounted on:

/mnt/remote0

See Mount Remote NFS (Linux) Drive for details on setting up /mnt/remote0 mounting points.

The specified is "FilterBPF=nil" meaning there is no filter, thus all traffic is pushed

B) Push all TCP data from network 192.168.1.0/24

The second example shows pushing all TCP data on the network 192.168.1.0/24 to the specified /mnt/remote0/push/ directory with a PCAP file prefix of "tcp_*"

Note:

FilterBPF=net 192.168.1.0/24 and tcp  

This applies a full BPF (Berkley Packet Filter https://en.wikipedia.org/wiki/Berkeley_Packet_Filter ) with the filter "tcp" on the packets before writing it to the location. This results in only TCP data written to the /mnt/remote0/push/tcp_*.pcap output files.

Supported Endpoints

Mode

Description

linux file

linux file on FMADIO capture system

NFS

remote NFS mountpoint on FMADIO capture system

SFTP

remote SSH file system via rclone ( https://rclone.org/sftp/ )

FTP

FTP push via rclone ( https://rclone.org/ftp/ )

S3

S3 protocol via rclone ( https://rclone.org/s3/ )

Google Drive

Google drive via rclone ( https://rclone.org/drive/ )

Digital Ocean

Digital Ocean Spaces via rclone ( https://rclone.org/s3/#digitalocean-spaces )

Azure Blob

Microsoft Azure Blob via rclone ( https://rclone.org/azureblob/ )

Dropbox

Dropbox via rclone ( https://rclone.org/dropbox/ )

Hadoop HDFS

Hadoop file system via rclone ( https://rclone.org/hdfs/ )

Ceph

Ceph S3 interface via rclone (   https://rclone.org/s3/ )

and many more, see the rclone documentation for full list of endpoints supported: https://rclone.org/docs/

If you have questions, problems or feedback related to this topic please contact support@fmad.io.