< draft-eastlake-fnv-04.txt   draft-eastlake-fnv-05.txt >
Network Working Group Glenn Fowler Network Working Group Glenn Fowler
INTERNET-DRAFT AT&T Labs Research INTERNET-DRAFT AT&T Labs Research
Intended Status: Informational Landon Curt Noll Intended Status: Informational Landon Curt Noll
Cisco Systems Cisco Systems
Kiem-Phong Vo Kiem-Phong Vo
AT&T Labs Research AT&T Labs Research
Donald Eastlake Donald Eastlake
Huawei Technologies Huawei Technologies
Expires: March 23, 2013 September 24, 2012 Expires: October 5, 2013 April 6, 2013
The FNV Non-Cryptographic Hash Algorithm The FNV Non-Cryptographic Hash Algorithm
<draft-eastlake-fnv-04.txt> <draft-eastlake-fnv-05.txt>
Abstract Abstract
FNV (Fowler/Noll/Vo) is a fast, non-cryptographic hash algorithm with FNV (Fowler/Noll/Vo) is a fast, non-cryptographic hash algorithm with
good dispersion. The purpose of this document is to make information good dispersion. The purpose of this document is to make information
on FNV and open source code performing FNV conveniently available to on FNV and open source code performing FNV conveniently available to
the Internet community. the Internet community.
Status of This Memo Status of This Memo
skipping to change at page 2, line 37 skipping to change at page 2, line 37
7. IANA Considerations....................................11 7. IANA Considerations....................................11
8. Acknowledgements.......................................11 8. Acknowledgements.......................................11
9. References.............................................12 9. References.............................................12
9.1 Normative References..................................12 9.1 Normative References..................................12
9.2 Informative References................................12 9.2 Informative References................................12
Appendix A: Work Comparison with SHA-1....................13 Appendix A: Work Comparison with SHA-1....................13
Appendix B: Previous IETF Reference to FNV................14 Appendix B: Previous IETF Reference to FNV................14
Appendix C: A Few Test Vectors............................15 Appendix C: A Few Test Vectors............................15
Appendix Z: Change Summary................................16 Appendix Z: Change Summary................................16
Author's Address..........................................18
INTERNET-DRAFT FNV INTERNET-DRAFT FNV
1. Introduction 1. Introduction
The FNV hash algorithm is based on an idea sent as reviewer comments The FNV hash algorithm is based on an idea sent as reviewer comments
to the [IEEE] POSIX P1003.2 committee by Glenn Fowler and Phong Vo in to the [IEEE] POSIX P1003.2 committee by Glenn Fowler and Phong Vo in
1991. In a subsequent ballot round Landon Curt Noll suggested an 1991. In a subsequent ballot round Landon Curt Noll suggested an
improvement on their algorithm. Some people tried this hash and found improvement on their algorithm. Some people tried this hash and found
that it worked rather well. In an EMail message to Landon, they named that it worked rather well. In an EMail message to Landon, they named
it the "Fowler/Noll/Vo" or FNV hash. [FNV] it the "Fowler/Noll/Vo" or FNV hash. [FNV]
FNV hashes are designed to be fast while maintaining a low collision FNV hashes are designed to be fast while maintaining a low collision
rate. The high dispersion of the FNV hashes makes them well suited rate. The high dispersion of the FNV hashes makes them well suited
for hashing nearly identical strings such as URLs, hostnames, for hashing nearly identical strings such as URLs, hostnames,
filenames, text, IP addresses, etc. Their speed allows one to quickly filenames, text, IP addresses, etc. Their speed allows one to quickly
hash lots of data while maintaining a reasonably low collision rate. hash lots of data while maintaining a reasonably low collision rate.
However, they are generally not suitable for cryptographic use. (See However, they are generally not suitable for cryptographic use. (See
Section 6.1.) Section 6.1.)
The FNV hash is widely used, for example in DNS servers, database The FNV hash is widely used, for example in DNS servers, the Twitter
indexing hashes, major web search / indexing engines, netnews history service, database indexing hashes, major web search / indexing
file Message-ID lookup functions, anti-spam filters, a spellchecker engines, netnews history file Message-ID lookup functions, anti-spam
programmed in Ada 95, flatassembler's open source x86 assembler - filters, a spellchecker programmed in Ada 95, flatassembler's open
user-defined symbol hashtree, non-cryptographic file fingerprints, source x86 assembler - user-defined symbol hashtree, non-
computing Unique IDs in DASM (DTN Applications for Symbian Mobile- cryptographic file fingerprints, computing Unique IDs in DASM (DTN
phones), Microsoft's hash_map implementation for VC++ 2005, the Applications for Symbian Mobile-phones), Microsoft's hash_map
realpath cache in PHP 5.x (php-5.2.3/TSRM/tsrm_virtual_cwd.c), and implementation for VC++ 2005, the realpath cache in PHP 5.x
many other uses. (php-5.2.3/TSRM/tsrm_virtual_cwd.c), and many other uses.
A study has recommended FNV in connetion with the IPv6 Flow Label
field [IPv6flow].
FNV hash algorithms and source code have been released into the FNV hash algorithms and source code have been released into the
public domain. The authors of the FNV algorithm took deliberate steps public domain. The authors of the FNV algorithm took deliberate steps
to disclose the algorithm in a public forum soon after it was to disclose the algorithm in a public forum soon after it was
invented. More than a year passed after this public disclosure and invented. More than a year passed after this public disclosure and
the authors deliberately took no steps to patent the FNV algorithm. the authors deliberately took no steps to patent the FNV algorithm.
Therefore, it is safe to say that the FNV authors have no patent Therefore, it is safe to say that the FNV authors have no patent
claims on the FNV algorithm as published. claims on the FNV algorithm as published.
If you use an FNV function in an application, you are kindly If you use an FNV function in an application, you are kindly
skipping to change at page 12, line 26 skipping to change at page 12, line 26
has been replaced by newer versions with slight modifications, has been replaced by newer versions with slight modifications,
but the 1968 version remains definitive for the Internet. but the 1968 version remains definitive for the Internet.
9.2 Informative References 9.2 Informative References
[FNV] - FNV web site: [FNV] - FNV web site:
http://www.isthe.com/chongo/tech/comp/fnv/index.html http://www.isthe.com/chongo/tech/comp/fnv/index.html
[IEEE] - http://www.ieee.org [IEEE] - http://www.ieee.org
[IPv6flow] - https://researchspace.auckland.ac.nz/bitstream/handle/
2292/13240/flowhashRep.pdf
[RFC3174] - Eastlake 3rd, D. and P. Jones, "US Secure Hash Algorithm [RFC3174] - Eastlake 3rd, D. and P. Jones, "US Secure Hash Algorithm
1 (SHA1)", RFC 3174, September 2001. 1 (SHA1)", RFC 3174, September 2001.
[RFC6194] - Polk, T., Chen, L., Turner, S., and P. Hoffman, "Security [RFC6194] - Polk, T., Chen, L., Turner, S., and P. Hoffman, "Security
Considerations for the SHA-0 and SHA-1 Message-Digest Considerations for the SHA-0 and SHA-1 Message-Digest
Algorithms", RFC 6194, March 2011. Algorithms", RFC 6194, March 2011.
[RFC6234] - Eastlake 3rd, D. and T. Hansen, "US Secure Hash [RFC6234] - Eastlake 3rd, D. and T. Hansen, "US Secure Hash
Algorithms (SHA and SHA-based HMAC and HKDF)", RFC 6234, May Algorithms (SHA and SHA-based HMAC and HKDF)", RFC 6234, May
2011. 2011.
skipping to change at page 18, line 5 skipping to change at page 17, line 11
ASCII standard. ASCII standard.
2. Minor addition to Section 6, point 3. 2. Minor addition to Section 6, point 3.
INTERNET-DRAFT FNV INTERNET-DRAFT FNV
3. Update dates and version number. 3. Update dates and version number.
4. Minor editing changes. 4. Minor editing changes.
From -04 to -05
1. Add Twitter as a use example and IPv6 flow hash study reference.
2. Update dates and version number.
INTERNET-DRAFT FNV INTERNET-DRAFT FNV
Author's Address Author's Address
Glenn Fowler Glenn Fowler
AT&T Labs Research AT&T Labs Research
180 Park Avenue 180 Park Avenue
Florham Park, NJ 07932 USA Florham Park, NJ 07932 USA
Email: gsf@research.att.com Email: gsf@research.att.com
skipping to change at page 19, line 9 skipping to change at page 19, line 9
155 Beaver Street 155 Beaver Street
Milford, MA 01757 USA Milford, MA 01757 USA
Telephone: +1-508-333-2270 Telephone: +1-508-333-2270
EMail: d3e3e3@gmail.com EMail: d3e3e3@gmail.com
INTERNET-DRAFT FNV INTERNET-DRAFT FNV
Copyright, Disclaimer, and Additional IPR Provisions Copyright, Disclaimer, and Additional IPR Provisions
Copyright (c) 2012 IETF Trust and the persons identified as the Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
 End of changes. 8 change blocks. 
12 lines changed or deleted 27 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/