CoAP คืออะไร? โปรโตคอลที่ออกแบบมาเพื่ออุปกรณ์ Constrained

ในโลกของ Industrial IoT อุปกรณ์จำนวนมากยังคงใช้ไมโครคอนโทรลเลอร์ขนาดเล็กที่มี RAM เพียง 10-100 KB และ Flash Memory ไม่เกิน 250 KB อุปกรณ์เหล่านี้ไม่สามารถรัน HTTP/TCP stack ที่หนักและซับซ้อนได้ CoAP (Constrained Application Protocol) จึงถูกพัฒนาขึ้นโดย IETF (RFC 7252) เพื่อเป็นโปรโตคอลระดับแอปพลิเคชันสำหรับอุปกรณ์ประเภทนี้โดยเฉพาะ

CoAP ทำงานบน UDP แทน TCP ทำให้ overhead ต่ำกว่า HTTP อย่างมีนัยสำคัญ — packet header ของ CoAP มีขนาดเพียง 4 bytes เทียบกับ HTTP header ที่อาจมีขนาดหลายร้อย bytes แต่กระนั้น CoAP ยังคงรักษาโมเดล Request-Response ที่คุ้นเคย พร้อมรองรับ RESTful interaction เช่น GET, POST, PUT, DELETE เหมือน HTTP

💡 ข้อควรรู้: CoAP ไม่ได้มาแทนที่ MQTT แต่มาเติมเต็มช่องว่างที่ MQTT ทำไม่ได้ — โดยเฉพาะกรณีที่ต้องการ Request-Response pattern, Resource Discovery และการทำงานแบบ Multicast ในเครือข่ายท้องถิ่น

สถาปัตยกรรม CoAP: เลเยอร์ที่ทำให้มันพิเศษ

CoAP ถูกออกแบบมาด้วยสถาปัตยกรรมแบบ 2 เลเยอร์:

  • Message Layer — จัดการการส่ง-รับข้อมูลผ่าน UDP รองรับ Confirmable (CON) และ Non-confirmable (NON) message, พร้อม mechanism ตรวจสอบ duplicate message โดยอัตโนมัติ
  • Request/Response Layer — ทำงานเหนือ Message Layer จัดการ RESTful method (GET, POST, PUT, DELETE) และ response code ที่คล้าย HTTP (2.05 Content, 4.04 Not Found, 5.00 Internal Server Error)

การแยกเลเยอร์แบบนี้ทำให้ CoAP สามารถทำงานได้อย่างมีประสิทธิภาพบนอุปกรณ์ที่มีทรัพยากรจำกัด โดยยังคงความน่าเชื่อถือได้ผ่าน mechanism ของ Message Layer

ตารางเปรียบเทียบ: CoAP vs HTTP vs MQTT

คุณสมบัติ CoAP HTTP MQTT
Transport Protocol UDP TCP TCP
Header Size 4 bytes 200+ bytes 2 bytes
Communication Pattern Request-Response + Observe Request-Response Publish-Subscribe
Resource Discovery ✅ Built-in (/.well-known/core) ❌ ไม่มี ❌ ไม่มี
Multicast Support ✅ รองรับ ❌ ไม่รองรับ ❌ ไม่รองรับ
RAM ที่ต้องการ (ขั้นต่ำ) ~10 KB ~50 KB ~5 KB
Security DTLS TLS TLS
เหมาะกับ Use Case Sensor Network, Building Automation Cloud API, Web Service Telemetry, Event Streaming

Observe Extension: CoAP ทำ Pub-Sub ได้ด้วย

หนึ่งในจุดแข็งสำคัญของ CoAP คือ Observe extension (RFC 7641) ซึ่งอนุญาตให้ client สมัครรับการแจ้งเตือนเมื่อ resource เปลี่ยนแปลง — คล้ายกับ Publish-Subscribe pattern แต่ทำงานบน Request-Response model

