ipfix-generator is a Spring Boot application for generating IPFIX traffic for demos, lab environments, and integration testing. It provides a browser-based UI for creating generator jobs and a small REST API for listing jobs and their history.
- Web UI for creating and reviewing IPFIX generation jobs
- Supports both
L2IPandIPv4 5-tuplegenerator templates - REST endpoints for listing jobs and retrieving per-job history
- Hosted Swagger UI for interactive REST API documentation
- Configurable target host, port, packets-per-second, and packet counts
- Container image published to GitHub Container Registry
- Helm chart for Kubernetes-based deployments
- Start the container:
docker run -d \
--name ipfix-generator \
-p 8080:8080 \
ghcr.io/jfwenisch/ipfix-generator:latest-
Open
http://localhost:8080in your browser. -
Create a generator job from the home page by setting:
- destination host
- destination port
- packets per second
- total packets
-
Review active jobs under
http://localhost:8080/jobs. -
Inspect job history in the UI or through
GET /api/jobs/{id}/history.
helm repo add jfwenisch https://charts.wenisch.tech
helm repo update
helm install ipfix-generator jfwenisch/ipfix-generator -n ipfix-generator --create-namespacehelm install ipfix-generator ./chart -n ipfix-generator --create-namespacehelm upgrade ipfix-generator ./chart -n ipfix-generatorChart-specific configuration examples are documented in chart/README.md.
GET /renders the landing page and job creation formGET /jobsrenders the jobs overview pageGET /jobs/{id}renders the job detail view
GET /api/jobsreturns all known generator jobsGET /api/jobs/{id}returns one generator jobGET /api/jobs/{id}/historyreturns the history of one jobPOST /api/jobscreates a new generator job from a JSON request bodytemplatesupportsL2IPandIPV4_FIVE_TUPLE, defaulting toL2IPwhen omittedPOST /api/jobs/{id}/stopstops a running or continuous generator jobGET /v3/api-docsexposes the OpenAPI documentGET /swagger-ui/index.htmlserves the interactive Swagger UI
The application keeps job state in memory, so a restart clears the current job list.
Example create request:
{
"destHost": "127.0.0.1",
"destPort": "4739",
"pps": "1",
"totalPackets": "10",
"template": "IPV4_FIVE_TUPLE"
}- Java 21
- Maven 3.9+
- Docker
- Helm 3.x
mvn -B -f src/pom.xml test
mvn -B -f src/pom.xml packagemvn -B -f src/pom.xml spring-boot:rundocker build -t ghcr.io/jfwenisch/ipfix-generator:local .
docker run --rm -p 8080:8080 ghcr.io/jfwenisch/ipfix-generator:localThis project is licensed under the GNU GPL v3. See LICENSE for details.
Contributions are welcome. Fork the repository, make your changes in a feature branch, and open a pull request with a clear description of the change.
This project is influenced by jFlowLib, which provides a Java library to parse and generate sFlow and IPFIX data.


