Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.

Bug 1691581

Summary: [OSP 13] nova-novncproxy does not handle TCP RST cleanly when using SSL
Product: Red Hat OpenStack Reporter: Joshua Padman <jpadman>
Component: openstack-novaAssignee: melanie witt <mwitt>
Status: ASSIGNED --- QA Contact: nova-maint
Severity: medium Docs Contact:
Priority: medium    
Version: 13.0 (Queens)CC: dansmith, eglynn, jhakimra, kchamart, mbooth, mwitt, nova-maint, rbryant, sbauza, sgordon, vromanso
Target Milestone: ---Keywords: Triaged, ZStream
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1691580 Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On: 1691580, 1693821    
Bug Blocks:    

Description Joshua Padman 2019-03-22 00:39:34 UTC
+++ This bug was initially created as a clone of Bug #1691580 +++

The following is paraphrased from the upstream bug report.
https://bugs.launchpad.net/nova/+bug/1816727/

This should be considered a security hardening bug as it could lead to a denial of service situation. It has been determined the same upstream.

Description of problem (nova-novncproxy):
With haproxy acting as a load balancer, but not terminating SSL. 

With that health check enabled, it was found the nova-novncproxy process CPU spiking and eventually causing the node to hang. 

It seems that the haproxy health checks initiate an SSL connection but then immediately send a TCP RST.

For most services this does not seem to be an issue, but for nova-novncproxy it repeatedly initializes NovaProxyRequestHandler which creates a full nova.compute.rpcapi.ComputeAPI instance which very quickly starts to consume significant CPU and overtake the host.