Một vấn đề phổ biến trong các ứng dụng home automation và internet of things là kỹ thuật để điều khiển các thiết bị nhúng nằm phía trong tường lửa hoặc NAT.
Tổng quan
Một vấn đề phổ biến trong các ứng dụng home automation và internet of things là kỹ thuật để điều khiển các thiết bị nhúng nằm phía trong tường lửa hoặc NAT.
Các thiết bị kết nối internet đối mặt với 2 thách thức chính:
Firewall, NAT or mobile router prevents access
  • Khả năng truy xuất – Các tường lửa chặn các kết nối HTTP đi vào hệ thống nhúng, đặc biệt là nếu người quản trị không biết hoặc bắt buộc phải thêm một rule vào policy của tường lửa.
  • Khả năng xác định – Để đối phó với sự thiếu hụt ngày càng tăng các địa chỉ IPv4 miễn phí, các hệ thống nhúng thường chỉ dùng địa chỉ IP động. NAT cũng làm giảm nhẹ vấn đề thiếu hụt địa chỉ bằng cách ẩn nhiều thiết bị kết nối phía sau một địa chỉ IP tĩnh.
Một số phương pháp cho vấn đề này:
  • Port forwarding và static ip addresses. Giải pháp này đòi hỏi người sử dụng các thiết bị phải biết cách cấu hình router và có quyền truy cập để quản lý router mà không phải lúc nào cũng có thể.
  • Polling là kỹ thuật mà thiết bị thực hiện việc kiểm tra một cách đều đặn với một máy chủ bên ngoài để nhận lệnh. Giải pháp này không đòi hỏi phải cấu hình router, nhưng nó tạo ra sự chậm trễ khi hồi đáp lại các hành động.
  • Cách thứ ba là sử dụng WebSockets, một cách để cung cấp việc giao tiếp full-duplex theo thời gian thực thông qua TCP.
  • Reserve HTTP là giải pháp mà tôi muốn nói đến. Chúng ta sẽ dùng Yaler, một nền tảng mã nguồn mở giúp truy cấp đến các thiết bị được kết nối mà không cần cấu hình quá nhiều.
Yaler relay provides addressability and accessibility
Relay cho phép thiết bị tạo lập một kết nối HTTP đi ra bên ngoài trên một cổng tiêu chuẩn, thường được cho phép bởi tường lửa. Yaler đóng vai trò là điểm truy cập cho các thiết bị được kết nối, định tuyết tất cả các lưu lượng đến và đi khỏi thiết bị.
Cách hoạt động
Phần lõi của giao thức bao gồm các bước “bắt tay” sau:
Yaler relay cho phép thiết bị tự định danh với một cái tên duy nhất, vd: device-id. Bất cứ khi nào trình duyệt truy xuất đến một tài nguyên trên thiết bị, Yaler sẽ chuyển kết nối đến thiết bị đến cho Reverse HTTP, và chuyển tiếp yêu cầu của trình duyệt. Sau khi xử lý yêu cầu, thiết bị sẽ hồi đáp lại và Yaler trả hồi đáp về cho trình duyệt máy khách.
Tổng kết
Yaler được sử dụng phổ biến trong nhà tự động, giám sát môi trường, y học từ xa, …
Tải về Yaler Relay Server và Yaler Contrib cho các nền tảng / ngôn ngữ: Android, Arduino, C, CSharp (.NET), Java, Python tại:
https://yaler.net/download hoặc https://bitbucket.org/yaler/
Nguyễn Ngọc Đỉnh – FPT Telecom

 

Tin liên quan: