-
Notifications
You must be signed in to change notification settings - Fork 5
/
notes
138 lines (107 loc) · 2.38 KB
/
notes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
dns
dig my dns server, name of thing
get ip
return closest address
scamper...
dns requests will come across the board
each dnsserver will be running on a the same host as teh httpserver
so each ec2 host in host list will have dns server
so we can distribute things
big cidr country lookup
active measurements into cidr notation
somehow need to specify down
===================== DERP OK ITS ON PAPER
# SQL
latency table
authority ip server latency timestamp
active server table
server latency timestamp
main loop
get dns request
is_message
translate message
message = translate(domain)
add to queue
else
lookup
# Workers
lookup worker
""" takes an ip and returns best server
if in ip has authority in table
return server ip
else
get ip location
find closest server
set closest server to authority with high latency
send trace request to active servers
return closest server
dispatch
loop
if message queue not empty
pop message
dispatch to worker
ping worker
send ping message to server
wait for message or timeout
update active server table
trace worker
is trace request
call scamper -i ip
save latency
send trace response
is trace response
save latency
update routing table authority
# Messaging system
63 character limit!
header_char = {
message types
trace - ask servers to trace an ip address, get latencies
request
{tq}{ip}
response
{ts}{ip}:{latency}
ping - ping a server, see if its connected and alive
request
{ping}{id}
response
{pong}{id}
update - update master routing table
request
{uq}{ip}:{server}:{latency}
response
{us}{ip}:{server}:{latency}
ex:
dig @server_ip {tq192.168.1.1
dig @server_ip {tr192.168.1.1:14.1231
dig @server_ip {ping219381008
dig @server_ip {pong219381008
dig @server_ip {uq192.168.1.1:US-EAST:14.1231
dig @server_ip {us192.168.1.1:US-EAST:14.1231
=====================
files
scamper
trace(ip) -> latency
ping_worker
ping(server)
trace_worker
dispatch_worker
dnsserver
iplocation
get_closest(ip) -> server key
dao
upsert latency
upsert active
delete active
messenger
send(args)
receive(domain)
is_message(domain)
classes:
message
ping_request
ping_response
update_requset
trace_request
trace_response
!!! LEFT OFF SQL IMPLEMENTATION DATABASE STUFF