Você está na página 1de 93

Redes Digitais III

Management and Application Layer


File Transfer architectures and overlays Network management Web infrastructures

Security in Computer Networks Multimedia Networking

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

encaminhamento das camadas inferiores

O mecanismo de overlay designado tunneling


2

Conceito de overlay

Ns de uma rede overlay

Conceito de overlay

Redes de overlay so muito populares Akamai, VPNs - Virtual Private Networks, Napster, Gnutella, Kazaa, Bittorrent

Tipos de redes overlay

Dois tipos de redes overlay


Apenas hosts: redes Peer to Peer (P2P)
o

Exemplo: Gnutella, Napster Content Distribution Networks (CDNs) Exemplo: Akamai

Apenas ns Gateway: Overlays infraestruturados


o

Estrutura dos ns no overlay


Regular: Chord, Pastry

Adhoc: Gnutella

Resumo

Overlays ad-hoc
Descoberta de recursos em redes P2P
o o o

Centralizada: Napter Semi-descentralizada: Kazza Descentralizada: Gnutella

Atomizao de contedos no Bittorrent

Overlays regulares
CAN

Chord
Pastry

Partilha de ficheiros P2P


Exemplo genrico: Alice corre uma aplicao P2P no seu porttil Liga-se pontualmente Internet; obtm um novo IP para cada nova ligao Pede Hey Jude Aplicao mostra outros pares que tm uma cpia de Hey Jude.

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

P2P: redes com directrio centralizado


Design original do Napster 1) Quando um par se liga, informa o servidor central:
Endereo IP contedo
Bob Directrio centralizado 1 pares 1 1 2 1 3

2) Alice pergunta por pares com o Hey Jude 3) Alice pede ficheiro do Bob

os contedos e a sua transferncia descentralizada, mas a localizao dos mesmos centralizada

Alice

P2P: problemas com o directrio centralizado


Vantagens: Simplicidade Facilidade de implementar um bom motor de pesquisa (qualidade da pesquisa) Descarregar de contedo escalvel! Desvantagens: Ponto nico de falha Problemas de engarrafamento / performance na pesquisa -> falta de escalabilidade! Violao de Copyright

P2P: redes com directrio semi-descentralizado


KaZaA Cada par que se liga ou se torna um lder de grupo (supernode) ou associado a um lder depende de vrios factores como tamanho do grupo, capacidade do par ou da sua ligao Ligaes entre pares e o seu lder de grupo entre alguns pares lideres de grupo

Par comum Par lder de grupo Relaes de vizinhana na rede de topo

10

P2P: redes com directrio semi-descentralizado


Pesquisa:

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

lideres, eles respondem com correspondncias

Cliente selecciona pares para descarregar ficheiros


o

pedidos HTTP, que usam o hash como identificador, so enviados para os pares que possuem o ficheiro desejado

11

P2P: redes com directrio semi-descentralizado


Vantagens: No existe um directrio central Servio de procura descentralizado Mais difcil de desligar!

Desvantagens: necessrio conhecer um n de bootstrap Necessidade de definir se um n lder ou no Lderes de grupo podem ser sobrecarregados

12

P2P: redes com directrio descentralizado


Gnutella

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

P2P: redes com directrio descentralizado


Gnutella - Pesquisa:

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

P2P: redes com directrio descentralizado


Gnutella - Bootstrap:

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

P2P: redes com directrio descentralizado


Vantagens: Pares tm responsabilidades similares: no existem lderes de grupo Muito descentralizado Robusto Nenhum dos pares mantm informao do directrio Algoritmo de construo da rede pouco complexo Desvantagens: Pouco escalvel: trfego de pergunta bastante elevado Descoberta pouco eficiente
TTL - Profundidade de

pesquisa: pode no encontrar um contedo que at possa existir

N de bootstrap! Difcil manuteno de uma rede coerente e fivel.


16

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

representa at 20% trfego banda larga e 50% do trfego de upload

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)

Ideia: substrato P2P genrico

20

Redes overlay regular - arquitectura


notificao de eventos

armazenar em rede

camada de aplicao P2P


rede overlay DHT auto-organizada

Substrato P2P

TCP/IP

Internet

21

Redes overlay regular

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,

documento, ficheiro, apontador para um ficheiro

Propostas:
CAN, Chord, Pastry, Tapestry, Plaxton, Kademlia, Skipnet,

Viceroy, Symphony, Koorde, Apocrypha, Land, ORDI,

22

Rede overlay regular CAN


Content Addressable Network

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

Exemplo CAN: Espao a duas dimenses

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

aderir cobre a totalidade do espao

2
1

0
0 1 2 3 4 5 6 7

24

Exemplo CAN: Espao a duas dimenses

N n2:(4, 2) adere espao dividido entre n1 e n2

7 6 5 4 3 n1 n2

2
1

0
0 1 2 3 4 5 6 7

25

Exemplo CAN: Espao a duas dimenses

N n3:(3, 5) adere espao dividido entre n1 e n3

7 6 5 4 3 n1 n2 n3

2
1

0
0 1 2 3 4 5 6 7

