정적 컨텍스트 헤더 압축 (SCHC, 뚜렷한 Chic)은 LPWAN 네트워크의 일반적인 압축 메커니즘입니다. IETF에서 표준화됩니다.
이 구현은 SCHC에 COAP/UDP/IPv6 헤더에 적용되지만 다른 유형의 필드로 확장 할 수 있습니다.
이 문서는 {{id.toutain-lpwan-ipv6-static-context-hc}} 및 {{id.toutain-lpwan-coap-static-context-hc}}에 정의 된 일반 압축/감압 프로세스의 적용에 대해 설명합니다.
현재 구현은 업 링크 및 다운 링크 만 테스트되었으며 SCHC C/D 상단에 간단한 COAP 서버가 실행되는 인프라에서 장치 (DEV)에서 LPWAN 압축기/감압제 (SC)로 통신했습니다. 장치 구현은 Python으로 작성됩니다. 현재 LORA 용 PYCOM API를 사용하며 SIGFOX에 쉽게 적응할 수 있습니다.
COAP/UDP/IPv6 패킷은 장치에 의해 생성되며, 장치는이 패킷을 구문 분석하여 헤더 필드의 각 값을 얻은 다음 장치는이 패킷 형식과 일치하는 압축 규칙을 검색합니다. 컨텍스트에 헤더 형식과 패킷의 값과 일치하는 규칙이있는 경우, 해당 규칙에 의해 지정된 압축/감압 동작 (CDA)을 사용하여 헤더 필드가 압축되며 압축 패킷은 인프라 C/D로 공중으로 전송됩니다.
수령시, 압축 패킷은 인프라 C/D에 의해 구문 분석하여 규칙 식별자 (첫 번째 바이트), 각 후속 헤더 필드 (규칙에 따라 지정된) 및 페이로드를 묘사합니다. 마지막으로 LC는 규칙에 설명 된대로 헤더를 압축합니다. 그런 다음 COAP 메시지가 처리되고 답이 필요한 경우 응답이 압축되어 압축 된 장치로 다시 전송됩니다.
이를 위해이 장치는 LOPY 모듈에서 구현되며 LORA를 통해 전송할 수 있으며 마이크로 파이썬에서 쉽게 프로그래밍 할 수 있습니다. 인프라 C/S는 포스트 메시지에서 원시 압축 패킷 LPWAN 페이로드 프레임을 수신하는 HTTP 서버에 의해 Node.js와 함께 구현됩니다. 답은이 게시물 메시지의 승인에 포함됩니다.
압축 및 감압을 구현하려면 다른 클래스가 필요합니다.
rulemngt.py SCHC 컨텍스트를 유지하는 Rulemanager 클래스를 정의합니다.
rulemanager 인스턴스는 통화로 rulemanager ()로 생성됩니다.
RM = RuleManager()
그런 다음 addrule 메소드를 사용하여 규칙을 추가 할 수 있습니다.
RM.addRule(rule_coap0)
RM.addRule(rule_coap1)
규칙은 다음 형식을 사용하여 Oin JSON으로 정의됩니다.
rule_coap0 = {"ruleid" : 0,
"content" : [["IPv6.version", 1, "bi", 6, "equal", "not-sent"],
["IPv6.trafficClass", 1, "bi", 0x00, "equal", "not-sent"]] }
규칙은 두 가지 요소의 목록 (사전)으로 구성됩니다.
RuleID는 규칙 번호를 정의하고
컨텐츠에는 다음으로 구성된 필드 설명이 포함됩니다.
windrulefromid (ruleid) 메소드는 규칙에 해당하는 규칙을 반환합니다.
메소드 FindRuleFrompKt (헤더, 방향)는 첫 번째 인수에 포함 된 헤더 필드 목록에 해당하는 규칙을 반환합니다. 이 값은 일반적으로 클래스 파서로 수행 된 패킷 헤더 구문 분석에서 나옵니다. 두 번째 인수는 "UP", "DW"또는 "BI"이며 장치 관점에서 방향을 나타냅니다.
두 가지 방법 모두 규칙이 없으면 없음이 반환됩니다.