librorrente.

C ++ BitTorrent Library
Baixe Agora

librorrente. Classificação e resumo

Propaganda

  • Rating:
  • Nome do editor:
  • Rasterbar Software
  • Sistemas operacionais:
  • Windows XP / Vista / 7
  • Tamanho do arquivo:
  • 980 KB

librorrente. Tag


librorrente. Descrição

Um recurso completo C ++ BitTorrent Implementation com foco na eficiência e escalabilidade O libtorrent é um recurso completa de implementação de BitTorrent C ++ com foco na eficiência e escalabilidade. Ele é executado em dispositivos embarcados, bem como desktops. Possui uma interface de biblioteca bem documentada que é fácil de usar. Ele vem com um simples cliente BitTorrent, demonstrando o uso da biblioteca. Os principais objetivos do libptorrent são: * ser eficiente da CPU * Para ser eficiente de memória * Para ser muito fácil de usar Recursos O librorrente está sob desenvolvimento ativo. É um projeto em andamento. Seu estado atual suporta e inclui os seguintes recursos: Extensões * Interface de plugin para implementar extensões de bittorrent personalizadas sem ter que modificar o librorrente * Suporta torrents sem rastreamento (usando o protocolo Mainline Kademlia DHT) com algumas extensões DHT. BEP 5. * Suporta o protocolo de extensão BitTorrent. Veja extensões. BEP 10. * Suporta o protocolo de transferência de metadados uTorrent BEP 9 (i.e. Links de ímã). * Suporta o protocolo de intercâmbio de peer uTorrent (PEX). * Suporta descoberta local dos pares (multicastes para os pares na mesma rede local) * Suporte de extensão multitracker (suporta bep estrito 12 e a interpretação do uTorrent). * arranhões de rastreador * Suporta extensão LT_TRACKERS, para trocar rastreadores entre os pares * Semeamento HTTP, conforme especificado no BEP 17 e BEP 19. * Suporta o protocolo UDP-Tracker. (BEP 15). * Suporta a extensão No_Peer_ID = 1 que facilitará os rastreadores de carga. * Suporta o parâmetro compacto = 1 Tracker. * Super semeadura / semeadura inicial (BEP 16). * Torrents privados (BEP 27). * Suporte para IPv6, incluindo BEP 7 e BEP 24. * Suporte para torrentes de hash de merkle. Isso torna o tamanho da escala de arquivos torrent bem com o tamanho do conteúdo. Gerenciamento de Disco * Usa um thread de E / S de disco separado para não ter o disco bloquear a interação de rede ou cliente. (veja tópicos). * Suporta arquivos> 2 Gigabytes. * Suporte de currículo rápido, uma maneira de se livrar da verificação de peça dispendiosa no início de uma torrente retomada. Salva o estado de armazenamento, o estado de peça_picker, bem como todos os pares locais em um arquivo de currículo separado. * Tem um cache de leitura e gravação ajustável para melhorar o rendimento de disco. * enfileiros torrents para verificação de arquivo, em vez de verificar todos eles em paralelo. * Não tem quaisquer necessidades na ordem de peça em uma torrente que é retomada. Isso significa que pode retomar um torrent baixado por qualquer cliente. * Suporta arquivos esparsos e alocação de arquivos compact (onde peças são mantidas consolidadas no disco) * Modo de semente, onde os arquivos no disco são considerados completos, e cada hash de cada peça é verificado pela primeira vez que é solicitado. Rede * Ajusta o comprimento da fila de solicitação dependendo da taxa de download. * serve vários torrents em uma única porta e em um único encadeamento * Peça escolhendo no nível de bloco (em oposição ao nível de peça). Isso significa que pode baixar partes da mesma peça de diferentes pares. Também preferirá baixar peças inteiras de pares individuais se a velocidade de download for alta o suficiente daquele parete específico. * Suporta proxies HTTP e autenticação básica de proxy * Suporta respostas com rastreamento gzipped * Pode limitar o upload e baixar o uso de largura de banda e o número máximo de pares não consumidos * Possibilidade de limitar o número de conexões. * Atrasos têm mensagens se não houver outro tráfego de saída para o par, e não enviar mensagens para colegas que já tem a peça. Isso economiza largura de banda. * Download seletivo. A capacidade de selecionar quais partes de um torrent você deseja baixar. * Filtro IP para não permitir endereços IP e faixas IP de conectar e estar conectado. * Suporte NAT-PMP e UPnP (mapeamento automático de portas em roteadores que o suportam) * Implementa slots de upload automáticos, para otimizar a taxa de download sem espalhar a capacidade de upload muito fina. O número de slots de upload é ajustado com base na capacidade de download dos pares para trabalhar mesmo para conexões que são ordens de magnitude mais rápidas que outras. Características destacadas: Cache de disco. Todo o disco I / O no libtorrent é feito de forma assíncrona para o tópico da rede, pelo thread do disco IO. Quando um bloco é lido, o thread do disco IO lê todos os blocos subseqüentes dessa peça no cache de leitura, assumindo que o par solicitando o bloco também solicitará mais blocos da mesma peça. Isso diminui o número de syscalls para ler dados. Também diminui o atraso de procurar. Da mesma forma, para solicitações de gravação, blocos são armazenados em cache e lavados ao disco, uma vez que uma peça completa é concluída ou a peça é a menor atualizada quando mais espaço de cache é necessário. O cache aloca dinamicamente o espaço entre o cache de gravação e leitura. O cache de gravação é estritamente priorizado sobre o cache de leitura. Os blocos de cache que são usados, estão bloqueados em memória física para evitar que ele seja paginado para o disco. Permitir que o cache de disco seja paginado para o disco significa que seria extremamente ineficiente para lavá-lo, já que teria que ser lido de volta para a memória física apenas para ser lavado novamente para o disco novamente. Para conservar a memória e as chamadas do sistema, as operações de arquivo IOVEC são usadas para descartar vários blocos de cache em uma única chamada. Em sistemas de baixa memória, o cache de disco pode ser desativado completamente ou definido como limite menor, para economizar memória. O algoritmo de cache de disco é configurável entre 'lru' e 'maior contíguo'. O maior algoritmo contíguo é o padrão e libera o maior bloco contíguo de buffers, em vez de lavar todos os blocos pertencentes à peça que foi escrito para menos recentemente. Subsistema de disco de alto desempenho Em algumas circunstâncias, o cache de disco pode não ser suficiente para fornecer desempenho máximo. Um desses exemplo é a semeadura de alto desempenho, para um grande número de pares, sobre um link rápido. Nesse caso, a quantidade de RAM pode simplesmente não ser suficiente para cache as leituras de disco. Quando não há RAM suficiente para cache as leituras de disco, a taxa de transferência de disco normalmente se degradaria a funcionar tão mal quanto sem cache, com a maioria do tempo gasto aguardando a cabeça do disco para procurar. Para resolver esse problema, o libptorrent classifica as solicitações de leitura por seu deslocamento físico no disco. Eles são processados por ter a cabeça de leitura do disco varrer e para trás sobre a unidade. Isso torna o libtorrente muito adequado para semeadura de grande escala, alta taxa de transferência. Essas parcelas ilustram o deslocamento de disco físico para leituras ao longo do tempo. O enredo esquerdo é de uma corrida onde a operação de disco re-encomenda é desligada e o righ é quando está ligado. O direito tem uma forma de onda senoidal relativamente suave, enquanto a esquerda é mais aleatória e envolve muito mais vasos para frente e para trás sobre o disco. As consultas de deslocamento de disco físico verdadeiras são suportadas apenas em kernels mais recentes do Linux, Mac OS X e Windows 2000 e para cima. Em CPUs com pequenos caches L2, a capacidade de cópia pode ser operações caras. É importante continuar copiando um mínimo em tais máquinas. Isso se aplica principalmente a sistemas incorporados. Para minimizar o número de vezes recebidos dados é copiado, o buffer de recebimento para dados de carga útil é recebido diretamente em um buffer de disco alinhado pela página. Se a conexão for criptografada, o buffer é descriptografado no local. O buffer é então movido para o cache de disco sem ser copiado. Uma vez que todos os blocos para uma peça foram recebidos, ou o cache precisa ser lavado, todos os blocos são passados diretamente para o WriteV () para lavá-los em um único syscall. Quando a semeadura e o upload em geral, a cópia desnecessária é evitada por blocos de cache em buffers alinhados, que são copiados uma vez para o buffer de envio do par. O buffer de envio de peer não é garantido para ser alinhado, mesmo que seja a maior parte do tempo. O buffer de envio é então criptografado com a chave específica do pares e acorrentado ao IOVEC para o envio. Isso significa que há uma cópia do espaço de usuário para permitir que solicitações de pares não alinhadas e criptografia específica por pares. Isso é ilustrado pela seguinte figura: Picker de peça O selecionador da peça é um componente central em uma implementação BitTorrent. O selecionador da peça no libptorrent é otimizado para encontrar rapidamente as peças mais raras. Ele mantém uma lista de todas as peças disponíveis classificadas por raridade e peças com a mesma raridade, embaralhadas. O primeiro modo mais raro é o modo de selecionador de peça dominante. Outros modos são suportados também e usados por pares em situações específicas. O selecionador permite combinar a disponibilidade de uma peça com uma prioridade. Juntos, eles determinam a ordem de classificação da lista de peças. Peças com prioridade 0 nunca serão escolhidas, o que é usado para o recurso de download seletivo. A fim de ter apenas peças parcialmente concluídas, os pares têm uma afinidade para pegar blocos das mesmas peças que outros pares na mesma categoria de velocidade. A categoria de velocidade é uma categorização grossa de pares com base na sua taxa de download. Isso faz com que os colegas lentos escolha os blocos da mesma peça e colegas rápidas escolhem da mesma peça e, portanto, diminuindo a probabilidade de pares lentos que bloqueiam a conclusão das peças. O selecionador também pode ser definido para baixar peças em ordem seqüencial. Merkle Hash Tree Torrents Merkle Hash Tree Torrents é uma extensão que permite que um arquivo torrent contenha apenas o hash raiz da árvore de hash formando os hashes de peça. O principal benefício desse recurso é que, independentemente de quantas peças há em um torrent, o arquivo .torrent será sempre do mesmo tamanho. Ele só crescerá com o número de arquivos (desde que ainda precisa conter os nomes dos arquivos). Com torrents regulares, os clientes precisam solicitar vários blocos para peças, normalmente de diferentes pares, antes que os dados possam ser verificados contra a peça hash. Quanto maiores as peças, maior será necessário para baixar uma peça completa e verificá-la. Antes que a peça seja verificada, não pode ser compartilhada com o enxame, o que significa que os tamanhos de peça maiores, os dados de resposta mais lentos têm quando é baixado por pares. Desde a média, os dados devem se sentar, esperar, em buffers de clientes antes de serem verificados e podem ser carregados novamente. Outro problema com tamanhos de grande porte é que é mais difícil para um cliente identificar o pares malicioso ou buggy quando uma peça falhar, e levará mais tempo para voltar a baixá-lo e tirar mais tentativas antes que a peça seja bem-sucedida quanto as peças são maiores. O tamanho da peça em torrents regulares é uma tradeff entre o tamanho do próprio arquivo .torrent e o tamanho da peça. Muitas vezes, para arquivos que são 4 GB, o tamanho da peça é 2 ou 4 MB, apenas para evitar fazer o arquivo .torrent muito grande. Merkle Torrents resolve esses problemas removendo a compensação entre tamanho de torrente e tamanho de pedaço. Com Merkle Torrents, o tamanho da peça pode ser o tamanho mínimo do bloco (16 KB), que permite que os pares verifique todos os blocos de dados recebidos de pares, imediatamente. Isso dá um tempo mínimo de retorno e remove completamente o problema de identificar os pares maliciosos. O hash root é construído por hashing todo o par de hashes peças, até que todos colapsam até a raiz. Armazenamento de arquivos customizável A implementação de armazenamento da libtorrent é personalizável. Isso significa que um cliente BitTorrent de propósito especial pode substituir a maneira padrão de armazenar arquivos no disco. Ao implementar um cache de BitTorrent, não importa como os dados são armazenados no disco, desde que ele possa ser recuperado e semeado. Nesse caso, uma nova classe de armazenamento pode ser implementada (herdando da classe Storage_Interface) que evita a etapa desnecessária de slots de mapeamento em arquivos e compensações. O armazenamento pode ignorar os limites do arquivo e apenas armazenar toda a torrent em um único arquivo (que acabará sendo todos os arquivos concatenados). A principal vantagem disso, além de um ligeiro ganho de desempenho da CPU, é que todas as operações de arquivo seria a página (e setor) alinhadas. Isso permite que a E / S sem energia eficiente, e possa levar a um cache de leitura mais eficiente (usando o cache de disco integrado em vez de confiar no cache de disco do sistema operacional). A interface de armazenamento suporta sistemas operacionais onde você pode pedir regiões esparsas (como o Windows e o Solaris). A vantagem disso é que, ao verificar arquivos, as regiões que são conhecidas por serem esparsas podem ser ignoradas, o que pode reduzir o tempo para verificar uma torrente significativamente. Fácil de usar API Um dos objetivos de design da API libtorrent é fazer operações comuns simples, mas ainda assim possível fazer operações complicadas e avançadas.


librorrente. Software Relacionado

Ulib.

uma biblioteca de kit de ferramentas para C e C ++ ...

110 347 KB

Download

Mdx.

componente de gerenciamento de memória de código aberto ...

380 304 KB

Download