Opened 9 years ago

Closed 5 years ago

#539 closed task (wontfix)

Hash-based name compression

Reported by: vorner Owned by: UnAssigned
Priority: low Milestone: Remaining BIND10 tickets
Component: Unclassified Version: bind10-old
Keywords: Cc:
CVSS Scoring: Parent Tickets:
Sensitive: no Defect Severity: N/A
Sub-Project: DNS Feature Depending on Ticket:
Estimated Difficulty: 20.0 Add Hours to Ticket: 0
Total Hours: 0 Internal?: no


Name compression is expensive operation (isc::dns::MessageRenderer::writeName with it's inlined functions takes 16% of our runtime (this includes NameCompare::operator() and NameCompare::nextPosition). The isc::dns::OutputBuffer::operator[] is used a lot inside these functions, which increases the cost of it even more).

There's idea to store positions of all already written names and suffixes of them to a hash table. When a new name is to be written, the hash table is queried first to see if it is already there. If yes, the address is taken and written. If not, the first label is written and noted into the hash table, then it is repeated with next label.

It would be nice to get the hashes precomputed form the names. They can be provided by the datasource for example, or whenever the hash is needed, it is cached in the Name and if two names are compared and one does not have the cached hashes, while the other does, the ones for common parts are copied.

This is a largish task, maybe we can put it off after we try the simpler ones.


Change History (9)

comment:1 Changed 9 years ago by vorner

  • Estimated Difficulty changed from 0.0 to 20

comment:2 Changed 9 years ago by stephen

  • Milestone changed from A-Team-Sprint-20110223 to A-Team-Task-Backlog

comment:3 Changed 9 years ago by stephen

  • Milestone A-Team-Task-Backlog deleted

Milestone A-Team-Task-Backlog deleted

comment:4 Changed 8 years ago by shane

  • Defect Severity set to N/A
  • Milestone set to New Tasks
  • Owner set to vorner
  • Status changed from new to assigned
  • Sub-Project set to DNS

Like ticket #538, does this one still make sense?

comment:5 Changed 8 years ago by shane

  • Milestone New Tasks deleted

comment:6 Changed 8 years ago by vorner

  • Owner changed from vorner to shane


This is partially handled by #1603. At least it does use the hash table.

The new stuff here would be caching the hash values inside the Name class, which I'm not sure we want or if it would give us much/any benefit.

comment:7 Changed 7 years ago by shane

  • Owner changed from shane to UnAssigned

comment:8 Changed 6 years ago by tomek

  • Milestone set to Remaining BIND10 tickets

comment:9 Changed 5 years ago by tomek

  • Resolution set to wontfix
  • Status changed from assigned to closed
  • Version set to old-bind10

This issue is related to bind10 code that is no longer part of Kea.

If you are interested in BIND10/Bundy framework or its DNS components,
please check

Closing ticket.

Note: See TracTickets for help on using tickets.