Como funcionam as CDN (redes de distribuição de conteúdo)?

37

Tomando Akamai como CDN. Pelo que entendi, quando um cliente solicita uma página, a solicitação vai para o servidor central da Akamai, que, dependendo da localização do cliente, pega um servidor de borda Akamai e as solicitações subsequentes do cliente vão diretamente para esse servidor de borda. Minha pergunta é:

Quando um cliente solicita um site (por nome), uma vez que o DNS resolve o nome para o endereço IP do servidor central da Akamai e o passa para o cliente, o cliente mantém esse endereço IP e, em seguida, como as solicitações subsequentes podem ir diretamente para o endereço IP dos servidores de borda Akamai?

Ou é necessário que, quando a CDN estiver sendo usada, a própria resolução DNS seja feita pelo servidor da CDN?

Biggies como Google, Amazon e Facebook têm seus próprios servidores CDN ou contam com provedores de CDN de terceiros como a Akamai? Digamos Google e Yahoo! ambos usam CDNs da Akamai e, em seguida, o conteúdo do Yahoo! e o Google reside no mesmo servidor? Isso não representa um possível problema de segurança?

p2pnode
fonte

Respostas:

27

Você não hospeda simplesmente o site inteiro com a CDN, apenas o seu conteúdo .

Acabei de perceber que respondi a uma pergunta semelhante há algum tempo: O que o akamaihd.net faz?

Fluxo de solicitação de dadosImagem de WikiMedia

Portanto, seu site faz referência http://akamai/myfile.ext. Isso solicitará a myfile.extpartir de akamai. akamaipode enviar um redirecionamento HTTP para o servidor de conteúdo real.

Agora, quando a última etapa for armazenada em cache, ótimo, todas as solicitações futuras serão direcionadas para o servidor de conteúdo mais próximo.

Como isso funciona?

Vamos assumir este site:

<html>
  <body>
    <img src="http://cdn/oliver.png" />
  </body>
</html>

Solicito este site no meu próprio servidor da web. O .htmlarquivo não está hospedado com cdn. Nem é o DNS do meu servidor da web.

Pedido inicial

Então, meu navegador pegou o arquivo HTML e agora o analisa. Ele encontra a imagem referenciada e observa que está localizada em http://cdn/oliver.png. Ele solicita esse arquivo.

Para fazer isso, ele precisa encontrar o endereço IP de cdn. No nosso exemplo, esse endereço IP é 10.10.10.10.

Com esse endereço IP, ele pode se conectar ao cdnservidor e solicitar /oliver.png.

Localização geográfica

Agora cdnpercebe, " esse cara é da Alemanha! ". Então, em vez de me enviar minha foto incrível que eu queria, ele me envia um redirecionamento HTTP dizendo:

/oliver.png não está aqui. Está em10.10.33.33/oliver.png

Então, meu navegador perguntará 10.10.33.33(o que é mais próximo de mim) a imagem.

A sério?

Não estou dizendo que é assim que TODOS os CDNs funcionam, mas seria uma abordagem.

Você também pode implementar um daemon DNS que retorne resultados diferentes para uma pesquisa de nome, dependendo do local de quem enviou a consulta.
Mas duvido que isso seja feito na prática. Mas talvez eu não consiga imaginar como configurá-lo adequadamente. Veja a resposta do fluffy para saber como isso pode funcionar.

Quem dirige CDNs?

A maioria dos players globais possui sua própria rede de entrega de conteúdo (de certa forma, eu diria). Alguns provedores apenas transferem certos serviços para CDNs maiores (como a Microsoft faz com downloads do MSDN). E isso pode de alguma forma tocar no seu segundo assunto.

Considere isso, no MSDN a Microsoft oferece downloads de produtos. Esses downloads são fornecidos pela Akamai. Se você pode determinar o URL desse download, basta baixar o produto sem nunca entrar em contato com a Microsoft.

Isso é um problema de segurança? Na verdade, não, porque o que está sendo baixado ainda está protegido (por uma chave de produto).

Mas e quanto a outros dados?

Se seus dados são relevantes para a segurança, não são materiais da CDN. Se você não deseja que algo esteja disponível o mais amplamente possível, não o coloque em uma CDN.

Der Hochstapler
fonte
Digamos que o site seja um site / arquivo.txt . Digamos que o Akamai DNS esteja sendo usado. Então, a primeira solicitação do cliente vai para algum site ou a primeira solicitação vai para a Akamai (porque, de alguma forma, o DNS usado pelo cliente sabe que o Akamai CDN está em uso)?
P2pnode 5/05
E talvez eu não entenda o redirecionamento HTTP e o que eles podem alcançar, então minha pergunta ainda é: como o cliente sabe usar o endereço IP dos servidores de borda da Akamai para que os servidores centrais da Akamai não precisem entrar em cena? tudo ..
p2pnode 5/05
@ p2pnode: eu expandi a resposta um pouco. Espero que inclua o que você está pensando.
Der Hochstapler
11
Não há um impacto significativo nisso? Em vez de toda a transferência de dados acontecendo ao longo de um único fluxo TCP, múltiplos fluxos estão sendo usados, mais sobrecarga do aperto de mão, etc ..
Akash
@ Akash: Normalmente, você não usaria uma CDN para tudo , mas apenas arquivos grandes e individuais. Portanto, na prática, isso não é um problema.
Der Hochstapler
11

