IPv6 Poetry

IPv6 Poetry - Draft RFC

Status: Draft | Last Updated: March 2025

Status of this Memo

This document specifies an experimental protocol for the Internet community, and requests discussion and suggestions for improvements. Distribution of this memo is unlimited.

Abstract

This document proposes a method for mapping IPv6 addresses to memorable poetic phrases and back, using a standardized wordlist and an integrated checksum mechanism. The primary goal is to create human-friendly representations of IPv6 addresses that can be more easily remembered and communicated than traditional hexadecimal notation, while maintaining a deterministic bidirectional mapping.

1. Introduction

This document proposes a method for representing IPv6 addresses in a human-friendly format using sequences of common words. The goal is to create an alternate representation that is:

  • Easy to communicate verbally
  • More memorable than hexadecimal representation
  • Less prone to transcription errors
  • Bidirectionally convertible with standard IPv6 notation

2. Background

IPv6 addresses present unique challenges for human usability due to their length and complexity. While RFC 5952 defines a canonical text representation for IPv6 addresses, even its compressed form remains challenging for verbal communication, memorization, and manual transcription.

IPv4 addresses (e.g., 192.168.1.1) are relatively simple to communicate verbally, but IPv6 addresses (e.g., 2001:0db8:85a3:0000:0000:8a2e:0370:7334) are significantly more complex, even in their compressed form (2001:db8:85a3::8a2e:370:7334).

3. Poetic Addressing Scheme

The IPv6 Poetry scheme converts a 128-bit IPv6 address to a large integer, appends an 8-bit checksum, and then splits this 136-bit number into chunks based on wordlist size. Each chunk is mapped to a word from the wordlist to create a sequence of words that uniquely represents the IPv6 address.

3.1 Wordlist Requirements

The wordlist used for mapping must meet the following criteria:

  • Contains approximately 8,000 unique words (specifically the EFF large wordlist with 7,783 words)
  • Words are common, easy to pronounce, and unlikely to be confused
  • Words are reasonably short (3-8 characters) for efficient communication
  • Primarily consists of common English words
  • Standardized across implementations to ensure consistent results

3.2 Wordlist Selection

The reference wordlist is based on:

  • The EFF large Diceware wordlist, which is designed for memorability and distinction
  • Contains words that are common, familiar, and easy to spell
  • Words chosen to avoid offensive terms and minimize confusion
  • All words normalized to lowercase

The reference implementation uses this established wordlist which provides a good balance between entropy per word (approximately 12.9 bits) and memorability.

3.3 Conversion Process

3.3.1 IPv6 to Poetry

  1. Normalize the IPv6 address according to RFC 5952
  2. Convert the address to a 128-bit integer
  3. Calculate an 8-bit checksum (sum of bytes mod 256) of the 128-bit integer
  4. Append the checksum to create a 136-bit integer
  5. Calculate the number of bits per word based on wordlist size: log₂(wordlist_size)
  6. Split the 136-bit integer into chunks of this size
  7. Map each chunk to a word from the wordlist
  8. Join the words with spaces to form the poetic phrase

3.3.2 Poetry to IPv6

  1. Split the phrase into words
  2. Calculate bits per word based on wordlist size
  3. For each word, look up its index in the wordlist
  4. Convert each index to its binary representation
  5. Combine these values to reconstruct the 136-bit integer
  6. Extract the 8-bit checksum and the 128-bit IPv6 address
  7. Verify the checksum against the calculated checksum of the IPv6 address
  8. Convert the 128-bit integer to an IPv6 address
  9. Normalize the resulting address according to RFC 5952

4. Checksum Mechanism

To improve resilience against transcription errors, an 8-bit checksum is calculated and integrated into the 136-bit integer representation. This checksum affects all words in the phrase but is particularly reflected in the first word, providing detection of common errors:

  • Transposed words or segments
  • Missing or added words
  • Words substituted with incorrect ones

The checksum algorithm is simple enough to be implemented across all platforms:

def append_checksum(ipv6_int):
    """
    Computes an 8-bit checksum for a 128-bit integer and appends it
    to create a 136-bit integer.
    """
    # Extract bytes from the 128-bit integer
    bytes_list = [(ipv6_int >> (i * 8)) & 0xFF for i in range(16)]
    
    # Calculate the checksum (sum of bytes modulo 256)
    checksum = sum(bytes_list) % 256
    
    # Append the checksum to the integer
    result = (ipv6_int << 8) | checksum
    
    return result

5. Examples

IPv6 Address: 2001:db8::1
Poetic Phrase: bakery zero zero zero zero zero zero zero duct angling one two

IPv6 Address: 2001:4860:4860::8888
Poetic Phrase: elevator elixir zero zero zero zero zero cyclist acts coauthor one two

IPv6 Address: 2620:0:2d0:200::7
Poetic Phrase: diner zero zero zero zero zero barbed hydration two zero darling two

IPv6 Address: fe80::1
Poetic Phrase: attractor zero zero zero zero zero zero zero zero zero lifter fifteen

IPv6 Address: ::1 (localhost)
Poetic Phrase: antitoxic zero zero zero zero zero zero zero zero zero zero zero

6. Implementation Considerations

6.1 Wordlist Distribution

For interoperability, implementations must use the same wordlist. The reference wordlist is the EFF large Diceware wordlist containing 7,783 words. This wordlist is available at the project GitHub repository and can be bundled with implementations or fetched from a well-known location.

6.2 Bits per Word

With the EFF large wordlist, each word encodes approximately 12.9 bits of information (log₂(7783) ≈ 12.9). In practice, a 136-bit number (128-bit IPv6 address plus 8-bit checksum) requires approximately 11 words to encode, though this can vary slightly depending on implementation details.

6.3 Localization

While the primary wordlist is in English, implementations may provide wordlists in other languages. When communicating across language boundaries, the standard English wordlist should be used as the common reference.

7. Security Considerations

The poetic representation is intended for human communication and should not be used as a security mechanism. The mapping between IPv6 addresses and poetic phrases is deterministic and public, providing no security through obscurity.

8. References

  • RFC 5952 - A Recommendation for IPv6 Address Text Representation
  • RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax
  • Diceware - https://diceware.dmuth.org