Components, ports and protocols

This section will go into some detail on the components, ports and protocols that are associated with the IMS platform.

Components

The IMS is broken into a few distinct components; most of which run inside their own Docker containers; here is a description of the components:

  • Front end
    • Hosts all the web application content
  • API
    • Based on Django
    • Handles database maintenance
  • Database
    • PostgreSQL with PostGIS
  • Back end
    • Handles all the polling engines
    • Handles the triggering and alerting system
  • Message queue
    • RabbitMQ (AMQP message broker)
    • Provides the communications bus for the backend (enables backend to be distributed if need be)
  • Docker proxy (runs natively, not in a Docker container)
    • Handles the proxying of “agent” communications (from TracBoxes, TapBoxes, etc) into the backend
  • Imagery server
    • Hosts any custom map tiles or terrain the customer may have
    • Is capable of consuming GeoTIFFs and converting to map tiles


IMS component interactions

Ports and protocols

The IMS uses a number of different ports and protocols for different purposes- the most diverse of which are those that make up all the polling engines. Here is a breakdown:

  • Front end
    • listens on
      • TCP port 80 (HTTP)
      • TCP port 443 (HTTPS)
  • API
    • listens on
      • TCP port 8000 (HTTP)
      • TCP port 8443 (HTTPS)
  • Database
    • listens on
      • TCP port 5432 (PostgreSQL backend protocol)
  • Message queue
    • listens on
      • TCP port 5672 (AMQP)
      • TCP port 15672 (HTTP on custom port for administration)
  • Docker proxy
    • listens on
      • UDP port 13337 (IMS agent protocol, external receive)
    • forwards to
      • UDP port 13338 (IMS agent protocol, external transmit)
  • Imagery server
    • Listens on TCP port 6080 (HTTP on custom port)
  • Back end
    • listens on
      • UDP port 13340 (IMS agent protocol, internal receive)
      • UDP port 13339 (IMS agent protocol, internal transmit)
    • interacts with API on
      • TCP port 8000 (HTTP)
      • TCP port 8443 (HTTS)
    • interacts with database on
      • TCP port 5432 (PostgreSQL backend protocol)
    • interacts with message queue on
      • TCP port 5672 (AMQP)
    • interacts with devices using IMCP (ping) and
      • 3DP Hornet w/ 802.11 card (server-side) using SSH
      • 3DP Hornet w/ MEA card (client-side) using custom IMS agent protocol (UDP ports 13337 and 13338)
      • ADSL modem using Telnet (TCP port 23)
      • Axis Q-series camera using HTTP (TCP port 80)
      • Cambium PMP4xx device using HTTP (TCP port 80)
      • Cambium PTP6xx microwave radio using HTTP (TCP port 80)
      • Cambium PTP8xx microwave radio using SNMP (UDP port 161)
      • Cambium ePMP device using SSH (TCP port 22)
      • Cisco Wireless LAN Controller using SSH (TCP port 22)
      • Cisco switch using SNMP (UDP port 161)
      • Cisco wireless access point (nothing, data comes from WLC)
      • Cisco wireless client using SNMP (UDP port 161)
      • ESXi host using SNMP (UDP port 161)
      • Exalt microwave radio using SNMP (UDP port 161)
      • Huawei AR-series router using SNMP (UDP port 161)
      • Hyper-V Host using using SNMP (UDP port 161)
      • MTGA Thumb GPS (server-side) using HTTP (TCP port 80)
      • Mikrotik RB-series access point using SNMP (UDP port 161)
      • MineStar Fleet FMS server using HTTP (TCP port 8080)
      • MineStar Terrain FMS server using ODBC (TCP port 1433)
      • Motorola AP71xx access point using SSH (TCP port 22)
      • Motorola IAP access point using SNMP (UDP port 161)
      • Motorola RFS Controller using SSH (TCP port 22)
      • Moxa/Trimble - TCP 4001 using a custom protocol (TCP port 4001)
      • OpenWrt wireless router using SSH (TCP port 22)
      • Other (nothing, ping-only polling)
      • RAD Airmux device using Telnet (TCP port 22) and HTTP (TCP port 80)
      • SAEtech MeshBox (client-side) using custom IMS agent protocol (UDP ports 13337 and 13338)
      • SAEtech TracBox (server-side) using HTTP (TCP port 80)
      • SAF microwave radio using SNMP (UDP port 161)
      • Sony IPELA camera using HTTP (TCP port 80)
      • TriStar MPPT using HTTP (TCP port 80)
      • Ubiquiti device using SSH (TCP port 22)
      • Ubiquiti device with FTP Firmware using HTTP (TCP port 80)
      • Wenco FMS server using ODBC (TCP port 1433)
      • Windows System using WMI/Windows RPC (TCP port 135 then a random negotiated port)