Introduction
Introduction Statistics Contact Development Disclaimer Help
<- Back
hbb - hyperbitblock
===================
(Right now this is only a concept / work in progress.)
Hyperbitblock provides a simple service: You can ask for information
about the reputation of an IP-address. Hyberbitblock will answer with the
status 1 or 0 that tells if the IP is considered malicious(1) or
friendly(0).
While there are similar services who provide information about the
reputation of an ip, Hyperbitblock it's specialty is being hyper-fast.
This speed is achieved by having the information stored in RAM paired
with the ability to directly access this information on a low-level.
This process does not perform a search.
"Imagine a librarian who exactly knows the position of
every book in the library by heart without even thinking."
How knowledge is stored in RAM?
-------------------------------
0.0.0.1 --> 00000000 00000000 00000000 00000001 --> 1
0.0.0.2 --> 00000000 00000000 00000000 00000010 --> 2
0.0.0.3 --> 00000000 00000000 00000000 00000011 --> 3
[...]
0.16.72.171 --> 00000000 00001000 01001000 10101011 --> 1067179
18.119.9.193 --> 00010010 01110111 00001001 11000001 --> 309791169
218.92.0.208 --> 11011010 01011100 00000000 11010000 --> 3663462608
[...]
255.255.255.253 --> 11111111 11111111 11111111 11111101 --> 4294967293
255.255.255.254 --> 11111111 11111111 11111111 11111110 --> 4294967294
255.255.255.255 --> 11111111 11111111 11111111 11111111 --> 4294967295
^ ^
| |
user queries info is stored at
an ip address this exact index in array
What knowledge do we store?
---------------------------
We store one byte per IP-Adress in RAM. That leaves is with very little
space for information. We have 8 bits of space:
1. [ ] | <-- is Blocked
2. [ ] |
| <-- confidence score: 0%, 25%, 50% or 100%
3. [ ] |
4. [ ] |
|
5. [ ] | <-- reason why blocked: 3 bits, so we can use an
| item of a catalogue of 8
6. [ ] |
7. [ ] |
| <-- not used yet
8. [ ] |
What is the advantage of this structure?
----------------------------------------
In theory we have 4.3 billion IPv4 addresses. Therefore, if we store one
byte for each, the program needs to allocate ~4GB of RAM.
For example in C we can easily hold this information in RAM by using an
array.
With minimal calculation we directly get the array-index from the address
from a request for information.
Therefore, I assume, this will be much more efficient than similar
solutions that use a database in order to optain the information.
What is the disadvantage of this structure?
-------------------------------------------
In order to have the IP-address match the array index, we have to allocate
a lot of bytes for useless ip.
We willingly take that loss in RAM-efficiency, in order to get our
information hyper-fast.
You are viewing proxied material from kroovy.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.