ตัวอย่างเช่น ในระบบ Building Automation เมื่อ temperature sensor ในห้อง server มีการเปลี่ยนแปลงค่าอุณหภูมิ CoAP Observe จะส่ง notification ไปยัง Building Management System (BMS) ทันที โดยไม่ต้องวนลูป poll อยู่เรื่อยๆ

ข้อดีคือลด network traffic ได้ถึง 90% เมื่อเทียบกับ polling แบบดั้งเดิม เพราะข้อมูลถูกส่งเฉพาะเมื่อมีการเปลี่ยนแปลงเท่านั้น

DTLS: ความปลอดภัยสำหรับ UDP

เนื่องจาก CoAP ทำงานบน UDP จึงไม่สามารถใช้ TLS แบบ HTTP ได้ แต่ใช้ DTLS (Datagram TLS) แทน ซึ่งให้ความปลอดภัยระดับเดียวกัน — รองรับ Pre-Shared Key (PSK), Raw Public Key (RPK) และ X.509 Certificate

ในบริบทของโรงงานอุตสาหกรรม DTLS ช่วยปกป้อง sensor data จากการดักฟังหรือปลอมแปลง โดยเฉพาะในเครือข่ายที่มีอุปกรณ์จำนวนมากเชื่อมต่อกัน

Use Case ในอุตสาหกรรม: CoAP เหมาะกับงานไหน?

1. Building Management System (BMS)

ควบคุม HVAC, แสงสว่าง, และ access control ในอาคารโรงงาน — อุปกรณ์เหล่านี้มีจำนวนมาก (หลายพันตัว) กระจายอยู่ทั่วอาคาร และต้องการ resource discovery เพื่อจัดการ ทำให้ CoAP เหมาะอย่างยิ่ง

2. Sensor Network ในกระบวนการผลิต

อุปกรณ์วัดอุณหภูมิ ความดัน ความชื้น และการสั่นสะเทือน ที่ติดตั้งบนเครื่องจักรทั่วโรงงาน — CoAP ช่วยลด overhead ของการสื่อสารเมื่อต้องดึงข้อมูลจาก sensor หลายร้อยตัวพร้อมกัน

3. Smart Metering และ Energy Monitoring

ระบบวัดการใช้พลังงาน น้ำ และก๊าซ ที่ต้องส่งข้อมูลเป็นระยะ — CoAP multicast ช่วยให้ gateway สามารถส่งคำขออ่านค่าได้ทีเดียวทุก meter ในเครือข่ายย่อย

4. Asset Tracking ในโรงงาน

ใช้ร่วมกับ BLE Beacon หรือ UWB tag เพื่อติดตามตำแหน่งวัสดุและ semi-finished goods ภายในโรงงาน โดย tag ส่งตำแหน่งผ่าน CoAP เมื่อมีการเคลื่อนไหวเท่านั้น

CoAP Proxy: เชื่อมโยงกับโลก HTTP

หนึ่งในฟีเจอร์สำคัญของ CoAP คือ HTTP-CoAP Proxy ซึ่งแปลง request ระหว่าง HTTP และ CoAP ได้โดยอัตโนมัติ ทำให้ Cloud Platform หรือ Enterprise System ที่ใช้ HTTP/REST API สามารถสื่อสารกับอุปกรณ์ CoAP ได้โดยไม่ต้องเปลี่ยนแปลง architecture

การทำงานคือ เมื่อ Cloud dashboard ส่ง HTTP GET request ไปยัง proxy จะถูกแปลงเป็น CoAP GET และส่งต่อไปยัง sensor ในโรงงาน จากนั้น response จะถูกแปลงกลับเป็น HTTP response — ทั้งหมดทำงานได้อย่างโปร่งใส (transparent)