Uma abordagem bastante comum da CDN é usar o que é conhecido como " anycast ". Como isso funciona é que seus servidores distribuídos são colocados com DNSs que respondem com esse servidor como destino; por exemplo, você pode ter três servidores em diferentes instalações de hospedagem e os respectivos DNSs alegam que o endereço IP é o endereço canônico do seu servidor (chame, digamos content.example.com). Cada um dos DNSs está configurado para ter o mesmo endereço IP global e, em seguida, as instalações de cada servidor usam atualizações de BGP para garantir que a rota para o servidor mais próximo seja vencida - portanto, quando você faz uma pesquisa de nome content.example.com, o mais rápido / mais próximo / O DNS mais disponível responde à solicitação com seu servidor HTTP.

Dessa forma, não são necessários truques GeoIP, e você sempre recebe conteúdo do servidor que for mais rápido para você - o que pode ou não ter algo a ver com sua localização física, devido à natureza heterogênea da Internet.

Entendo que a Akamai, pelo menos parcialmente, funciona dessa maneira.

fofo
fonte
5

Também estão disponíveis CDNs do tipo Origem Pull.

O Amazon Cloudfront pode usar essa técnica.

Você configura um CNAME como media.example.com que aponta para o nome do servidor atribuído e deixa todo o seu conteúdo no servidor. Para imagens e conteúdo que você deseja entregar pela CDN, use media.example.com no URL. A solicitação vai para a rede de servidores e, se o conteúdo não estiver disponível, os servidores receberão o conteúdo do servidor. Uma vez no sistema, o conteúdo é distribuído para os farms de servidores mais próximos de onde a demanda existe e permanece lá para o TTL atribuído. Seu servidor não vê mais tráfego no conteúdo em cache até que o TTL expire e o Cloudfront precise atualizá-lo.

Fiasco Labs
fonte
1

Akamai não funciona dessa maneira. CDNs diferentes funcionam de maneira diferente, mas a Akamai especificamente não faz nenhumcast para seus servidores da web.

Quando um usuário em NY deseja www.acme.com, o servidor de nomes do acme.com é redirecionado ("delegado") para um servidor de nomes da Akamai. O servidor de nomes da Akamai vê onde a máquina que está fazendo a pergunta está localizada (com base em seu endereço IP) e retorna o endereço IP do servidor Akamai mais próximo / melhor para servir www.acme.com.

igorlord
fonte
Como funciona? O servidor de nomes da Akamai recebe solicitação do usuário diretamente ou do servidor DNS do usuário que delega para o servidor de nomes da Akamai? Portanto, ele será geolocalizado de acordo com a localização do servidor DNS, não a do usuário?
Odiszapc
0

Um ótimo resumo de como o CDN da Akamai funciona pode ser encontrado aqui

Em resumo:

  • Os servidores CDN têm um registro CNAME que aponta para os servidores DNS da Akamai.
  • Portanto, a primeira solicitação que o navegador de um cliente faz para um servidor CDN faz com que o DNS seja consultado no servidor DNS da Akamai, que responde com o endereço IP de um servidor Akamai mais próximo do usuário (chamado "Servidores de Borda")
  • Esses servidores de borda podem exibir elementos estáticos de um cache local, se tiver sido solicitado recentemente por outro usuário, e nem precisar voltar ao servidor para obter uma cópia do ativo.
  • Elementos ausentes ou páginas não capturáveis ​​são roteados pela rede Akamai para outro servidor de borda próximo ao host. Esse servidor de borda faz as solicitações reais ao site host e as repassa pela rede para o servidor de borda original e, a partir daí, elas são retornadas ao usuário final.
  • Como os servidores de borda estão se comunicando internamente usando os protocolos proprietários da Akamai e roteando em torno de gargalos, o tráfego pode fluir muito mais rapidamente do que pela Internet pública.

e, como mencionado na postagem do blog acima, algumas grandes empresas resolvem o DNS usando seus próprios servidores, o que pode negar alguns dos benefícios do uso de uma CDN.

Brad Parks
fonte
-2

CDN funciona em Anycast DNS. O Anycast dns funciona no IP do Anycast. IP Anycast: um ip atribuído em vários servidores. Quando o usuário solicita o resolvedor de DNS, essa consulta é tratada pelo servidor mais próximo e fornece dados do servidor com menos latência.

trilho de abhimanyu
fonte
De que maneira isso melhora as respostas existentes, muito mais completas?
21315 Chenmunka