cpworker is a network packet capture tool built on libpcap, supporting multiple output methods and intelligent traffic control.
{
"cpu_affinity": "1",
"log_level": "INFO",
"control": {
"type": "unix",
"unix": {
"path": "/var/run/cloud-probe/cpworker.sock"
}
},
"execution_model": "rtc",
"pipeline": {
"buffer_size_mb": 256
},
"tasks": [
{
"req_pattern": {
"type": "custom",
"custom": {
"pattern": "host nic.eth0 and port 8011"
}
},
"capturer": {
"type": "libpcap",
"libpcap": {
"interface": "eth0",
"snaplen": 2048,
"netns": "/proc/1432897/ns/net",
"bpf": "host nic.eth0",
"buffer_size_mb": 256,
"timeout_ms": 3
}
},
"outputs": [
{
"type": "file",
"rate_limit_mbps": 10,
"slice": 2048,
"vxlan": {
"host": "10.1.2.3",
"port": 4789,
"capture_time": false,
"vni1": 1,
"vni2": 33,
"bind_device": "eth3",
"pmtudisc": "want"
},
"gre": {
"host": "10.1.2.3",
"service_tag": 34,
"bind_device": "eth3",
"pmtudisc": "want"
},
"zmq": {
"host": "10.1.2.3",
"port": 1234,
"hwm": 1000,
"service_tag": 3
},
"file": {
"name": "$PCAP_STORE_PATH/test.pcap"
},
"rotating_file": {
"file_root": "$PCAP_STORE_PATH",
"max_file_interval": 60
}
}
]
}
]
}
For more configuration examples, see: examples
| Parameter | Type | Default | Description |
|---|
| cpu_affinity | string | - | Set CPU affinity |
| log_level | string | INFO | Log level (DEBUG, INFO, WARN, ERROR) |
| control | object | - | Control plane communication interface |
| control.type | string | - | Control interface type (currently supports: unix) |
| control.unix.path | string | - | Unix socket file path |
| execution_model | string | rtc | Packet process execution model (rtc, pipeline) |
| pipeline.buffer_size_mb | int | - | Pipeline buffer size if execution_mode is pipeline |
| Parameter | Type | Default | Description |
|---|
| req_pattern | object | - | Packet direction detection |
| req_pattern.type | string | - | Direction mode (auto/custom). NONCHECK if unconfigured |
| req_pattern.custom.pattern | string | - | Pattern where nic.eth0 will be replaced with eth0's IP |
| capturer | object | - | Packet capture settings |
| capturer.type | string | - | Capture type (currently supports: libpcap) |
| Parameter | Type | Default | Description |
|---|
| interface | string | - | Capture NIC name (required) |
| snaplen | int | 2048 | Packet truncation length |
| netns | string | - | Network namespace of the NIC |
| bpf | string | - | BPF filter |
| buffer_size_mb | int | - | Buffer size (MB) |
| timeout_ms | int | - | Timeout (milliseconds) |
| Parameter | Type | Default | Description |
|---|
| type | string | - | Output type |
| rate_limit_mbps | int | - | Max output rate (Mbps), unlimited by default |
| slice | int | - | Packet truncation size (no truncation by default) |
| Parameter | Type | Default | Description |
|---|
| host | string | - | Destination IP |
| bind_device | string | - | Bind interface (default: any) |
| pmtudisc | string | - | MTU discovery mode (do/dont/want) |
| service_tag | int | - | Service tag |
| Parameter | Type | Default | Description |
|---|
| host | string | - | Destination IP |
| port | int | - | Destination port |
| capture_time | bool | - | Add capture timestamp |
| vni1 | int | - | VNI1 value (mutually exclusive with vni2) |
| vni2 | int | - | VNI2 value (mutually exclusive with vni1) |
| bind_device | string | - | Bind interface (default: any) |
| pmtudisc | string | - | MTU discovery mode (do/dont/want) |
| Parameter | Type | Default | Description |
|---|
| host | string | - | Destination IP |
| port | int | - | Destination port |
| hwm | int | - | ZMQ high watermark |
| service_tag | int | - | Service tag |
| uuid | string | "" | Probe UUID carried in heartbeat packets |
| heartbeat_ms | int | 0 | Heartbeat interval in ms (0โ60000); 0 disables heartbeat |
| Parameter | Type | Default | Description |
|---|
| name | string | - | Output filename |
| Parameter | Type | Default | Description |
|---|
| file_root | string | - | Output directory |
| max_file_interval | string | - | Max duration per file |