Escolar Documentos
Profissional Documentos
Cultura Documentos
Redes Overlay
Uma rede definida sobre outro conjunto de redes Uma rede overlay enderea os seus prprios ns Ligaes numa camada so segmentos de rede nas camadas inferiores
necessria a utilizao do
A A A
Conceito de overlay
Conceito de overlay
Redes de overlay so muito populares Akamai, VPNs - Virtual Private Networks, Napster, Gnutella, Kazaa, Bittorrent
Adhoc: Gnutella
Resumo
Overlays ad-hoc
Descoberta de recursos em redes P2P
o o o
Overlays regulares
CAN
Chord
Pastry
Alice escolhe um dos pares: Bob. O ficheiro copiado do PC de Bob para o porttil de Alice. Enquanto Alice extrai, outros utilizadores pode fazer o mesmo de Alice. Alice tanto um cliente como um servidor. Todos os pares so servidores = soluo escalvel!
7
2) Alice pergunta por pares com o Hey Jude 3) Alice pede ficheiro do Bob
Alice
10
Lder de grupo responsvel por indexar contedo em todos os pares nesse grupo.
Cada ficheiro tem um hash e um descritor
Cliente envia pergunta com palavras chave para o seu lder de grupo
Lder de grupo responde com correspondncias: o Para cada correspondncia: metadados, hash, endereo IP Se o lder do grupo encaminha a pergunta para outros
pedidos HTTP, que usam o hash como identificador, so enviados para os pares que possuem o ficheiro desejado
11
Desvantagens: necessrio conhecer um n de bootstrap Necessidade de definir se um n lder ou no Lderes de grupo podem ser sobrecarregados
12
protocolo de domnio pblico Cria uma rede overlay para partilha de ficheiros de uma foram totalmente distribuda Software executado apenas nos pares: hierarquia inexistente sem servidor central
13
Ideia: difundir o pedido de um ficheiro (e.g. a msica Hey Jude) Como procurar um ficheiro: Inunda (flooding) pergunta (QUERY) para os pares com um dado QID Pares reencaminham a pergunta at uma dada profundidade
o
Existe um TTL inicial aleatrio que garante perguntas annimas (download no o ) e evita ciclos
Eventualmente um par que tenha o ficheiro recebe o pedido Esse par envia de volta uma mensagem de sucesso (hit) para o remetente com o seu endereo de IP Remetente envia uma mensagem Get HTTP para o endereo IP Ficheiro enviado na resposta mensagem Get
Descoberta ineficiente
14
Um novo par Alice tem uma lista de outros pares para efectuar bootstrap Apenas alguns estaro activos Envia uma mensagem Join (chamada de Ping no Gnutella) para o primeiro par activo Mensagem Join inundada k vezes Todos os pares que recebam mensagens Ping respondem com uma mensagem Pong Alice escolhe quais os pares a quem se vai ligar para formar a rede overlay Devido s respostas a pesquisas e a outras perguntas que lhe chegam, mais pares podem ser conhecidos e a rede pode mudar Rede overlay voltil, mas cada par poder estar ligado a aproximadamente outros 10
join 15
Atomizao de contedos
Bittorrent Protocolo de distribuio de ficheiros peer-to-peer desenvolvido por Bram Cohen entre entre Abril e Julho de 2001. Permite distribuir contedos muito populares de uma forma escalvel e a custos reduzidos para o editor
pares participam no esforo de distribuio e so mais numerosos para os contedos mais populares
Bittorrent - princpio: divide-se o ficheiro em pequenos fragmentos, tipicamente MB (256KB) de tamanho pares: descarregam fragmentos em falta de outros pares carregam para outros pares os fragmentos disponveis.
17
Atomizao de contedos
Bittorrent para partilhar um ficheiro, necessrio criar um ficheiro .torrent, um pequeno ficheiro apontador" que contem: o nome do ficheiro, tamanho, e o resumos (hash) de cada bloco no ficheiro (que permite aos utilizadores terem a garantia que eles descarregam o contedo correcto) o endereo do servidor tracker, que coordena a distribuio do ficheiro, mantendo um registo dos utilizadores que esto a descarregar o ficheiro e onde o ficheiro e os seus fragmentos residem outros dados (como instrues para clientes) O tracker actualmente opcional O modo trackerless baseado em DHTs descentralizadas, e pode ser complementar ao tracker.
18
Atomizao de contedos
Bittorrent - protocolo: Para aumentar eficincia, o cliente bittorrent pede aos seus pares os fragmentos mais raros; i.e., os fragmentos que esto disponveis em menos pares, fazendo com que estes estejam disponveis em mais maquinas, evitando engarrafamentos estratgia rarest first (outras possiveis: randmon first, end game) Por vezes escolhido o par com a melhor ligao de rede para o fragmento pedido (outras estratgias possveis) dada melhor performance a quem coopera (estratgia tit for tat), uma propriedade conhecida como "leech (sanguessuga) resistance", visto desencorajar "leechers" a tentarem descarregar ficheiros sem carregarem nenhuns.
Evitasse bloqueios usando-se optimistic unchoking H ataques possveis: white washing, ...
logo que o cliente termina a importao do bloco, extrado um resumo (hash) para assegurar que o bloco est correcto
19
Overlays regulares
Objectivos:
acesso - ter a certeza que um dado item (ficheiro)
identificado sempre encontrado escala at centenas de milhares de ns acomoda entradas e abandonos rpidos de ns faz distribuio de recursos / balanceamento de carga de recursos localidade - acede aos recursos mais adequados (proximidade de rede)
20
armazenar em rede
Substrato P2P
TCP/IP
Internet
21
Abstraco: uma estrutura de dados estruturada por uma tabela hash distribuda - DHT:
insert(id, item);
item = query(id); (ou lookup(id);) Nota: item pode ser qualquer coisa: um objecto de dados,
Propostas:
CAN, Chord, Pastry, Tapestry, Plaxton, Kademlia, Skipnet,
22
Associar a cada n e item um id nico pertencente a um espao Cartesiano d-dimensional num dtoro Propriedades Tabela de encaminhamento de tamanho O(d) Garante que um ficheiro encontrado at um mximo de d*n1/d passos, onde n o nmero total de ns
23
Espao dividido pelos ns Todos os ns cobrem a totalidade de espao Cada n cobre a rea de um quadrado ou um rectngulo de rcio 1:2 ou 2:1 Exemplo:
N n1:(1, 2) primeiro n a
7 6 5 4 3 n1
2
1
0
0 1 2 3 4 5 6 7
24
7 6 5 4 3 n1 n2
2
1
0
0 1 2 3 4 5 6 7
25
7 6 5 4 3 n1 n2 n3
2
1
0
0 1 2 3 4 5 6 7
26
7 6 5 4 3 n1 n2 n3 n4 n5
2
1
0
0 1 2 3 4 5 6 7
27
Ns: n1:(1, 2); n2:(4,2); n3:(3, 5); n4:(5,5);n5:(6,6) Items: f1:(2,3); f2:(5,1); f3:(2,1); f4:(7,5);
7 6 5 4 3 n1 n3 n4 n5
f4
f1
n2 f3
2
1
0
0 1 2 3 4
f2 5 6 7
28
7 6 5 4 3 n1 n3 n4 n5
f4
f1
n2 f3
2
1
0
0 1 2 3 4
f2 5 6 7
29
Cada n conhece os seus vizinhos no espao ddimensional Encaminha a pergunta para o vizinho que est mais prximo da pergunta id Exemplo: suponha-se que n1 pergunta por f4 Pode contornar encaminhamento volta de algumas falhas
7 6 5 4 3 n1 n3 n4 n5
f4
f1
n2 f3
2
1
0
0 1 2 3 4
f2 5 6 7
30
CAN: Adeso de ns
I novo n
CAN: Adeso de ns
(x,y)
I
novo n
CAN: Adeso de ns
(x,y)
J
I novo n
3) I encaminha para (x,y), descobre n J
33
CAN: Adeso de ns
novo
34
CAN: Abandono de ns
N explicitamente entrega a sua zona e a base de dados associada (key, value) a um dos seus vizinhos Em caso de falha de rede isto tratado por um algoritmo de retoma Problema:
mecanismo de retoma no fornece mecanismo de regenerar
os dados
Soluo:
cada n tem um backup dos seus vizinhos
35
C E
Porque que um n no poderia simplesmente enviar pings a todos os outros para descobrir de quem estava mais prximo?
No escalvel
rede overlay!
O que fazer?
37
CAN: no incio
Escolher um conjunto de dispositivos bem conhecidos que funcionem como marcos Cada n calcula de uma forma distribuda o seu lote 1. Efectua um ping para cada marco 2. Latncia fraccionada em nveis 3. Ordena as distncias aos marcos por ordem crescente de RTT 4. Estes valores identificam o lote Ns no mesmo lote esto prximos uns dos outros Quando um novo n vai aderir escolhe um endereo tal que exista pelo menos um vizinho que esteja num lote prximo
Exemplo: Trs nveis 0-30ms: nvel 0 31-100ms: nvel 1 101-300ms: nvel 2 Trs marcos N j mede latncias de 10ms, 110ms, 40ms aos trs marcos. O lote do n j : (l1,l2,l3 : 021)
38
CAN: discusso
Vantagens: Com as DHTs a descoberta mais rpida que a inundao do Gnutella Mais distribudo que abordagem do Kazaa Foi dada alguma ateno para que a topologia virtual no fosse muito ineficiente quando comparada com a topologia da camada de suporte Desvantagens: Sobrecarga considervel nas adies e nos abandonos de ns
39
Associar a cada n e item um id nico num espao uni-dimensional 0..2m-1 Deciso chave no desenvolvimento
Desacoplar a correco da eficincia
Propriedades
Tabela de encaminhamento de tamanho O(log(N)),
58
15
44
20
35
32
41
Procura
lookup(37) 4
Encaminhar o pacote (ID, data) para o n responsvel por ID, usando os apontadores para sucessores
44
n=44
15
20
35
32
42
Operao de adeso
mensagem notify(B)
43
Operao de adeso
N com id=50 adere ao anel N 50 tem que conhecer pelo menos um n que j esteja no sistema suponhamos succ=nil que conhece pred=nil o n 15 50
succ=58 pred=35
succ=4 pred=44
4 58
15
44
20
35
32
44
Operao de adeso
succ=4 pred=44
4 58
join(50)
58
15
50
succ=58 pred=35
44
20
35
32
45
Operao de adeso
N 50: envia stabilize() ao n 58 N 58: actualiza o predecessor para 50 envia notify() de volta
4 58
stabilize() succ=58 pred=nil
15
50
succ=58 pred=35
44
20
35
32
46
N 44 envia stabilize() ao seu sucessor, n 58 N 58 responde com notify() N 44 actualiza o seu sucessor para 50
succ=58 pred=nil
succ=4 pred=50
58 8
stabilize()
15
50
succ=58 succ=50 pred=35
44
20
35
32
47
succ=4 pred=50
58 8
Stabilize()
15
50
succ=50 pred=35
44
20
35
32
48
pred=50
58 8
succ=58 pred=44
50
15
succ=50
44
20
35
32
49
0
112 20 96
digamos m=7
(80 + 26) mod 27 = 16
80 + 24
32
80 + 23 80 + 22 80 + 21 80 + 20
80
45
Obteno de robustez
Para melhorar robustez cada n mantm k (> 1) sucessores imediatos em vez de apenas um sucessor Na mensagem notify(), o n A pode enviar os seus k-1 sucessores ao seu predecessor B aps a recepo de uma mensagem notify(), B pode actualizar a sua lista de sucessores, ao concatenar a lista de sucessores recebida de A com o prprio A
51
Optimizaes CAN/Chord
Reduo de latncia
Escolher finger table que reduza o tempo esperado
para chegar ao destino Escolha como sucessor o n mais prximo do intervalo [N+2i-1,N+2i)
52
Para cada n, ficheiro, palavra chave aplicado um hash SHA-1 num espao numrico de 160 bits.
para o eMule, implementado um resumo MD4 (128 bits).
Cada n guarda informao acerca de ficheiros, palavras chave, etc, prximas de si. A proximidade entre dois objectos medida com o XOR bit a bit (interpretado como um inteiro) dos seus IDs. D(a, b) = a XOR b
53
Cada n tratado como uma folha numa rvore binria. Para um dado n:
inicia-se na raiz divide-se a rvore binria numa srie de
54
55
Cada n conhece at k ns das suas sub-rvores (se existir um n nessa sub-rvore): cada subrvore possui um k-bucket. Cada n mantm uma lista de 3-uplas (IP, Port, Node id), duplas (key, value) para troca de informao com outros.
56
Kademlia k-buckets
k-buckets: para cada 0 i < 160, cada n mantm uma lista de 3uplas (IP address, UDP port, Node ID) para ns com uma distncia entre 2i e 2i+1 em relao a si. Os k-buckets com i mais baixo intervalo 3-uplas i podem estar vazios ou no 0 [20, 21) (IP address,UDP port,Node ID) 0-1 ...... totalmente preenchidos (IP address,UDP port,Node ID) 0-k
[21, 22)
k-bucket
2 [22, 23) i [2i, 2i+1)
(IP address,UDP port,Node ID) 1-1 ...... (IP address,UDP port,Node ID) 1-k (IP address,UDP port,Node ID) 2-1 ...... (IP address,UDP port,Node ID) 2-k (IP address,UDP port,Node ID) i-1 ...... (IP address,UDP port,Node ID) i-k (IP address,UDP port,Node ID) 159-1 ...... (IP address,UDP port,Node ID) 159-k
57
Kademlia k-buckets
Cada k-bucket ordenado dos ns contactados mais tempo para os contactados mais recentemente. O valor k um parmetro escolhido de forma a que seja pouco provvel que os k ns falhem num perodo de 1 hora (e.g. k=20). O k-bucket vai sendo actualizado com o contacto com outros ns
58
Kademlia (pesquisa)
59
PING: para testar se outro n est online STORE: solicita que outro n guarde uma dupla (key, value) FIND_NODE: com um dado ID como argumento, so devolvidos as 3-uplas dos k ns mais prximos que so conhecidos pelo n a quem se fez a pergunta. FIND_VALUE: comporta-se como FIND_NODE, a menos que antes lhe tenha sido pedido o STORE dessa key, e ento devolvido o valor guardado.
60
Kademlia - procura
O procedimento mais importante para um n encontrar os k ns mais prximos ao ID de um dado n. Kademlia usa um algoritmo recursivo na procura de ns. Quem inquere, na procura comea por escolher ns do k-bucket no vazio mais prximo. O inquiridor envia em paralelo e assincronamente FIND_NODE para os ns que escolheu. um parmetro de concorrncia do sistema, como por exemplo 3.
61
Kademlia - procura
o inquiridor reenvia FIND_NODE para ns que passou a conhecer de RPCs anteriores. se uma ronda de FIND_NODE falhar na entrega de ns mais prximos do que aqueles j conhecidos, o inquiridor repete o processo reenviando FIND_NODE para todos os ns de entre os k mais prximos que ainda no foram inquiridos. a procura termina quando o inquiridor j perguntou e obteve resposta dos k ns mais prximos que conheceu.
62
Kademlia - armazenamento
Para guardar uma dupla (key,value), um participante procura os k ns mais prximos chave (key) e envia um RPC solicitando o armazenamento (STORE). Para alm do participante que solicita o armazenamento, adicionalmente cada n republica as duplas (key,value) para as manter armazenadas
caso contrrio, as duplas (key,value) expiram 24 horas
depois de publicadas
63
A rede Kademlia pode ter mais que uma tabela. No eMule a rede Kademlia tem duas tabelas:
Key words table Data index table
64
Hash(Wii)
Key Hash(Wii)
Hash()=>SHA-1,160bit
(I Love Wii.txt, 30, 1011001) (Wii tips and tricks.pdf, 375, 1110101)
Hash(tricks)
Key
Hash(tricks)
Value
(data name, data length, Hash(data)) (Wii tips and tricks.pdf, 375, 1110101) (Card trick.mpg, 65000, 1000100)
65
To Find: 1011001
1011001
66
Propriedades
Completamente descentralizada
Escalvel
Auto-organizada Resistente a falhas
Pesquisa eficiente
o o
67
Pastry - nodeID
Ns com nodeIDs adjacentes esto geograficamente distantes, sobre diferente controlo administrativo, etc Pressuposto: o nodeID uniforme no espao dos IDs
com base 2b
o
nodeids
69
A mensagem/pergunta tem uma chave numrica com o mesmo comprimento que os nodeIDs
A chave apresentada como uma sequncia
Encaminhamento: a mensagem encaminhada para o n com um nodeID que est numericamente mais prximo da chave
70
Msg com chave k encaminhada para o n existente com o nodeId mais prximo de k
Route(k)
Dada uma mensagem com chave k, um n A encaminha a mensagem para um n cujo ID est numericamente mais prximo de k do que todos os outros ns que A conhece
Cada n guarda informao de estado para efectuar esse encaminhamento
72
Estado de um n Pastry
NodeID 10233102 Todos os ns guardam estado com:
Um Leaf set L Uma tabela de
Leaf set
10233033 10233001
menor
maior
10233020 10233000
10233120 10233230
10233122 10233232
Tabela de encaminhamento
-0-2212102 0 10-0-31203 102-0-0230 1023-0-322 10233-0-01 0 1 1-1-301233 10-1-32102 102-1-1302 1023-1-000 1 -2-2301203 1-2-230203 2 102-2-2302 1023-2-120 10233-2-32 102331-2-0 2 -3-1203203 1-3-021022 10-3-23302 3 3
Vizinhos
13021022 02212102 10200230 22301203 11301233 31203203 31301233 33213321
73
d471f1...
d46a1c
d467c4... d462ba...
d4213f...
d13da3...
65a1fc... locate(d46a1c...)
74
Row 1
Row 2
Row 3
Cada n mantm tambm os endereos IPs dos ns com os nodeIds mais prximos, que esto imediatamente acima e abaixo (L/2 de cada). L = tipicamente 16 ou 32
garante robustez do routing permite implementar coordenao local especfica de cada aplicao
76
Passo 1: se k estiver no intervalo de nodeIDs do leaf set de A, encaminha para o n do leaf set cujo nodeID est mais prximo de k
Eg. k = 10233022 est no intervalo (10233000,10233232) encaminha para o n 10233021
A
Leaf set
10233033 10233001
NodeID 10233102
menor maior
10233021 10233000
10233120 10233230
10233122 10233232
Tabela de encaminhamento
-0-2212102 0 10-0-31203 102-0-0230 1023-0-322 10233-0-01 0 1 1-1-301233 10-1-32102 102-1-1302 1023-1-000 1 -2-2301203 1-2-230203 2 102-2-2302 1023-2-120 10233-2-32 102331-2-0 2 -3-1203203 1-3-021022 10-3-23302 3 3
Vizinhos
13021022 02212102 10200230 22301203 11301233 31203203 31301233 33213321
77
Passo 2: Usa-se a tabela de encaminhamento para enviar a mensagem a um n cujo ID partilhe um prefixo mais longo com k do que o node ID de A
Eg. k = 10223220 encaminhar para 10222302
A
Leaf set
10233033 10233001
NodeID 10233102
menor maior
10233021 10233000
10233120 10233230
10233122 10233232
Tabela de encaminhamento
-0-2212102 0 10-0-31203 102-0-0230 1023-0-322 10233-0-01 0 1 1-1-301233 10-1-32102 102-1-1302 1023-1-000 1 -2-2301203 1-2-230203 2 102-2-2302 1023-2-120 10233-2-32 102331-2-0 2 -3-1203203 1-3-021022 10-3-23302 3 3
Vizinhos
13021022 02212102 10200230 22301203 11301233 31203203 31301233 33213321
78
Passo 3: A mensagem encaminhada para o n do leaf set, ou outro conhecido, cujo ID tenha o mesmo prefixo partilhado mas numericamente mais prximo de k do que A
Eg. k = 10233320 encaminhar para 10233232
A
Leaf set
10233033 10233001
NodeID 10233102
menor maior
10233021 10233000
10233120 10233230
10233122 10233232
Tabela de encaminhamento
-0-2212102 0 10-0-31203 102-0-0230 1023-0-322 10233-0-01 0 1 1-1-301233 10-1-32102 102-1-1302 1023-1-000 1 -2-2301203 1-2-230203 2 102-2-2302 1023-2-120 10233-2-32 102331-2-0 2 -3-1203203 1-3-021022 10-3-23302 3 3
Vizinhos
13021022 02212102 10200230 22301203 11301233 31203203 31301233 33213321
79
80
O procedimento de encaminhamento converge sempre, visto que a cada passo escolhido um n que:
partilha um prefixo mais longo partilha o mesmo prefixo, mas est numericamente
mais prximo
Performance do encaminhamento
o nmero esperado de passos no encaminhamento
Encaminhamento - Performance
Pastry Integridade
Integridade da rede overlay: garantida a no ser que existam L/2 falhas simultneas em ns com nodeIds adjacentes em um dos lados reparao do leaf set (impaciente):
necessrio para garantir integridade os membros do leaf set trocam mensagem keep-alive pede o leaf set do vizinho existente mais afastado do
83
na mesma linha da tabela se procedimento anterior falha, obtm tabelas de linhas acima
84
Pastry adeso de ns
d46a1c
d13da3
A construo do leaf set do novo n baseia-se no leaf set do n com nodeId mais prximo
65a1fc
85
Pastry - Discusso
em conta a situao do n
86
Algoritmos
Chord, Symphony CAN Plaxton Tapestry, Pastry
Kademlia
87
Concluses
Tabelas distribudas de hash so um conceito chave de redes overlay escalveis e robustas CAN: O(d) estados, distncia O(d*n1/d) Chord: O(log n) estados, distncia O(log n) Pastry: O(log16 n) estados, distncia O(log16 n) Simplicidade a chave Servios construdos no topo de tabelas distribudas de hash.
armazenamento persistente: OpenDHT, Oceanstore, Past
(Pastry) armazenamento de ficheiros p2p: i3 (chord), Bittorrent balanceamento de carga em sistemas de ficheiros, ou para processamento distribudo em grelha (grids) Pesquisas distribudas multicast: CAN, Tapestry
88
89
PAST API
Insert armazena uma rplica do ficheiro em k ns distintos Lookup obtm o ficheiro de um n existente, prximo na rede e que contenha uma cpia Reclaim liberta o espao associado ao ficheiro
90
fileId
Insert fileId
91
k=4
fileId
Insert fileId
Invariante de armazenamento: Rplicas do ficheiro so armazenadas em k ns com nodeIds prximos de fileId (k est limitado pelo tamanho do leaf set)
92
C
Lookup fileId
k replicas
Ficheiro localizado em log16 N passos (esperado)
Usualmente localiza a replica mais prxima da rede do cliente C! Porqu?
93