Ứng dụng kỹ thuật truyền thông điệp trên giao thức mạng fleet đặc trưng của QNX4 trong kiểm tra kỹ thuật khối máy tính BM-1
Bạn đang xem tài liệu "Ứng dụng kỹ thuật truyền thông điệp trên giao thức mạng fleet đặc trưng của QNX4 trong kiểm tra kỹ thuật khối máy tính BM-1", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- ung_dung_ky_thuat_truyen_thong_diep_tren_giao_thuc_mangfleet.pdf
Nội dung text: Ứng dụng kỹ thuật truyền thông điệp trên giao thức mạng fleet đặc trưng của QNX4 trong kiểm tra kỹ thuật khối máy tính BM-1
- Thông tin khoa học công nghệ ỨNG DỤNG KỸ THUẬT TRUYỀN THÔNG ĐIỆP TRÊN GIAO THỨC MẠNGFLEET ĐẶC TRƯNG CỦA QNX 4 TRONG KIỂM TRA KỸ THUẬT KHỐI MÁY TÍNH BM-1 Phạm Xuân Công1,*, Dương Mạnh Cường1, Nguyễn Đức Thịnh2 Tóm tắt: FLEET là một giao thức đặc trưng duy nhất chỉ có trên QNX, là giao thức mạng cực nhẹ, tốc độ cao. Về mặt logic, nhờ có thiết kế sáng tạo và tính năng phong phú, QNX FLEET có thể “biến” các máy tính độc lập trở thành một siêu máy tính. Khối BM-1 là khối máy tính điều khiển máy КБ163П trong hệ thống điều khiển phóng tên lửa 3M-24Э trên tàu (КАСУ).Bài báo này trình bày một số ứng dụng kỹ thuật truyền thông điệp trên giao thức QNX FLEET trong kiểm tra tình trạng kỹ thuật của khối BM-1. Từ khóa: Tên lửa 3M-24Э, Hệ thống điều khiển phóng tên lửa KACY, BM-1, QNX, FLEET. 1. ĐẶT VẤN ĐỀ Hệ thống điều khiển phóng tên lửa 3M-24Э trên tàu (КАСУ) bao gồm thiết bị trung tâm КУ163Ц trên khoang điều khiển và các thiết bị КБ163П giao tiếp trực tiếp với các quả đạn trong ống phóng. Thiết bị КУ163Ц có 2 khối máy tính là ЦП và BM-OC, mỗi thiết bị КБ163П chứa 1 khối máy tính BM-1. Các khối máy tính này đều cài đặt các chương trình điều khiển trên hệ điều hành thời gian thực chuyên dụng QNX 4.25, chúng được kết nối và giao tiếp với nhau qua mạng Ethernet. Hệ điều hành QNX 4.25 có giao thức mạng đặc trưng FLEET (cũng là tiền thân của mạng QNET trên QNX 6), là một giao thức mạng cực nhẹ và tốc độ cao, độc quyền của QNX. Các máy tính chạy hệ điều hành QNX 4.25 kết nối với nhau thông qua mạng ethernet, gọi là các node, mỗi node máy tính có một số hiệu là một số nguyên dương khác nhau tính từ 1 (gọi là node_id) được lưu trong giá trị biến môi trường $NODE. Một hệ thống điều khiển trên tàu thường có từ 4 đến 6 node máy tính như vậy, ví dụ như trên lớp tàu 1241.8, hệ thống KACY có 6 node, hệ thống radar 3Ц-25Э có 4 node. Về mặt logic, giao thức FLEET cho phép nhóm các máy tính độc lập có thể hoạt động như một siêu máy tính, nghĩa là một tác vụ trên một máy tính này có thể thực thi và sử dụng tài nguyên (bộ nhớ, dữ liệu, thiết bị ngoại vi ) trực tiếp trên máy tính khác hoàn toàn giống như tại máy tính chứa nó. Các tác vụ trên toàn hệ thống có thể tương tác với nhau dựa trên truyền thông điệp theo cơ chế gửi/nhận/phản hồi. Bài báo này giới thiệu một số kỹ thuật truyền thông điệp và ứng dụng trong bài toán kiểm tra kỹ thuật của khối BM-1. 2. GIAO THỨC MẠNG FLEET ĐẶC TRƯNG CỦA QNX 4 2.1. Giao thức QNX FLEET FLEET là giao thức được xây dựng dựa trên kiến trúc truyền thông điệp của hệ điều hành QNX, nên nó hết sức linh hoạt với các đặc điểm: - Fault-tolerant networking: Tính năng mạng chịu lỗi - Load-balancing on the fly: Tính năng cân bằng tải trong khi chạy - Efficient performance: Hiệu năng cao - Extensible architecture: Kiến trúc linh hoạt Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2017 249
- Công nghệ thông tin - Transparent distributed processing: Xử lý phân tán trong suốt. Trên mạng FLEET này, khi một đường cáp nối hoặc thiết bị phần cứng mạng bị lỗi, FLEET sẽ tự động tái định hướng lại dữ liệu theo đường khác. Việc này được tiến hành trong khi hệ thống đang hoạt động mà không ảnh hưởng gì đến ứng dụng. Hoạt động của mạng thường bị hạn chế bởi tốc độ máy tính và hạ tầng mạng. Với FLEET, dữ liệu có thể được truyền qua nhiều mạng một cách đồng thời, cho phép chúng ta có thể nhân đôi, nhân ba, thậm chí nhân bốn băng thông mạng bằng cách sử dụng nhiều card mạng trên mỗi máy tính và kết nối chúng qua các đường cáp khác nhau, thậm chí còn còn thể phối hợp đồng thời các card mạng trên cùng một máy tính. Chẳng hạn, trên card máy tính K30 của hệ thống M360 của tàu ngầm kilo sử dụng đồng thời tới 4 card mạng ethernet. Các driver mạng FLEET được thiết kế cho hầu hết các hạ tầng mạng. Khi một tiến trình gửi một khối lượng lớn dữ liệu thông qua mạng ethernet tới một tiến trình khác, thông lượng trên mạng đạt được là rất ấn tượng như bảng thống kê dưới đây: Bảng 1. Bảng so sánh hiệu năng QNX FLEET. Mạng Số lượng tiến trình client Thông lượng Ethernet 10 Mbit 1 1,1 triệu byte/giây Ethernet 100 Mbit 1 7,4 triệu byte/giây Nhờ FLEET, mạng QNX có khả năng linh hoạt hết sức mạnh mẽ. Các tiến trình mạng được thiết kế độc lập với hệ điều hành, cho phép ta có thể chạy hay dừng hệ điều hành bất cứ lúc nào. Điều này có nghĩa là chúng ta có thể bổ sung thêm các node vào mạng hoặc bớt các node ra mà không cần cấu hình lại hệ thống. Nhờ khả năng nối cầu mạng tự động, ta thậm chí còn có thể thêm một mạng vật lý khác vào mạng đang có. Các tiến trình mạng của FLEET được tích hợp sâu vào trong trái tim của hệ thống truyền thông điệp và quản lý tiến trình, làm cho IPC trên một node và trên toàn mạng là hoàn toàn như nhau. Do IPC là trong suốt đối với mạng, nên một mạng lưới các nút máy tính độc lập sẽ hoạt động giống như một siêu máy tính. Do đó, chúng ta sẽ không cần phải cấu hình các ứng dụng để chạy trên mạng nữa. QNX 4 chứa một số bộ công cụ phân tích, duy trì hoạt động của mạng rất mạnh như: alive thống kê các node máy đang hoạt động trên mạng, netboot cho phép khởi động một node máy tính thông qua mạng, netinfo thống kê thông tin sử dụng mạng 2.2. Kỹ thuật truyền thông điệp Trên hệ thống các node máy tính QNX 4 kết nối với nhau thông qua mạng ethernet, các tiến trình trên node máy này có thể trao đổi thông tin với tiến trình trên node máy khác thông qua các phương thức: - Gửi/nhận/phản hồi với những gói tin đơn giản - Bộ nhớ chia sẻ theo tiêu chuẩn POSIX với những dữ liệu lớn. QNX cung cấp thư viện các hàm truyền thông điệp cơ bản, cho phép các tiến trình có thể linh hoạt gửi/nhận/phản hồi cho nhau như bảng dưới đây. 250 P. X. Công, D. M. Cường, N. Đ. Thịnh, “Ứng dụng kỹ thuật truyền máy tính BM-1.”
- Thông tin khoa học công nghệ Bảng 2. Bảng các hàm truyền thông điệp đặc trưng QNX. Tên hàm Mục đích sử dụng Creceive() Kiểm tra xem có thông điệp nào được gửi đến từ tiến trình đặc Creceivemx() tả bởi PID Readmsg() Đọc n bytes vào bộ đệm từ tiến trình đặc tả bởi PID Readmsgmx() Đọc dữ liệu vào mảng các bộ đệm từ tiến trình đặc tả bởi PID Receive() Chờ một thông điệp từ tiến trình đặc tả bởi PID Receivemx() Lấy thông điệp nhận được từ một tiến trình nguồn, sau đó Relay() chuyển tiếp thông điếp tới tiến trình đích Reply() Phản hồi dữ liệu tới tiến trình PID. Sendmx() cho phép gửi Replymx() thông điệp theo mảng nhiều gói tin nhỏ. Send() Gửi một thông điệp tới tiến trình PID. Sendmx() cho phép gửi Sendmx() thông điệp theo mảng nhiều gói tin nhỏ. Gửi một thông điệp tới tiến trình gắn với một fd (file Sendfd() descriptor) nhất định. Sendfdmx() cho phép gửi mảng các Sendfdmx() thông điệp. Trigger() Kích thích một proxy để gửi thông điệp tới tiến trình sở hữu nó Writemsg() Ghi n bytes dữ liệu từ bộ đệm tới bộ đệm phản hồi đặc tả bởi Writemsgmx() một tiến trình PID Vi nhân QNX cung cấp khả năng truyền thông điệp thông qua các phiên bản khóa chờ của hàm Send(), Receive() và Reply(). Tức là, khi một tiến trình thực hiện hàm gửi Send() tới một tiến trình khác, nó sẽ bị khóa cho tới khi tiến trình kia thực hiện hàm Receive() để xử lý thông điệp và gọi hàm Reply() để trả lời. Nếu một tiến trình gọi hàm Receive() mà không có thông điệp nào đang đợi thì nó cũng bị khóa cho tới khi có tiến trình gọi hàm Send() tới nó. Bởi vì thông điệp được sao chép nguyên thủy trực tiếp từ tiến trình này tới tiến trình kia, nên hiệu năng trao đổi thông tin sẽ phụ thuộc vào băng thông của phần cứng mạng. Mọi dịch vụ hệ thống đều được triển khai dựa trên cơ chế nguyên thủy này. Hình 1. Các trạng thái thay đổi trong truyền thông điệp. Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2017 251
- Công nghệ thông tin Tiến trình có thể yêu cầu các thông điệp được giao trong thứ tự ưu tiên thay vì theo thứ tự thời gian, và hoạt động của tiến trình được xử lý ở mức ưu tiên của tiến trình có độ ưu tiên cao nhất đang bị khóa chờ dịch vụ. Giao tiếp mạng mức thấp được cài đặt trực tiếp trong vi nhân QNX và được cung cấp bởi trình quản lý mạng, có đầy đủ các chức năng cần thiết đề truyền thông điệp giữa các vi nhân với nhau trong mạng LAN. 2.3. Kỹ thuật gửi thông điệp nhiều mảnh kết hợp vùng nhớ chia sẻ Truyền thông điệp trên QNX cũng cho phép các bên có thể gửi tin nhắn thành nhiều phần nhỏ, các tin nhắn sẽ không bị chiếm một vùng nhớ liên tục trong bộ nhớ. Thay vào đó, cả hai tiến trình gửi và nhận có thể chỉ định một bảng cho biết nơi gửi và nhận được mảnh tin tồn tại trong bộ nhớ. Các tin nhắn gửi đi sẽ là khối header tách khỏi khối dữ liệu, làm tăng hiệu suất truyền tin. Ngoài ra, nếu cấu trúc dữ liệu là bộ đệm vòng, ta có thể cài đặt thông điệp gồm 3 phần, 1 header và 2 vùng riêng biệt bên trong bộ đệm vòng. Tệp tiêu đề thư viện sendmx.h chứa khai báo của hai kiểu cấu trúc dữ liệu MX _mxfer_entry và định nghĩa macro _setmx() để thiết lập cấu trúc này. Vùng nhớ chia sẻ là một phương thức truyền thông liên tiến trình có băng thông cao nhất. Khi một đối tượng chia sẻ được tạo ra, các tiến trình truy cập đến nó có thể sử dụng con trỏ để trực tiếp đọc/ghi dữ liệu lên đó. Như thế, bản thân việc truy cập đến đối tượng chia sẻ là không đồng bộ. Nếu một tiến trình đang cập nhật dữ liệu trên vùng nhớ chia sẻ, nó cần phải có phương thức chặn các tiến trình khác can thiệp vào vùng nhớ này. Để giải quyết xung đột, vùng nhớ chia sẻ thường được cài đặt chung với các phương thức đồng bộ hóa nguyên thủy. Nếu các cập nhật dữ liệu là nhỏ lẻ, thì bản thân các phương thức đồng bộ hóa nguyên thủy lại làm mất lợi thế băng thông cao của vùng nhớ chia sẻ. Do đó, vùng nhớ chia sẻ chỉ hiệu quả nhất đối với các khối dữ liệu lớn. Sự kết hợp của truyền thông điệp và vùng nhớ chia sẻ sẽ đạt được đồng bộ hóa tự nhiên và hiệu suất rất cao. Mô hình vùng nhớ chia sẻ đơn giản không thể được sử dụng giữa các tiến trình trên máy tính trong mạng. Nhưng, truyền thông điệp lại là mạng trong suốt. Như thế, server có thể sử dụng bộ nhớ chia sẻ cho các client cục bộ và truyền thông điệp đầy đủ dữ liệu cho các client ở xa. QNX là hệ điều hành dựa UNIX, nên nó cũng hỗ trợ giao thức trao đổi thông qua vùng nhớ chia sẻ theo tiêu chuẩn POSIX, với các hàm như trong bảng sau: Bảng 3. Bảng các hàm truyền thông điệp được cung cấp trên QNX. Tên hàm Mô tả Phân loại mmap() Ánh xạ địa chỉ tiến trình tới bộ nhớ POSIX mprotect() Thay đổi bảo vệ bộ nhớ POSIX munmap() Bỏ ánh xạ địa chỉ tới vùng nhớ POSIX shm_open() Mở một vùng nhớ chia sẻ POSIX shm_unlink() Gỡ bỏ vùng nhớ chia sẻ POSIX close() Đóng vùng nhớ chia sẻ POSIX Bỏ ánh xạ vùng nhớ, nhưng có thêm nhiều QNX Neutrino munmap_flags() điều khiển hơn munmap() 252 P. X. Công, D. M. Cường, N. Đ. Thịnh, “Ứng dụng kỹ thuật truyền máy tính BM-1.”
- Thông tin khoa học công nghệ Đồng bộ vùng nhớ chia sẻ với thiết bị lưu POSIX msync() trữ vật lý shm_ctl(), Tạo thuộc tính đặc biệt cho vùng nhớ chia QNX Neutrino shm_ctl_special() sẻ 3. ỨNG DỤNG TRONG KIỂM TRA KỸ THUẬT KHỐI BM-1 Nhóm phát triển ứng dụng chỉ tập trung vào các thuật toán và phương pháp kiểm tra, nội dung và cấu trúc gói tin cần trao đổi với khối BM-1. Việc triển khai truyền tin như thế nào là hoàn toàn do hệ điều hành QNX thực hiện. 3.1. Trao đổi thông tin với khối BM-1 Hệ thống КАСУ bao gồm 6 máy giao tiếp với nhau qua hai chuẩn kết nối là Ethernet và chuẩn đa truy cập nối tiếp MIL-STD-1553b. Cả 6 máy trên hệ thống đều cài hệ điều hành QNX 4.25, sử dụng chuẩn giao tiếp FLEET, được đánh số node từ 1 đến 6. Các khối BM-1 của thiết bị КБ163П được gắn node từ 3 đến 6, có các giắc cắm từ X1 đến X7. Toàn bộ quá trình trao đổi thông với khối BM-1 cũng như các module bên trong khối đều thực hiện qua các giắc cắm từ X1 đến X6, riêng cáp X7 (COM) được nhà sản xuất sử dụng để cập nhật và chỉnh sửa phần mềm. 3.2. Kiểm tra các module của khối BM-1 a) Nguyên lý hoạt động của thiết bị kiểm tra Quá trình kiểm tra có thể tóm lược như sau: Khối BM-1 cần kiểm tra được ghép nối với thiết bị kiểm tra tạo thành một hệ thống kết nối mạng nội bộ thông qua các cáp nối và giắc cắm từ X1 tới X6 (thuật ngữ hệ thống ở đây được hiểu là thiết bị kiểm tra đã kết nối đầy đủ với khối BM-1). Khi bắt đầu quá trình kiểm tra, thiết bị sẽ cấp nguồn lên BM-1, khối BM-1 thực hiện quá trình khởi động hệ điều hành và chế độ tự kiểm tra của nó. Khi khối BM-1 đã được kết nối với thiết bị kiểm tra và hệ thống đã hoạt động, phần mềm điều khiển trung tâm trên thiết bị kiểm tra sẽ gọi các phần mềm và phát ra các lệnh kích thích phần cứng để kiểm tra từng module của BM-1. Mạng QNX FLEET sẽ chuyển các phần mềm con lên BM-1 để thực hiện quá trình đó. Các phần mềm kiểm tra được chạy trên cả thiết bị kiểm tra (node 1) và trên khối BM-1 (là một trong các node 3, 4, 5, 6). Trong suốt quá trình đó, chúng sẽ liên tục trao đổi thông tin với phần mềm điều khiển trung tâm chạy trên thiết bị kiểm tra. Các thông tin trao đổi bao gồm các lệnh thực hiện, các lệnh logic, các lệnh đọc/ghi trên các cổng phần cứng, các gói tin kết quả. Phần mềm điều khiển trung tâm sẽ dùng hàm qnx_name_attach() để đăng ký một tên trên hệ thống. Các phần mềm kiểm tra module sẽ sử dụng hàm qnx_name_locate() để xác định pid của phần mềm điều khiển trung tâm, từ đó gọi hàm Send() để truyền các thông báo kết quả kiểm tra về. Việc kiểm tra các module khác nhau thì phương pháp thực hiện khác nhau, nhưng quá trình trao đổi với máy tính trung tâm cơ bản là hoàn toàn tương tự nhau. b) Một số kết quả thực hiện kiểm tra các module của khối BM-1 - Kiểm tra module CPU: Quá trình kiểm tra module CPU được tiến hành theo các bước sau: Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2017 253
- Công nghệ thông tin Bước 1: Tiến hành quét tham số, xác định tính hợp lệ của tham số. Chuẩn bị kiểm tra. Bước 2: Tạo một vùng segment overlay để phục vụ lấy thông tin của hệ điều hành thông qua hàm qnx_osinfo(). Bước 3: Thực hiện quá trình kiểm tra chi tiết các thành phần có thể kiểm tra của CPU: CMOS, dung lượng RAM, các cổng LPT, COM1, COM2, Ethernet. Bước 4: Xử lý kết quả kiểm tra. Thông báo cho phần mềm trung tâm. Kết thúc. - Kiểm tra module MCO: Quá trình kiểm tra module MCO được tiến hành theo các bước sau: Bước 1: Tiến hành quét tham số, xác định tính hợp lệ của tham số. Chuẩn bị kiểm tra. Bước 2: Thực hiện kiểm tra kết nối của MCO với CPU qua kênh giao tiếp ISA 8-bit Bước 3: Thực hiện kiểm tra kết nối của MCO với tên lửa qua kênh giao tiếp ARINC-429 trên cả 32 kênh. Bước 4: Xử lý kết quả kiểm tra. Thông báo cho phần mềm trung tâm. Kết thúc. - Kiểm tra module TX1-MP: Việc kiểm tra TX1-MP phải sử dụng card TX1- MP trên máy kiểm tra để tạo các gói tin trao đổi theo chuẩn MIL-STD-1553B. Quá trình kiểm tra tiến hành các bước như sau: Bước 1: Tiến hành quét tham số, xác định tính hợp lệ của tham số. Chuẩn bị kiểm tra. Bước 2: Mở kênh kết nối TMK. Kiểm tra ngắt và driver TX1. Bước 3: Thực hiện kiểm tra truyền dữ liệu trên cả 2 kênh cơ bản và dự phòng (bus A và bus B) trên cả 2 chế độ có giám sát và không giám sát (RT_MODE và BC_MODE). Bước 4: Xử lý kết quả kiểm tra. Thông báo cho phần mềm trung tâm. Kết thúc. - Kiểm tra module DI-32-5: Khối BM-1 có 2 module DI-32 có địa chỉ cơ sở lần lượt là 0x100 và 0x110. Quá trình kiểm tra mỗi module bao gồm các bước như sau: Bước 1: Tiến hành quét tham số, xác định tính hợp lệ của tham số. Chuẩn bị kiểm tra. Bước 2: Tạo các kích thích phần cứng lên card DI để đọc dữ liệu vào. Việc kiểm tra được tiến hành đối với tất cả 32 kênh. Bước 3: Xử lý kết qủa kiểm tra. Thông báo cho phần mềm trung tâm.Kết thúc. - Kiểm tra module DO-32-5: Quá trình kiểm tra bao gồm các bước như sau: Bước 1: Tiến hành quét tham số, xác định tính hợp lệ của tham số. Chuẩn bị kiểm tra. Bước 2: Đẩy dữ liệu ra card DO-32 đồng thời sử dụng card DI-32 để thu dữ liệu đối chiếu.Việc kiểm tra được tiến hành đối với tất cả 32 kênh. Bước 3: Xử lý kết qủa kiểm tra. Thông báo cho phần mềm trung tâm.Kết thúc. 4. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN FLEET là một giao thức đặc trưng duy nhất chỉ có trên QNX, là giao thức mạng cực nhẹ, tốc độ cao. Khi một hệ thống các máy tính QNX nối mạng với nhau, các ứng dụng có thể chạy trên các máy khác cũng hoàn toàn giống như chạy tại máy cục bộ. Các thiết bị của hệ thống KACY 3Р-60УЭ-1241.8 sử dụng giao 254 P. X. Công, D. M. Cường, N. Đ. Thịnh, “Ứng dụng kỹ thuật truyền máy tính BM-1.”
- Thông tin khoa học công nghệ thức này trong toàn bộ quá trình hoạt động điều khiển chuẩn bị phóng và phóng tên lửa, cũng như quá trình kiểm tra hệ thống. Nhóm phát triển cũng sử dụng giao thức này trong việc thực hiện kiểm tra độc lập khối BM-1 bằng thiết bị kiểm tra chạy QNX 4. Kết quả thử nghiệm cho thấy quá trình hoạt động, truyền tải các ứng dụng, truyền tải lệnh, trao đổi thông tin được thực hiện rất tốt và tính ổn định, độ tin cậy cao. TÀI LIỆU THAM KHẢO [1]. Quân chủng Hải quân, Bộ Tài liệu Hướng dẫn sử dụng Tổ hợp 3Р-60УЭ- 1241.8. [2]. Phạm Hồng Long và các cộng sự, Nghiên cứu, thiết kế hệ thống tổ hợp thiết bị điều khiển phóng tên lửa КАСУ 3Р-60УЭ-12418 và thiết kế, chế thử máy КБ163П, Báo cáo tổng kết đề tài KC-T.11 (2017). [3]. QNX Software Systems Ltd, FLEET™ High-performance Networking for the QNX® RTOS, 1998. ABSTRACT APPLYING SOME MESSAGE-PASSING TECHNIQUES ON NETWORK PROTOCOL OF QNX 4 FLEET FOR BM-1 TECHNICAL DIANOGTICS A unique feature of theQNX realtime operating system, FLEET is an ultralight, high-speed networking protocol. Its innovative and feature-richdesign turns isolated machines into a singlelogical supercomputer. The BM-1 block is the control unit of the КБ163П in the 3M-24 missile control system on board (КАСУ). This article presents some message-passing techniques on network protocol of QNX 4 FLEET for BM-1 technical dianogtics. Keywords: 3M-24Э missile, КАСУ, BM-1, QNX, FLEET. Nhận bài ngày 16 tháng 8 năm 2017 Hoàn thiện ngày 26 tháng 11 năm 2017 Chấp nhận đăng ngày 28 tháng 11 năm 2017 Địa chỉ: 1Viện Công nghệ thông tin/Viện KH&CNQS; 2Ban CNTT/Bộ Tham mưu/Tổng cục Hậu cần. *Email: congpx@gmail.com. Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2017 255