WSS LTM not passing data correctly
Hi,
i'm having some trouble about running an Virtual Server in front of a K3s ingress.
I've setted up 4 virtual server, all point to the same destination address, but different port (different pool but final address is the same, only change the port)
For Http/s, MQTT/s zero problem, but when i'm trying to redirect the http traffic using websocket i've several problem.
Destination return several errors based on the Virtual Server tuning.
Actually i've the virtual server configured in TCP with HTTP profile (Websocket enable both client and server) and in security profile i've created a wss security to allow * addresses (HTTP,HTTPS,WS,WSS)
But when we try the application it return ERR_TRUNCATE_HEADERS. I've also create a new http profile based on the default, to increse the size of che Header Payload.
Also no i'm not checking the payload, and ignore any possible malformed packet (just to let everything pass).
On the application event log i can see all the request and i see the green thick so i suppose that everything is fine on the F5 side.
How can i be sure of that? Is there a way to do extra check or am i missing something?
Thank you guys.
Paolo
Hi Paolo,
Thank you for your time today, im glad we could determine what was wrong.
A few steps we took that helped us confirm first off, that no truncating was happening in the headers, was to capture the connection in a tcpdump with the f5 high detail peer options (:nnnp), that showed us the payload on the backend as being perfect. No truncating happening.
tcpdump -vvv -s0 -ni 0.0:nnnp host <f5 VIP> and port <f5 virtual server port>
One of the key factors to identifying what was the issue here was something you sent me in a private message. Removing the http profile, which subsequently resultied in the websocket, waf and clientssl profile to be removed, allowed the connection to work. The wss:// call, not ws://.
Because this was a WSS or WebSocket Secure call, the server was expecting a TLS session, and our configuration was doing TLS offloading at the f5, and sending the traffic plain text to the server. Why the application generated an "ERR_TRUNCATE_HEADERS" message is purely speculation at this point, but i suspect it was because the headers were all encrypted and thus exceeded the maximum for the application.
I would normally expect to see 400 errors with HTTP, so the backend encryption wasnt jumping out at me sooner.
Im glad that we could resolve this matter, and please let myself and f5 know if there is anything else we can do to assist you in the future.
Cheers
Mike