ข้อจำกัดและข้อควรพิจารณา

  • UDP ไม่รับประกันการจัดส่ง: ต้องใช้ Confirmable message และ retransmission mechanism ที่ CoAP มีให้ โดยค่า default retransmit timeout เริ่มที่ 2-3 วินาที และเพิ่มขึ้นแบบ exponential backoff
  • ไม่มี built-in message broker: ต่างจาก MQTT ที่มี broker คั่นกลาง — ดังนั้นถ้าต้องการ decouple publisher กับ subscriber อาจต้องติดตั้ง CoAP proxy หรือใช้ร่วมกับ IoT Platform
  • Message size จำกัด: CoAP payload แนะนำไม่เกิน 1024 bytes (เพื่อให้พอดีกับ UDP MTU ของ IPv6 ที่ 1280 bytes) — ถ้าต้องส่งข้อมูลขนาดใหญ่ ต้องใช้ Block-wise Transfer (RFC 7959)
  • Firewall traversal: UDP อาจถูก block โดย firewall ขององค์กร — ต้องวางแผน network architecture ให้เหมาะสม

การนำ CoAP ไปใช้จริง: แนวทางปฏิบัติ

สำหรับวิศวกรที่สนใจนำ CoAP ไปใช้ในโรงงาน แนะนำขั้นตอนดังนี้:

  1. เริ่มจาก Pilot Project: เลือก use case เล็กๆ เช่น อ่านค่า sensor อุณหภูมิ 10-20 ตัว ใน zone เดียวกัน ใช้ CoAP library สำหรับ embedded system เช่น libcoap หรือ aiocoap (Python)
  2. วาง CoAP-HTTP Proxy: เพื่อให้ข้อมูลไหลไปยัง dashboard หรือ SCADA system ที่มีอยู่ได้โดยไม่ต้องแก้ไข
  3. เปิด DTLS ตั้งแต่วันแรก: อย่าปิด security feature — ใช้ PSK mode สำหรับ internal sensor network เพื่อความสะดวกในการจัดการ
  4. ใช้ Resource Discovery: ให้ทุกอุปกรณ์เปิด /.well-known/core เพื่อให้ระบบจัดการค้นหาและตั้งค่าอุปกรณ์ใหม่ได้อัตโนมัติ
  5. Monitor และ Scale: ใช้ SNMP หรือ network monitoring ติดตาม packet loss ของ CoAP message เพื่อปรับแต่ง retransmission parameter

Key Takeaways

  • CoAP คือ HTTP สำหรับอุปกรณ์ขนาดเล็ก — โปรโตคอล RESTful ที่ทำงานบน UDP ด้วย header เพียง 4 bytes เหมาะสำหรับ constrained device ที่ RAM ต่ำกว่า 100 KB
  • รองรับ Request-Response และ Observe — ทำงานได้ทั้งแบบ synchronous query และ asynchronous notification ผ่าน Observe extension (RFC 7641)
  • Multicast คือจุดแข็งหลัก — สามารถส่งคำขอไปยังอุปกรณ์ทั้งกลุ่มได้ในครั้งเดียว ลด network traffic อย่างมากใน sensor network ขนาดใหญ่
  • Resource Discovery ในตัว — ผ่าน /.well-known/core ทำให้ระบบค้นหาและ auto-configure อุปกรณ์ใหม่ได้โดยอัตโนมัติ ลดความซับซ้อนในการ deploy
  • เข้ากันได้กับ HTTP ผ่าน Proxy — ใช้ HTTP-CoAP Proxy เชื่อมโยงกับ Cloud Platform และ Enterprise System ได้โดยไม่ต้องเปลี่ยนแปลง
  • DTLS ให้ความปลอดภัยระดับเดียวกับ HTTPS — รองรับ PSK, RPK และ X.509 certificate สำหรับ authentication และ encryption
  • เลือกใช้ให้เหมาะกับ Use Case — CoAP เหมาะกับ sensor/actuator network ที่ต้องการ resource discovery และ multicast ส่วน MQTT เหมาะกับ telemetry stream ที่ต้องการ reliable delivery