libschc é uma implementação C da compressão de cabeçalho de contexto estático, elaborada pela IETF. É uma técnica de compressão de cabeçalho, usada em redes de longa distância de baixo consumo de energia para permitir que pequenos microcontroladores de baixo consumo de energia tenham uma conexão IPv6 ponta a ponta. Este repositório contém o mecanismo de compactação e também de fragmentação. Para obter mais informações relacionadas ao SCHC, consulte https://datatracker.ietf.org/doc/draft-ietf-lpwan-ipv6-static-context-hc/.
Consulte a documentação e nosso documento de avaliação para obter mais informações sobre a implementação e configuração.
libschc foi desenvolvido parcialmente com o apoio de VLAIO, FWO e imec. Também faz parte da pilha de middleware IoT, que está sendo desenvolvida para o projeto Horizon 2020 PortForward da União Europeia, onde, entre outros, o LwM2M foi integrado a esta biblioteca para fornecer conectividade de sensores-nuvem baseada em padrões abertos.
Como esta implementação está em andamento, há algumas limitações que você deve ter em mente.
A biblioteca foi projetada de forma que possa ser usada em um dispositivo restrito, bem como em um dispositivo mais poderoso do lado do servidor. Como consequência, a alocação de memória e os cálculos intensivos de memória são evitados. A aritmética de ponto fixo é usada para microprocessadores de 8 bits, porém algumas otimizações são possíveis. Conseqüentemente, as regras são construídas a partir de arrays de 8 bits, disponíveis em todos os dispositivos. A alocação dinâmica de memória é omitida, pois ocorreria fragmentação da memória e o desempenho seria prejudicado, uma vez que muitos MCUs não estão equipados com unidades de gerenciamento de memória (MMU). No entanto, para o gateway de rede, a alocação dinâmica de memória deve ser implementada para diversas funções, a fim de evitar grande pré-alocação de memória.
A implementação atual é baseada na RFC 8724 (https://datatracker.ietf.org/doc/html/rfc8724/), mas faltam alguns recursos. A maioria deles está listada em issues
neste repositório.
Lembre-se de que a biblioteca funciona, mas ainda é experimental!
Nos exemplos de pasta são fornecidos exemplos básicos de compactação e fragmentação. O exemplo de fragmentação utiliza uma biblioteca de timer e deve ser adaptado à sua plataforma (veja Fragmentação e a pasta de exemplos).
libschc possui licenças duplas. A Licença Pública Geral GNU, Versão 3 (a "Licença") é a licença de código aberto: Você não pode usar esses arquivos exceto em conformidade com a Licença. Você pode obter uma cópia da Licença em https://www.gnu.org/licenses/gpl-3.0.nl.html
Consulte a Licença para saber o idioma específico que rege as permissões e limitações da Licença.
Para licenças de código não aberto, visite https://imec.flintbox.com/#technologies/36dfa28f-bf48-4a34-8c29-4439fc41d563
© Copyright 2018-2023, Bart Moons [email protected], imec e Universidade de Ghent