{"id":21512524,"url":"https://github.com/isc-projects/dnsgen","last_synced_at":"2025-08-21T11:32:49.745Z","repository":{"id":45337816,"uuid":"151267422","full_name":"isc-projects/dnsgen","owner":"isc-projects","description":"DNS packet generator","archived":false,"fork":false,"pushed_at":"2024-07-30T16:01:10.000Z","size":74,"stargazers_count":41,"open_issues_count":0,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-12-06T21:42:13.139Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/isc-projects.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-02T14:22:22.000Z","updated_at":"2024-09-20T02:52:53.000Z","dependencies_parsed_at":"2022-07-22T21:02:22.366Z","dependency_job_id":null,"html_url":"https://github.com/isc-projects/dnsgen","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isc-projects%2Fdnsgen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isc-projects%2Fdnsgen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isc-projects%2Fdnsgen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isc-projects%2Fdnsgen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isc-projects","download_url":"https://codeload.github.com/isc-projects/dnsgen/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230511479,"owners_count":18237657,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-23T22:38:03.317Z","updated_at":"2024-12-19T23:13:27.981Z","avatar_url":"https://github.com/isc-projects.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"ISC DNS Packet Generator\n========================\n\ndnsgen\n------\n\n`dnsgen` is somewhat like Nominum's `dnsperf` utility, and indeed\nshares many of the same command line parameters.\n\nUnlike `dnsperf`, it uses `AF_PACKET` raw sockets and therefore only\nruns under Linux.  The use of raw sockets allows for the use of a\nfar larger range of source ports and higher performance than using\n\"normal\" UDP sockets.  The data file is loaded completely into\nmemory on start up so that disk I/O does not affect measurements.\nFor optimal performance `dnsgen` supports a raw input file mode where\nthe data file contains raw pre-compiled DNS queries.\n\nTo reduce CPU load `dnsgen` does not attempt to correlate received\npackets with those it has transmitted.  It simply counts those packets\nthat arrive back on the network interface.  Is is therefore best used\non a network interface that is directly connected to the server under\ntest and not shared with any other services.\n\nIn normal operation the packet-per second value reported is the peak\nrolling average of the received packet rate observed during the run.\n\nTo attempt to find this value `dnsgen` starts sending packets at the\nspecified sending rate (`-r` option) and then measures the rate at\nwhich packets are received.  The sending rate is then continually\nadjusted to be the midpoint between the maximum observed rate so\nfar and the received rate, plus the specified \"increment\" rate (`-R`\noption).\n\nEventually a steady state should be achieved when the difference\nbetween the received rate and the transmitted rate is equal to the\nincrement rate, and where that increment represents a small overhead\nin lost packets.\n\nIn the alternative \"ramp\" mode (`-M` option) packets are transmitted\nat the specified starting rate with the rate increasing thereafter\nby the specified increment every 0.1s without regard to the inbound\nreceived rate.\n\nThe \"batch\" value (`-b`) controls how many packets are transmitted at\na time via the `sendmmsg` system call.  It is important to tune this\nto find the optimal value for your configuration.\n\ndnsecho\n-------\n\nUses `AF_PACKET` mode to receive raw (UDP) packets and immediately\nreturn them from whence they came.\n\nKnown Limitations\n-----------------\n- IPv4 only\n- dnsecho: ICMP Port unreachable messages generated by kernel\n  might be sent along with the echoed packet\n\nRaw File Format\n===============\n\nThe raw file format looks exactly like a stream of TCP queries,\ni.e. a repeated sequence of a two byte packet length (in network\norder) followed by the query in wire format.\n\nEDNS OPT RRs are not included within the file, but may be optionally\nadded \"in memory\" via the `QueryFile` API once the raw file has\nbeen loaded.\n\nThe `dnscvt` utility should be used to convert `dnsperf` format input\nfiles into the raw format.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisc-projects%2Fdnsgen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisc-projects%2Fdnsgen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisc-projects%2Fdnsgen/lists"}