libschc es una implementación en C de la compresión de encabezados de contexto estático, redactada por el IETF. Es una técnica de compresión de encabezados que se utiliza en redes de área amplia de bajo consumo para permitir que pequeños microcontroladores de bajo consumo tengan una conexión IPv6 de extremo a extremo. Este repositorio contiene tanto el mecanismo de compresión como el de fragmentación. Para obtener más información relacionada con SCHC, consulte https://datatracker.ietf.org/doc/draft-ietf-lpwan-ipv6-static-context-hc/.
Consulte los documentos y nuestro documento de evaluación para obtener más información sobre la implementación y configuración.
libschc ha sido desarrollado parcialmente con el apoyo de VLAIO, FWO e imec. También forma parte de la pila de middleware de IoT, que se está desarrollando para el proyecto PortForward Horizon 2020 de la Unión Europea, donde, entre otros, LwM2M se integró con esta biblioteca para ofrecer conectividad de nube y sensor basada en estándares abiertos.
Como esta implementación es un trabajo en progreso, existen algunas limitaciones que debes tener en cuenta.
La biblioteca ha sido diseñada de tal manera que se puede utilizar sobre un dispositivo restringido, así como en un dispositivo del lado del servidor más potente. Como consecuencia, se evita la asignación de memoria y los cálculos intensivos en memoria. La aritmética de punto fijo se utiliza para microprocesadores de 8 bits, sin embargo, son posibles algunas optimizaciones. En consecuencia, las reglas se construyen a partir de matrices de 8 bits, disponibles en todos los dispositivos. La asignación de memoria dinámica se omite ya que se produciría una fragmentación de la memoria y el rendimiento se vería afectado, ya que muchas MCU no están equipadas con unidades de administración de memoria (MMU). Sin embargo, para la puerta de enlace de red, se debe implementar una asignación de memoria dinámica para varias funciones para evitar una preasignación de memoria grande.
La implementación actual se basa en RFC 8724 (https://datatracker.ietf.org/doc/html/rfc8724/), pero le faltan algunas características. La mayoría de ellos se enumeran en issues
de este repositorio.
Tenga en cuenta que la biblioteca funciona, ¡pero aún es experimental!
En la carpeta de ejemplos se proporcionan ejemplos básicos de compresión y fragmentación. El ejemplo de fragmentación utiliza una biblioteca de temporizadores y debe adaptarse a su plataforma (consulte Fragmentación y la carpeta de ejemplos).
libschc tiene licencias duales. La Licencia Pública General GNU, Versión 3 (la "Licencia") es la licencia de código abierto: no puede utilizar estos archivos excepto de conformidad con la Licencia. Puede obtener una copia de la Licencia en https://www.gnu.org/licenses/gpl-3.0.nl.html
Consulte la Licencia para conocer el idioma específico que rige los permisos y limitaciones de la Licencia.
Para licencias de código no abierto, visite https://imec.flintbox.com/#technologies/36dfa28f-bf48-4a34-8c29-4439fc41d563
© Copyright 2018-2023, Bart Moons [email protected], imec y Universidad de Gante