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 ไปใช้ในโรงงาน แนะนำขั้นตอนดังนี้:
- เริ่มจาก Pilot Project: เลือก use case เล็กๆ เช่น อ่านค่า sensor อุณหภูมิ 10-20 ตัว ใน zone เดียวกัน ใช้ CoAP library สำหรับ embedded system เช่น libcoap หรือ aiocoap (Python)
- วาง CoAP-HTTP Proxy: เพื่อให้ข้อมูลไหลไปยัง dashboard หรือ SCADA system ที่มีอยู่ได้โดยไม่ต้องแก้ไข
- เปิด DTLS ตั้งแต่วันแรก: อย่าปิด security feature — ใช้ PSK mode สำหรับ internal sensor network เพื่อความสะดวกในการจัดการ
- ใช้ Resource Discovery: ให้ทุกอุปกรณ์เปิด /.well-known/core เพื่อให้ระบบจัดการค้นหาและตั้งค่าอุปกรณ์ใหม่ได้อัตโนมัติ
- 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
