Một công cụ đo kiểm giao thức MQTT cho những ứng dụng IoT phục vụ cho việc ra quyết định co dãn tài nguyên trên đám mây44865

6 18 0
Một công cụ đo kiểm giao thức MQTT cho những ứng dụng IoT phục vụ cho việc ra quyết định co dãn tài nguyên trên đám mây44865

Đang tải... (xem toàn văn)

Thông tin tài liệu

Hội thảo quốc gia lần thứ XXII: Một số vấn đề chọn lọc Công nghệ thông tin truyền thơng – Thái Bình, 28-29/6/2019 Một cơng cụ đo kiểm giao thức MQTT cho ứng dụng IoT phục vụ cho việc định co dãn tài nguyên đám mây Phạm Mạnh Linh Trung tâm Cơng nghệ tích hợp liên ngành Giám sát trường (FIMO) Trường Đại học Công Nghệ, ĐHQGHN Hà Nội, Việt Nam Email: linhmp@vnu.edu.vn Tóm tắt nội dung—Trong phát triển Internet vạn vật (IoT), giao thức MQTT (Message Queuing Telemetry Transport) có vai trị quan trọng lẽ sử dụng rộng rãi ứng dụng IoT thường triển khai theo mơ hình "Xuất bảnĐăng ký" Với khả cung ứng giải phóng tài nguyên ảo mịn (chức co dãn elasticity), điện toán đám mây có khả làm gia tăng sức mạnh cho máy chủ môi giới MQTT Khả co dãn giúp máy chủ mơi giới MQTT đương đầu với khối lượng lớn liệu ngày tích hợp vào IoT Tuy nhiên có thiếu vắng cơng cụ đo kiểm đánh giá đầy đủ tất khía cạnh MQTT để hỗ trợ việc định co dãn tài nguyên hợp lý xác Bài báo tập trung vào chủ đề đo kiểm MQTT thông qua việc giới thiệu MQTTBench công cụ kiểm thử phát triển với kết ban đầu có từ việc áp dụng cơng cụ đo kiểm ứng dụng điện toán đám mây giả lập Keywords-đo kiểm; điện toán đám mây; Internet vạn vật; MQTT; I GIỚI THIỆU Internet vạn vật (IoT) trở thành thật với sẵn sàng thiết bị truyền thơng chi phí thấp ví dụ thẻ RFID, cảm biến khơng dây hay thiết bị di động thông minh IoT mở cho công ty hội ứng dụng mơ hình kinh tế (ví dụ trả theo nhu cầu) để cải thiện chất lượng dịch vụ cung cấp cho khách hàng họ mà đáp ứng nhu cầu trách nhiệm hợp đồng pháp lý Mơ hình giao tiếp sử dụng phổ biến kiến trúc IoT "Xuất bản-Đăng ký" [1] (viết ngắn gọn PubSub) dùng để phân phối thông điệp đo lường tập hợp từ nút cảm biến đưa tới ứng dụng chuyên sâu cụ Trần Mạnh Đông, Nguyễn Trường Thắng Viện Công nghệ thông tin Viện Hàn lâm Khoa học Công nghệ Việt Nam Hà Nội, Việt Nam Email: {dongtm, ntthang}@ioit.ac.vn thể Giao thức MQTT (Message Queuing Telemetry Transport) [2] triển khai sử dụng phổ biến mơ hình PubSub ngữ cảnh IoT nói chung ngữ cảnh công nghệ Máy tới Máy (M2M) nói riêng Với MQTT thơng điệp gửi điều hướng chủ đề (topics) máy chủ Một thách thức kết hợp MQTT IoT khả cung cấp dịch vụ với lực quản lý tài nguyên động (tài nguyên cung ứng giải phóng dựa nhu cầu thực tế) Bởi cần thiết để định nghĩa khái niệm "chủ đề co dãn" xử lý điều khiển kết nối cách tối ưu Để định nghĩa ngưỡng co dãn mà máy chủ mơi giới MQTT hỗ trợ thực tiễn, cần thiết để thực kiểm tra hiệu MQTT Trong báo này, thực công việc sau: (1) giới thiệu MQTTBench, công cụ kiểm thử cho phép thực nhiều kiểm tra hiệu MQTT; (2) cung cấp cách tiếp cận để phân tích kết thống kê cách so sánh định nghĩa lý thuyết MQTT để tìm ngưỡng co dãn MQTT Phần lại báo xếp sau: Sau nêu nghiên cứu có liên quan tới cơng việc Phần II, kiến trúc thành phần công cụ phát triển mô tả chi tiết Phần III Phần IV mô tả thí nghiệm mang tính hợp lệ hóa trao đổi kết có từ kịch khác tương ứng với triển khai thực tiễn ngữ cảnh IoT Sau cùng, báo kết luận đưa nghiên cứu tiềm tương lai Phần V Hội thảo quốc gia lần thứ XXII: Một số vấn đề chọn lọc Công nghệ thơng tin truyền thơng – Thái Bình, 28-29/6/2019 II CÁC NGHIÊN CỨU LIÊN QUAN Mạng lưới liền mạch linh hoạt đối tượng thường ngày trở thành miền ứng dụng quan trọng cho truyền thông dựa Internet, với tầm nhìn hướng IoT Hiệu hệ thống M2M nhân tố quan trọng, đặc biệt với yêu cầu thời gian thực Trong vài hệ M2M việc sử dụng pin lượng hiệu mối quan tâm lớn ví dụ mạng cảm biến khơng dây Tuy nhiên thiết lập môi trường đánh giá hiệu cho hệ thống M2M phức tạp thách thức lập trình viên Bởi nhu cầu công cụ hiệu thân thiện cho kiểm thử MQTT cấp thiết vài nghiên cứu có liên quan tới cách tiếp cận chúng tơi Durkop tiến hành thí nghiệm để so sánh giao thức M2M CoAP, MQTT OPC UA có liên quan đến chế giao vận chúng để đánh giá thời gian truyền phân tích tiềm cho tối ưu hóa [10] Bằng cách sử dụng thành phần trung gian (middleware), nhóm nghiên cứu từ trường Đại học quốc gia Singapore thực thí nghiệm đánh giá hiệu MQTT CoAP với đại lượng độ trễ đầu cuối tiêu thụ băng thông [11] Một số cơng ty nghiên cứu Ekito Scalagent [12], [13] tiến hành việc đo kiểm MQTT Tuy nhiên, công ty sử dụng mã nguồn tự phát triển riêng họ để làm việc Có vài cơng cụ đo kiểm phổ biến JMeter, CLIF Server, Tsung, hay Gatling Chúng thiết kế để dễ dàng sử dụng với khả bảo trì hiệu cao Giống MQTTBench, chúng cung cấp tảng cho phép thực test tải cho vài kiểu máy chủ có khả giả lập test hiệu Nhưng giao thức chuyển nhận thông điệp sử dụng hàng đợi, tất cơng cụ hỗ trợ JMS Chỉ có công cụ để thực đo kiểm MQTT Internet SmartBear [14], khơng phải mã nguồn mở đo kiểm vài chức giao thức MQTT Trong giới hạn kiến thức chúng tơi, khơng có cơng cụ mã nguồn mở đo kiểm MQTT cho ứng dụng IoT môi trường đám mây Bằng việc phát triển trình cắm MQTTBench, chúng tơi lấp đầy khoảng trống tồn giới IoT công cụ đo kiểm linh hoạt cho giao thức sử dụng phổ biến MQTT MQTTBench phát triển mở rộng từ JMeter, tất người sử dụng JMeter trải nghiệm việc đo kiểm JMS Hình 1: Kiến trúc phần mềm tổng thể MQTTBench MQTT với công cụ quen thuộc họ Thêm vào đó, nhóm nghiên cứu khác có công cụ dùng chung, thân thiện, linh hoạt để đánh giá đầy đủ khía cạnh MQTT Như hệ quả, dễ dàng so sánh kết từ nhóm với III MQTTBENCH MQTTBench tảng kiểm thử MQTT phân tán cho ứng dụng MQTT tuân theo nguyên lý kiến trúc dựa thành phần Nó thiết kế để tái sử dụng thành phần dựng sẵn (COTS: component-off-the-shelf) kết hợp chúng lại cách linh hoạt Bởi vậy, lõi MQTTBench giữ gọn nhẹ với hoạt động API đơn giản hóa điểm neo để gắn thêm trình cắm (plug-in) cụ thể tới thành phần dựng sẵn Hình kiến trúc phần mềm tổng thể MQTTBench bao gồm kết hợp vài mô đun A API Nền Tảng Kiểm Thử Hiệu Năng API tảng kiểm thử hiệu triển khai Java để tạo chèn hồ sơ tải vào hệ thống khác để đo lường hiệu Ban đầu thiết kế để kiểm thử MQTT ứng dụng IoT mở rộng để bao gồm chức kiểm thử khác Chúng phát triển trình cắm cho mơ đun để gắn vào hệ thống Apache JMeter [3], phần mềm đo kiểm mã nguồn mở hỗ trợ tính di chuyển gọn nhẹ cách tự nhiên JMeter cung cấp khả thực test với tải lớn test hiệu với nhiều kiểu dịch vụ giao thức khác (ví dụ Web - HTTP, HTTPS, SOAP, FTP, Database với JDBC, Message-Oriented Middleware với JMS) Nó hỗ trợ xử lý đa luồng để tăng tốc cho test Những phần mềm cạnh tranh JMeter nói đến CLIF https://github.com/fimocode/mqttbench Hội thảo quốc gia lần thứ XXII: Một số vấn đề chọn lọc Công nghệ thông tin truyền thơng – Thái Bình, 28-29/6/2019 Server [8] hay Gatling [9] Tuy nhiên, chúng thiếu chèn tải cho giao thức MQTT nói riêng điểm đóng góp chúng tơi muốn giới thiệu báo Tầm quan trọng giao thức MQTT giới IoT ngang giao thức HTTP giới Web Thực vậy, có công cụ mạnh mẽ cho việc đo kiểm HTTP, thiếu cơng cụ mạnh tương tự để đo kiểm MQTT B API Trình Khách MQTT cho Cả Bên Xuất Bản Đăng Ký Chúng phát triển giao diện cho công cụ bên phía khách dựa giao diện đồ họa (GUI) dòng lệnh (CLI) cung cấp JMeter Bởi ứng dụng khơng giống nhau, kịch test ứng dụng phải tùy chỉnh để đo lường hiệu lưu lượng giới thực [6] Chúng ta dùng giao diện GUI để phát triển trường hợp test sử dụng giao diện CLI để thực test thực Mô đun MQTT bên máy khách gồm phần: Xuất đại diện cho máy khách gửi liệu tới chủ đề máy chủ môi giới, Đăng ký đại diện cho máy khách nhận liệu từ máy chủ môi giới tương ứng với chủ đề cụ thể mà Đăng ký thuê bao Với Xuất MQTT, thực nhiều kịch test nhờ vào tùy chọn đa dạng nó, nhờ mà tất khía cạnh giao thức đánh giá Bộ Xuất gồm mô đun nhỏ: Thông tin kết nối, Mã hóa, Tùy chọn Nội dung Mơ đun "Thơng tin kết nối" cho phép nhập vào định danh máy khách tập hợp chủ đề mà muốn xuất tới Nó cung cấp khả xác thực, xóa phiên (máy chủ khơng nhớ máy khách sau ngắt kết nối) hai chiến lược xuất khác nhau: Ngẫu nhiên (Random) Luân phiên (Round Robin) Với chiến lược ngẫu nhiên, máy khách xuất liệu tới chủ đề ngẫu nhiên vòng tập hợp chủ đề nhập, ngược lại, với chiến lược luân phiên, máy khách xuất liệu tới chủ đề với tần suất theo thứ tự xoay vịng Mơ đun "Mã hóa" cho phép gửi thơng điệp dạng khơng mã hóa, nhị phân, base64, binhex văn thô với nhiều kiểu nén khác Mô đun "Tùy chọn" cung cấp khả gửi thông điệp trì khơng trì, thêm nhãn thời gian chuỗi số tới thơng điệp Nó cho phép điều khiển ba cấp độ chất lượng dịch vụ: Nhiều lần (0), Ít lần (1), Chính xác lần (2) Mơ đun "Nội dung" cung cấp kiểu thông điệp để xuất bản: đoạn văn bản, giá trị tạo nằm khoảng tùy biến, giá trị cố định, mảng kiểu byte ngẫu nhiên Bốn kiểu thơng điệp thích ứng với nhiều kịch test khác nhau, từ kiểu test đơn giản gửi đoạn văn tới kịch test phức tạp thông điệp đại diện liệu cảm biến gửi với dung lượng nhỏ với số lượng lớn Bộ Đăng ký MQTT bao gồm hai mô đun nhỏ: Thông tin kết nối Tùy chọn cung cấp thuộc tính giống cho kết nối bên Xuất Đăng ký FuseSource API cho trình khách MQTT sử dụng cung cấp API theo giấy phép ASL 2.0 (Apache Software License) thực việc tự động tái kết nối tới máy chủ MQTT khôi phục lại phiên kết nối phía máy khách điện mạng lưới xảy IV ĐÁNH GIÁ A Môi Trường Kiểm Thử Dữ liệu IoT giả lập tạo cách cấu hình mơ đun "Nội dung" bên xuất MQTT Trong thí nghiệm này, xuất MQTT đóng vai trị thiết bị cửa ngõ (gateway) cảm biến IoT máy chủ ứng dụng môi trường đám mây Dữ liệu sau qua qua thiết bị cửa ngõ đưa tới máy chủ môi giới MQTT Môi trường đám mây sử dụng thí nghiệm Windows Azure với giấy phép sử dụng 32 CPU Dịch vụ máy ảo (VM) Azure có khả cung cấp tài nguyên điện toán co dãn theo nhu cầu Một máy ảo Azure máy chủ đám mây mà cấu hình trì tương ứng với nhu cầu sử dụng Trong test chúng tôi, VM cài đặt hệ điều hành Ubuntu 16.04 LTS VMs triển khai chung mạng ảo Chúng sử dụng Mosquitto [5] với vai trò máy chủ môi giới MQTT Mosquitto máy chủ mơi giới MQTT miễn phí triển khai giao thức MQTT 3.1 Mosquitto cung cấp cấu hình ban đầu sau cài đặt phải cấu hình tùy biến cho chức tương ứng mà muốn đo kiểm Như đề cập Phần II, https://github.com/fusesource/mqtt-client Hội thảo quốc gia lần thứ XXII: Một số vấn đề chọn lọc Công nghệ thơng tin truyền thơng – Thái Bình, 28-29/6/2019 Hình 2: Kịch có nhiều Xuất - Khơng có Đăng ký Hình 3: Kịch có nhiều Xuất - Chỉ có Đăng ký khơng có cơng cụ mã nguồn mở đo kiểm MQTT cho ứng dụng IoT môi trường đám mây Vì chúng tơi xây dựng kịch test khác chạy MQTTBench để hợp lệ hóa mặt chức cơng cụ B Kịch Bản Trong thí nghiệm chúng tơi, có 75 kế hoạch test tạo đại diện 56.25 thí nghiệm đám mây Azure Sau kịch test đại diện cho kiểu chuyên biệt giao thức MQTT 1) Nhiều Xuất - Khơng có Đăng ký: Kịch triển khai trường hợp có nhiều Xuất sản xuất liệu mà khơng có tồn Đăng ký để tiêu thụ liệu Nó phân tích chi phí việc xuất sử dụng cho kịch thứ hai (xem Hình 2) 2) Nhiều Xuất - Một Đăng ký: Kịch triển khai nhiều Xuất với Đăng ký Điều tương ứng với trường hợp có tham gia với số lượng lớn cảm biến nguồn đám đơng (crowdsourcing) ví dụ điện thoại di động thông minh Trong trường hợp liệu đo gửi tới hệ thống IT trung tâm 3) Một Xuất - Nhiều Đăng ký: Kịch sử dụng Xuất số lượng lớn Đăng ký Điều tương ứng với trường hợp đăng ký nhận thông báo thời gian thực gửi hệ thống IT trung tâm số lượng lớn điện thoại di động thông minh (xem Hình 4) Để đạt số lượng lớn máy khách song song, MQTTBench sử dụng theo cách phân tán, tức máy chủ (master) điều khiển bốn máy chủ phụ (slave) tất chúng máy chủ MQTTBench Kết test phục hồi Hình 4: Kịch có Xuất - Nhiều Đăng ký để thống kê tổng hợp MQTTBench Các mã kịch dạng Bash cài đặt để đo lường đại lượng đo tất máy tham gia vào kịch test Chúng cài đặt máy để điều khiển Sysstat [4] từ xa qua SSH C Kết Quả Thảo Luận Trong phần này, thảo luận chi tiết kết hai kịch test "Nhiều Xuất - Khơng có Đăng ký" "Nhiều Xuất - Chỉ có Đăng ký" Kịch lại lược bỏ giới hạn không gian báo 1) Nhiều Xuất - Khơng có Đăng ký: Hình ví dụ trường hợp có máy chủ (là thực thể máy ảo Azure mã A3 có cấu hình với lõi, CPU 1.6GHz 7GB RAM), máy chủ phụ (với cấu máy chủ chính), máy chủ mơi giới Mosquitto (A2, lõi, CPU 1.6GHz, 3.5 GB RAM) Số lượng luồng máy chủ phụ 2100 Mỗi luồng thực kết nối, tổng số kết nối 42000 Dịng chữ "2100.0.false" có nghĩa số lượng luồng máy chủ phụ 2100 với chất lượng dịch vụ từ "false" ngầm thông điệp kiểu trì Nhìn vào đồ thị Hội thảo quốc gia lần thứ XXII: Một số vấn đề chọn lọc Công nghệ thông tin truyền thông – Thái Bình, 28-29/6/2019 Hình 5: Tải CPU nhớ sử dụng máy chủ môi giới MQTT kịch Nhiều Xuất Khơng có Đăng ký kết luận với cấp độ chất lượng dịch vụ (QoS): • Máy chủ mơi giới Mosquitto tiêu thụ CPU theo thứ tự: QoS > QoS ≈ QoS • Máy chủ mơi giới Mosquitto tiêu thụ nhớ theo thứ tự: QoS > QoS > QoS Điều giải thích cách định nghĩa QoS MQTT Với QoS 0, Xuất gửi thông điệp mà đợi xác nhận từ phía máy chủ mơi giới, thông điệp gửi với số lượng lớn đồng nghĩa với việc máy chủ môi giới phải xử lý nhanh tiêu thụ CPU lớn Mặt khác, với QoS 2, đồ thị ổn định hơn, số lượng thông điệp gửi ổn định kết đáng tin cậy Chúng ta tìm điểm bão hịa (tại đỉnh đồ thị) sử dụng chúng để thiết lập ngưỡng định cho cỗ máy thực việc co dãn tài nguyên mô tả [7] 2) Nhiều Xuất - Chỉ có Đăng ký: Trong Hình 6, dịng chữ "2100.0.falseSub.1.0.false" số lượng luồng máy chủ phụ 2100 với chất lượng dịch vụ Từ "false" ngầm thông điệp kiểu trì "Sub" Đăng ký với chất lượng dịch vụ tham số xóa phiên "false" Nhìn vào đồ thị, nhận kịch "Nhiều Xuất - Chỉ có Đăng ký", máy chủ môi giới Mosquitto phải xử lý nhiều để gửi thơng điệp tới Đăng ký có thuê bao thông điệp Bởi hai đại lượng tải CPU nhớ tiêu thụ nhiều so sánh với kịch "Nhiều Xuất - Khơng có Đăng ký" Trong hai kịch bản, QoS đem lại kết tin cậy đồ thị cấp độ QoS ổn định hẳn Đồ thị tải CPU xu hướng với đồ thị nhớ bị lược bỏ để tiết kiệm khơng gian báo V KẾT LUẬN Điện tốn đám mây ngày trở nên phổ biến quan trọng Trong cách mạng IT này, việc tìm hiểu giao thức MQTT đặc biệt cần thiết làm tăng hiệu ứng dụng IoT giúp kết nối hàng tỷ thiết bị lại với mức độ chưa thấy Đóng góp chúng tơi phát triển MQTTBech, công cụ để đo kiểm giao thức MQTT sử dụng máy chủ môi giới Bằng cách sử dụng MQTTBench, giả lập thành công trường hợp với 42000 kết nối MQTT tới máy chủ môi giới Mosquitto sử dụng máy ảo tảng điện toán đám mây Windows Azure Kết cho thấy MQTTBench hoàn toàn hiệu phù hợp với nhu cầu đo kiểm giao thức MQTT với test hiệu test tải lớn để tìm điểm bão hịa cho cỗ máy điều khiển co dãn Điều giúp điều khiển kiểm soát số lượng hiệu máy chủ môi giới MQTT mặt cung ứng điều chỉnh tối ưu cần Hội thảo quốc gia lần thứ XXII: Một số vấn đề chọn lọc Cơng nghệ thơng tin truyền thơng – Thái Bình, 28-29/6/2019 Hình 6: Bộ nhớ máy chủ mơi giới MQTT kịch Nhiều Xuất - Chỉ có Đăng ký CẢM TẠ Nghiên cứu thực phạm vi đề tài khoa học mã số CS19.19 Viện Công nghệ thông tin GUST.STS.ĐT2019-TT02 Học viện Khoa học Công nghệ, Viện hàn lâm KHCN Việt Nam hỗ trợ Ban Quản lý dự án FIRST, Bộ Khoa học Công nghệ thông qua Thỏa thuận tài trợ Số 12/FIRST/2a/IoIT Nghiên cứu hỗ trợ dự án mã số VNU QMT.17.03 Đại học Quốc gia Hà Nội TÀI LIỆU [1] Birman, K and Joseph, T "Exploiting virtual synchrony in distributed systems" in Proceedings of the eleventh ACM Symposium on Operating systems principles (SOSP ’87), 1987 pp 123–138 [2] MQTT, ‘http://mqtt.org/,” visited on April 2019 [3] Apache JMeter, ‘http://jmeter.apache.org/,” visited on April 2019 [4] Sysstat, ‘http://sebastien.godard.pagespersoorange.fr/,” visited on April 2019 [7] L M Pham and T M Pham, "Autonomic finegrained migration and replication of componentbased applications across multi-clouds," 2015 2nd National Foundation for Science and Technology Development Conference on Information and Computer Science (NICS), HCM City, 2015, pp 5-10 [8] CLIF Server, ‘http://clif.ow2.org,” visited on April 2019 [9] Gatling, ‘http://gatling.io,” visited on April 2019 [10] Durkop, L.; Czybik, B.; Jasperneite, J., "Performance evaluation of M2M protocols over cellular networks in a lab environment," ICIN, pp.70,75, 1719 Feb 2015 [11] Thangavel, D.; Xiaoping Ma; Valera, A.; HweeXian Tan; Tan, C.K.-Y., "Performance evaluation of MQTT and CoAP via a common middleware," IEEE ISSNIP, pp.1,6, 21-24 April 2014 [12] Giuliani, A., "MQTT benchmarks with RabbitMQ & ActiveMQ," June 2014 [Online] Available: http://www.ekito.fr/people/mqtt-benchmarksrabbitmq-activemq/ [5] Mosquitto, ‘http://mosquitto.org/,” visited on April 2019 [13] Scalagent, "Benchmark of MQTT servers," Jan 2015 [Online] Available: www.scalagent.com/IMG/pdf/Benchmark_MQTT_servers-v1-1.pdf [6] E Cecchet, V Udayabhanu, T Wood, and P Shenoy, "BenchLab: An Open Testbed for Realistic Benchmarking of Web Applications," in USENIX WebApps, 2011, pp 4–4 [14] SmartBear, "MQTT Test Steps," [Online] Available: https://smartbear.com/plugins/mqtt-test-stepspage/, visited on April 2019 ... nguồn mở đo kiểm vài chức giao thức MQTT Trong giới hạn kiến thức chúng tôi, khơng có cơng cụ mã nguồn mở đo kiểm MQTT cho ứng dụng IoT môi trường đám mây Bằng việc phát triển trình cắm MQTTBench,... cho giao thức MQTT nói riêng điểm đóng góp muốn giới thiệu báo Tầm quan trọng giao thức MQTT giới IoT ngang giao thức HTTP giới Web Thực vậy, có cơng cụ mạnh mẽ cho việc đo kiểm HTTP, thiếu công. .. khoảng trống tồn giới IoT công cụ đo kiểm linh hoạt cho giao thức sử dụng phổ biến MQTT MQTTBench phát triển mở rộng từ JMeter, tất người sử dụng JMeter trải nghiệm việc đo kiểm JMS Hình 1: Kiến

Ngày đăng: 24/03/2022, 09:29