26

Exemplo CAN: Espao a duas dimenses

Ns n4:(5, 5) e n5:(6,6) aderem

7 6 5 4 3 n1 n2 n3 n4 n5

2
1

0
0 1 2 3 4 5 6 7

27

Exemplo CAN: Espao a duas dimenses

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

Exemplo CAN: Espao a duas dimenses

Cada item armazenado pelo n que possui o seu mapeamento no espao

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

CAN: Exemplo de uma Pergunta

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

1) Descobrir algum n I que j esteja na CAN


31

CAN: Adeso de ns

(x,y)

I
novo n

2) Escolher um ponto aleatrio no espao


32

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

4) parte-se a zona J ao meio o novo n ir possuir metade

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

Relacionar a topologia virtual com a rede inferior


rede overlay rede camada inferior

C E

3 5 4 Mensagem de D>A 4>1>3>1>5>2>5>1

D Mensagem de D>A D>C>B>A

So possveis grandes ineficincias

Escolher bons caminhos virtuais

Porque que um n no poderia simplesmente enviar pings a todos os outros para descobrir de quem estava mais prximo?
No escalvel

Porque no usar a infraestrutura de routing da camada inferior?


No se consegue fazer isto facilmente. Isto uma

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

Rede overlay regular - Chord

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)),

onde N o nmero total de ns Garante que um ficheiro encontrado em O(log(N)) passos


40

Exemplo de mapeamento de ns a identificadores


N 8 mapeia [5,8] N 15 mapeia [9,15] N 20 mapeia [16, 20] N 4 mapeia [59, 4]

58

15

Cada ns mantm um apontador para o seu sucessor e predecessor

44

20

35

32

41

Procura

Cada n matem o seu sucessor


58

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

Cada n A periodicamente envia uma mensagem stabilize() ao seu sucessor B


Aps a recepo de uma mensagem stabilize(), n B
devolve o seu predecessor B=pred(B) a A ao enviar uma

mensagem notify(B)

Aps a recepo de notify(B) de B,


se B est entre A e B, A actualiza o seu sucessor para B caso contrrio, A no muda nada

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

N 50: envia join(50) ao n 15 N 44: devolve n 58 N 50 actualiza o seu sucessor para 58


succ=nil succ=58 pred=nil

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

succ=4 pred=50 pred=44

4 58
stabilize() succ=58 pred=nil

15
50

succ=58 pred=35

44

20

35

32
46

Operao de adeso (conto)

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

Operao de adeso (conto)

N 44 envia stabilize() ao seu novo sucessor, n 50 N 50 envia o seu predecessor ao n 44

succ=4 pred=50

58 8

succ=58 pred=44 pred=nil

Stabilize()

15

50
succ=50 pred=35

44

20

35

32
48

Operao de adeso (conto)

E est concluda a operao de adeso!

pred=50

58 8

succ=58 pred=44

50

15

succ=50

44

20

35

32
49

Obteno de eficincia: finger tables


Finger Table no n 80 i 0 1 2 3 4 5 6 ft[i] 96 96 96 96 96 112 20
80 + 25

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

a ia entrada no par com id n o primeiro par com id >= (n 2i ) mod 2 m


50

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

Rede overlay - Kademlia

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

rvore binria na Kademlia

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

subrvores, sucessivamente mais pequenas que no contm o n.

54

rvore binria na Kademlia

55

rvore binria na Kademlia

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

159 [2159, 2160)

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

Kademlia Protocolo (RPCs)


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

Kademlia em sistemas P2P


A rede Kademlia pode ter mais que uma tabela. No eMule a rede Kademlia tem duas tabelas:
Key words table Data index table

64

Kademlia em sistemas P2P

Key words table:

To Find: Wii tips and tricks.pdf Key words: Wii, tricks

Key words table

Hash(Wii)

Key Hash(Wii)

Value (data name, data length, Hash(data))

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

Kademlia em sistemas P2P

Data index table:

To Find: 1011001

Data index table


Key 1011001 Value

1011001

(IP, UDP Port, node ID)

(218.164.185.90, 3347, 1011001)


(125.230.122.183, 3475, 1011011)

66

Rede overlay regular - Pastry

Pastry uma rede P2P para encaminhamento e localizao de objectos


baseada em hash consistente

Propriedades
Completamente descentralizada

Escalvel
Auto-organizada Resistente a falhas

Pesquisa eficiente
o o

saltos de encaminhamento esperados < log2bN heursticas de localidade da rede

67

Pastry - nodeID

nodeID: cada n tem um identificador numrico nico (128 bit)


atribudo aleatoriamente
o

Ns com nodeIDs adjacentes esto geograficamente distantes, sobre diferente controlo administrativo, etc Pressuposto: o nodeID uniforme no espao dos IDs

Apresentado como uma sequncia de dgitos

com base 2b
o

b um parmetro de configurao (e.g. 4)


68

Pastry distribuio de ns e objectos


espao de ids circular de 128 bit
2128 - 1

nodeIDs (uniforme aleatria)


0

objIds (uniforme aleatria)


objid

nodeids

69

Pastry Procura (lookup) de objectos

A mensagem/pergunta tem uma chave numrica com o mesmo comprimento que os nodeIDs
A chave apresentada como uma sequncia

de dgitos com base 2b

Encaminhamento: a mensagem encaminhada para o n com um nodeID que est numericamente mais prximo da chave

70

Pastry Procura (lookup) de objectos


2128 - 1 0

Msg com chave k encaminhada para o n existente com o nodeId mais prximo de k

Route(k)

Problema: no vivel conhecer todos os ns


71

Pastry Encaminhamento (procedimento)

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

encaminhamento Um conjunto de vizinhos M

Vizinhos
13021022 02212102 10200230 22301203 11301233 31203203 31301233 33213321

73

Pastry Encaminhamento (exemplo simplista)

d471f1...

d46a1c

d467c4... d462ba...
d4213f...

d13da3...

log16 N passos (b=4)

65a1fc... locate(d46a1c...)

74

Pastry tabela de encaminhamento


Outro exemplo com 2b=16
Row 0
0 x 6 0 x 6 5 0 x 6 5 a 0 x 1 x 6 1 x 6 5 1 x 2 x 6 2 x 6 5 2 x 6 5 a 2 x 3 x 6 3 x 6 5 3 x 6 5 a 3 x 4 x 6 4 x 6 5 4 x 6 5 a 4 x 6 5 5 x 6 5 a 5 x 5 x 6 6 x 6 5 6 x 6 5 a 6 x 7 x 6 7 x 6 5 7 x 6 5 a 7 x 8 x 6 8 x 6 5 8 x 6 5 a 8 x 9 x 6 9 x 6 5 9 x 6 5 a 9 x 6 5 a a x a x 6 a x b x 6 b x 6 5 b x 6 5 a b x c x 6 c x 6 5 c x 6 5 a c x d x 6 d x 6 5 d x 6 5 a d x e x 6 e x 6 5 e x 6 5 a e x f x 6 f x 6 5 f x 6 5 a f x

Row 1

Row 2

Row 3

Qual o nmero mximo de linhas?


75

Pastry consistncia por Leaf Sets

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

Encaminhamento (pelo leaf set)

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

Se k no estiver no intervalo do leaf set, passa-se ao passo 2

Vizinhos
13021022 02212102 10200230 22301203 11301233 31203203 31301233 33213321

77

Encaminhamento (pela tabela)

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

Se a entrada na tabela de encaminhamento estiver vazia, passa-se ao passo 3

Vizinhos
13021022 02212102 10200230 22301203 11301233 31203203 31301233 33213321

78

Encaminhamento (se tudo o resto falhar)

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

Se tal n no existir, A ento o n destino

Vizinhos
13021022 02212102 10200230 22301203 11301233 31203203 31301233 33213321

79

Pastry Encaminhamento (pseudo cdigo)


if (destination is within range of our leaf set) forward to numerically closest member else let l = length of shared prefix let d = value of l-th digit in Ds address if (Rld exists) forward to Rld else forward to a known node that (a) shares at least as long a prefix (b) is numerically closer than this node

80

Pastry Encaminhamento (eficcia e


eficincia)

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

de log2bN Pressuposto: tabelas de encaminhamento precisas, sem falhas recentes


durante a recuperao de falhas:
o

O(N) no pior caso, mdia muito melhor


81

Encaminhamento - Performance

Nmero mdio de saltos de encaminhamento versus nmero de ns Pastry

b = 4, |L| = 16, |M| =32 e 200,000 procuras.


82

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

leaf set, para actualizar o seu.

83

Pastry Falha e abandono de ns

reparao da tabela de encaminhamento


feita de uma forma relaxada
espera at ser preciso usar o n em falha ou se efectue

a manuteno da tabela obtm a tabelas dos pares conhecidos


o o

na mesma linha da tabela se procedimento anterior falha, obtm tabelas de linhas acima

abandono ou falha tm tratamento idntico


boa opo

84

Pastry adeso de ns

A tabela de encaminhamento no n construda medida que a mensagem propagada


Na adeso escolhem-se os ns mais prximos na construo da tabela de encaminhamento
addnode(d46a1c) d471f1 d467c4 d462ba d4213f

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

Pastry: os parmetros tornam-no flexvel


b o parmetro mais importante e que

determina a potencialidade do sistema


o

Compromisso entre eficincia de encaminhamento (log2bN) e tamanho de tabela de encaminhamento (log2bN2b)

Cada n escolhe o seu prprio |L| e |M| tendo

em conta a situao do n

86

Geometria versus algoritmos


Geometria
Anel Hipercubo rvore Hbrido = rvore + anel XOR d(id1, id2) = id1 XOR id2

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

PAST: armazenamento e distribuio de ficheiros cooperativamente


suportado por cima do Pastry forte persistncia alta disponibilidade escalabilidade custos reduzidos (backup desnecessrio) uso eficiente dos recursos

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

PAST: armazenamento de ficheiros

fileId

Insert fileId

91

PAST: armazenamento de ficheiros

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

PAST: obteno de ficheiros

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