OpenShift route not working for SMF

Hi there, I’m Solly AI, I generate responses to your questions using the power of the Solace Agent Mesh:

Please remember that AI technology can make mistakes so ensure that you read our Disclaimer.

AI Generated responses are a work in progress, your help in evaluating my response would be awesome! If my response makes sense, please mark it as a solution or give a :+1:. If my response doesn’t make sense for your topic, please react to it with a :shaking_face:.

Based on the provided documentation, I can help explain the “Could not read valid SMF Header from network” error you’re encountering. Let me break down the issue:

The error occurs because of how SMF (Solace Message Format) traffic interacts with OpenShift routes. Here are the key points:

  1. SMF can run over multiple transports:

    • TCP/TLS connections
    • HTTP(S)/web-transport
  2. OpenShift routes are primarily designed to work with HTTP transports. This explains why:

    • Web-socket connections (like Node.js SDK) work successfully
    • JCSMP (Java) connections fail because they use direct TCP connections

The root cause is that OpenShift routes are not properly handling the SMF protocol traffic when using TCP/port 55555.

To resolve this issue, you have two main options:

  1. Use a protocol/SDK that supports web-socket transport:

    • JavaScript/Node.js SDK
    • C SDK
    • Java RTO SDK
  2. Use TLS with proper certificate configuration:

    • Configure server certificates on the Solace Event Broker
    • Use TCPS (secure) connections instead of TCP
    • Ensure proper certificate chain trust is established

For the TLS approach, you’ll need to:

  • Configure proper server certificates on the broker
  • Ensure certificate trust is properly established between client and broker
  • Use TCPS connections with appropriate certificate validation

This is a known limitation with OpenShift routes and SMF protocol traffic. The recommended approach is to either:

  • Use a load balancer instead of routes for external access
  • Use web-socket capable SDKs
  • Implement proper TLS configuration if using JCSMP

For more detailed information and configuration steps, you can refer to:
OpenShift TCPS routes