libschc — это реализация статического сжатия заголовков контекста на языке C, разработанная IETF. Это метод сжатия заголовка, используемый в глобальных сетях с низким энергопотреблением, чтобы позволить крошечным маломощным микроконтроллерам иметь сквозное соединение IPv6. Этот репозиторий содержит как механизм сжатия, так и механизм фрагментации. Дополнительную информацию о SCHC см. на странице https://datatracker.ietf.org/doc/draft-ietf-lpwan-ipv6-static-context-hc/.
Дополнительную информацию о реализации и настройке см. в документации и нашем оценочном документе.
libschc частично разработан при поддержке VLAIO, FWO и imec. Он также является частью стека промежуточного программного обеспечения Интернета вещей, разрабатываемого для проекта Европейского Союза Horizon 2020 PortForward, где, среди прочего, LwM2M был интегрирован с этой библиотекой для обеспечения возможности подключения датчиков к облаку на основе открытых стандартов.
Поскольку эта реализация находится в стадии разработки, следует иметь в виду некоторые ограничения.
Библиотека была разработана таким образом, чтобы ее можно было использовать как на ограниченном устройстве, так и на более мощном серверном устройстве. Как следствие, можно избежать выделения памяти и вычислений, требующих интенсивного использования памяти. Арифметика с фиксированной запятой используется для 8-битных микропроцессоров, однако возможны некоторые оптимизации. Следовательно, правила состоят из 8-битных массивов, доступных на всех устройствах. Динамическое выделение памяти опущено, поскольку может произойти фрагментация памяти и снизится производительность, поскольку многие микроконтроллеры не оснащены модулями управления памятью (MMU). Однако для сетевого шлюза динамическое выделение памяти должно быть реализовано для нескольких функций, чтобы избежать предварительного выделения большого объема памяти.
Текущая реализация основана на RFC 8724 (https://datatracker.ietf.org/doc/html/rfc8724/), но в ней отсутствуют некоторые функции. Большинство из них перечислены в разделе issues
в этом репозитории.
Имейте в виду, что библиотека работает, но пока является экспериментальной!
В папках с примерами представлены как базовые примеры сжатия, так и фрагментации. В примере фрагментации используется библиотека таймеров, и его следует адаптировать к вашей платформе (см. раздел «Фрагментация» и папку примеров).
libschc имеет двойные лицензии. Стандартная общественная лицензия GNU, версия 3 («Лицензия») является лицензией с открытым исходным кодом: вы не можете использовать эти файлы, кроме как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу https://www.gnu.org/licenses/gpl-3.0.nl.html.
См. Лицензию для определения конкретного языка, регулирующего разрешения и ограничения в рамках Лицензии.
Для получения лицензий с закрытым исходным кодом посетите https://imec.flintbox.com/#technologies/36dfa28f-bf48-4a34-8c29-4439fc41d563.
© Авторские права 2018-2023, Барт Мунс [email protected], imec и Гентский университет