Handbooks
- Analysts' Handbook: Using SiLK for Network Traffic Analysis (pdf only)
- tutorial on the SiLK tools and on using them for analyzing network traffic
- PySiLK: SiLK in Python (pdf)
- reference guide for manipulating SiLK Flow data from within Python
- The SiLK Reference Guide (pdf)
- the manual page for each tool in a single document
- SiLK Installation Handbook (pdf)
- instructions on configuring, building, and installing SiLK at your site
Alphabetized Index of Manuals
Analysis Suite
The SiLK Analysis Suite is a collection of command-line tools for querying packed NetFlow data. The most important tool is rwfilter, an application for querying the central NetFlow data repository for NetFlow records that satisfy a set of filtering options. The tools are intended to be composed in various ways to perform an analysis task. A typical analysis uses unix pipes and intermediate data files to share data between invocations of tools.
The Analysts' Handbook: Using SiLK for Network Traffic Analysis (pdf only) gives a tutorial on the tools and describes using them for analysis.
Each tool is distributed with its own UNIX manual page (available through the links below). In addition, all the manual pages are available in a singe document: The SiLK Reference Guide (pdf).
Filtering, sorting, and display
Partition SiLK Flow records into one or more 'pass' and/or 'fail' output streams. |
|
Configuration file for Classes, Types, and Sensors. |
|
Read SiLK Flow records, sort them by specified, and write the records to the named output path or to the standard output. |
|
Print SiLK Flow records in a |-delimited, columnar, human-readable format. |
Counting and statistics
Summarize SiLK Flow records into user-defined keyed bins specified with the --fields switch. |
|
Summarize SiLK Flow records across time, producing textual output with counts of bytes, packets, and flow records for each time bin. |
|
Summarize SiLK Flow records by one of a limited number of key/value pairs and display the results as a Top-N or Bottom-N list. |
|
Summarize SiLK Flow records by a specified key and print the byte, packet, and flow counts for flows matching the key. |
|
Summarize SiLK flow records by source or destination IP |
IPset, Bag, and Prefix Map manipulation
Read SiLK Flow records and generate binary IPset file(s). |
|
Read IP addresses in dotted-quad or CIDR notation from input-file and writes a binary IPset file to output-file. |
|
Print the IPs and other information about IPset files. |
|
Generate a new IP-set by tooling all --add-set binary IP-set files, then removing all --remove-set binary IP-set files from the new IP-set. |
|
Generate a new IP-set by membering all --add-set binary IP-set files, then removing all --remove-set binary IP-set files from the new IP-set. |
|
Generate a new IP-set by intersecting all --add-set binary IP-set files, then removing all --remove-set binary IP-set files from the new IP-set. This command is deprecated; use rwsettool instead. |
|
Merge the input binary IPSet files into the output IPSet; an IP in any input file will be in the output file. This command is deprecated; use rwsettool instead. |
|
Read SiLK Flow records and builds binary Bag(s) containing key-count pairs. |
|
Create a binary Bag file from binary IPset file or a textual input file. |
|
Print binary Bag files as text. |
|
Perform operations on bag files. |
|
|
Read textual input and creates a binary prefixmap file for use with the Address Type (addrtype) and Prefix Map (pmapfilter) Plug-Ins. |
|
|
Print information about a prefix map (pmap) file. By default, print each IP range in the pmap and its label. |
|
|
Import a SiLK IPset, Bag, or Prefix Map file into the IP Address Association (IPA) library. |
|
|
Export a set of IP addresses from the IP Address Association (IPA) library to a SiLK IPset, Bag, or Prefix Map. |
Run time plug-ins
The Address Type plug-in provides a way to map an IP address to an integer denoting the IP as internal, external, or non-routable. |
|
The Country Code plug-in provides a mapping from an IP address to two-letter, lowercase abbreviation of the country that "owns" the IP address. |
|
The Prefixmap plug-in provides a way to map field values to string labels based on a user-defined map file. |
Record grouping and masking
Group flows together by specified id-fields and delta-field; marks the group ID in next hop IP; requires pre-sorting. |
|
Group records as queries and responses. |
|
Read SiLK Flow records from STDIN, mask-off the lower (32-N) bits of the specified IP address(es), and write the resulting records to stdout. |
Packet and external flow-format processing
Output a tcpdump file as ASCII, in a form similar to rwcut. |
|
Detect and eliminate duplicate records. |
|
Filter a tcpdump file by outputting only packets whose 5-tuple and timestamp match corresponding flows in a rw-file. |
|
Read a tcpdump file and generate a SiLK Flow record for every packet. |
|
Convert a tcpdump file to a single file of SiLK Flow records; rwp2yaf2silk assumes that the yaf and rwipfix2silk commands are available on your system. |
|
Convert a stream of IPFIX (Internet Protocol Flow Information eXport) records to the SiLK Flow record format. |
|
Convert a stream of SiLK Flow records to an IPFIX (Internet Protocol Flow Information eXport) format. |
Scan detection
Attempt to detect scanning activity from SiLK Flow records. rwscan can produce files that can be loaded into a database and queried with rwscanquery. |
|
Query the scan database that has been populated from database load files generated by rwscan. |
Utilities
Map between sensor names and sensor IDs. |
|
Read pipe (|) delimited text from the standard input, convert integer values in the specified column(s) (default first column) to dotted-decimal IP addresss, and print result to standard output. |
|
Append the SiLK Flow records contained in the second through final filename arguments to the records contained in the first filename argument. |
|
Read SiLK Flow records from the FILES named on the comamnd line, or from the standard input when no FILES are provided, and write the SiLK records to the specified output file or to the standard output if it is not connected to a terminal. |
|
Read SiLK Flow records from files named on the command line or from the standard input and write the records to the named output path or to the standard output, removing any duplicate flow records. Note that the order of records is not maintained as the records are sorted. |
|
Print to the standard output the list of files that rwfilter would normally process for a given set of file selection switches. |
|
Print information (type, version, etc.) about a SiLK Flow, IPset, or Bag file. |
|
Create the country code prefixmap required by ccfilter from the MaxMind GeoIP database. |
|
Invoke rwfilter to find flow records matching Snort signatures. |
|
Map a (textual) list of IP addresses to country. |
|
Generate a new flow file by substituting a non-routable IP address for the source and destination IP addresses in given input file. |
|
Read pipe (|) delimited text from the standard input, attempt to resolve the IP addresses in the specified column(s) to host names, and print result to the standard output. |
|
Generate a set of subfiles from the input. The subfiles can be limited by flow, byte, packet, or unique IP count, and the subfile may contain all the flows or only a sample of them. |
|
Generate a new flow file by changing the byte order of values in a given input file. |
|
Generate SiLK flow records from textual input; the input should be in a form similar to what rwcut generates. |
SiLK Packing System
The SiLK Packing System are daemon applications that collect flow data (IPFIX flows from yaf or NetFlow V5 PDUs from a router) and convert them into a more space efficient format, recording the packed records into service-specific binary flat files. Files are organized in a time-based directory heirarchy with files covering each hour at the leaves.
Installation and set up is described in the SiLK Installation Handbook (pdf).
The tools that make up the SiLK Packing System are:
Listen to devices which produce flow data (flow sources) and store it a incremental files in a flat directory. |
|
Watch a directory for files containing small numbers of SiLK flow records (incremental files) and append those records to hourly files stored in a directory tree. |
|
Read flow data from a socket or from a file and pack the flow records into hourly flat-files organized in a time-based directory structure. |
|
Read SiLK Flow records and look for "unusual" patterns that may indicate data file corruption. |
|
Accept files transferred from one or more rwsender processes and store them in a destination directory. Either rwsender or rwreceiver may act as the server with the other acting as the client. |
|
Watch an incoming directory for files, move the files into a processing directory, and transfer the files to one or more rwreceiver processes. Either rwsender or rwreceiver may act as the server with the other acting as the client. |
|
Configuration file for sensors and probes. |


