Static Context Header Compression (SCHC, diucapkan chic) adalah mekanisme kompresi generik untuk jaringan LPWAN. Ini distandarisasi di IETF.
Implementasi ini berlaku SCHC untuk coap/header UDP/IPv6, tetapi dapat diperluas ke jenis bidang lainnya.
Dokumen ini menjelaskan aplikasi proses kompresi/dekompresi generik yang didefinisikan dalam {{{id.toutain-lpwan-IPV6-statis-context-hc}} dan {{id.toutain-lpwan-coap-statis-context-hc}}.
Untuk saat ini, implementasi hanya diuji uplink dan downlink, berkomunikasi dari perangkat (DEV) ke kompresor/dekompresor LPWAN (SC) dalam infrastruktur dengan server CoAP sederhana yang berjalan di atas SCHC C/D. Implementasi perangkat ditulis di Python. Saat ini menggunakan API PYCOM untuk LORA dan dapat dengan mudah diadaptasi untuk SIGFOX.
Paket COAP/UDP/IPv6 dihasilkan oleh perangkat, perangkat mem -parsing paket ini untuk mendapatkan setiap nilai bidang header, kemudian perangkat mencari aturan kompresi yang cocok dengan format paket ini. Jika ada aturan dalam konteks yang cocok dengan format header dan nilai -nilai paket, bidang header dikompresi menggunakan aksi kompresi/dekompresi (CDA) yang ditentukan oleh aturan itu dan paket terkompresi dikirim melalui udara ke infrastruktur C/D.
Setelah diterima, paket yang dikompres diuraikan oleh infrastruktur C/D untuk menggambarkan pengidentifikasi aturan (byte pertama), setiap bidang header berikutnya (sebagaimana ditentukan oleh aturan) dan muatan. Akhirnya, LC mendekompresi header, seperti yang dijelaskan dalam aturan. Pesan COAP kemudian diproses dan jika diperlukan jawaban, responsnya dikompresi dan dikirim kembali ke perangkat yang mendekompresi.
Untuk tujuan ini, perangkat ini diimplementasikan pada modul lopy, yang dapat mentransmisikan melalui LORA dan dapat dengan mudah diprogram dalam Micropython. Infrastruktur C/S diimplementasikan dengan node.js oleh server HTTP yang menerima bingkai payload Paket LPWAN terkompresi mentah dalam pesan posting. Jawabannya termasuk dalam pengakuan pesan posting ini.
Kelas yang berbeda diperlukan untuk menerapkan kompresi dan dekompresi.
Rulemngt.py mendefinisikan kelas RuleManager yang mempertahankan konteks SCHC.
Contoh RuleManager dibuat dengan panggilan ruleManager ()
RM = RuleManager()
Kemudian aturan dapat ditambahkan menggunakan metode addrule:
RM.addRule(rule_coap0)
RM.addRule(rule_coap1)
Aturan ini didefinisikan Oin JSON menggunakan format berikut:
rule_coap0 = {"ruleid" : 0,
"content" : [["IPv6.version", 1, "bi", 6, "equal", "not-sent"],
["IPv6.trafficClass", 1, "bi", 0x00, "equal", "not-sent"]] }
Peraturan terdiri dari daftar (dikiksi) dari dua elemen:
aturanid mendefinisikan nomor aturan,
Konten berisi serangkaian deskripsi bidang yang terdiri dari:
Metode FindRuleFromid (aturanID) mengembalikan aturan yang sesuai dengan aturan.
Metode FindRulefrompkt (header, arah) mengembalikan aturan yang sesuai dengan daftar bidang header yang terkandung dalam argumen pertama. Nilai ini secara umum berasal dari parsing header paket yang dilakukan dengan parser kelas. Argumen kedua adalah "up", "dw" atau "bi", indikasi arah dari sudut pandang perangkat.
Untuk kedua metode, jika tidak ada aturan yang ditemukan, tidak ada yang dikembalikan.