Closed longmaythesunshine-zx closed 4 months ago
请求报文含magic string "UDPSTATUS",tengine会回包"UDPOK"
感谢解答~ 我发现我们健康检查的探测报文并不能通过。看了下ngx_xquic_recv.c中 会对udp报文做一个简单的头检测 ` / check QUIC magic bit / if (!NGX_XQUIC_CHECK_MAGIC_BIT(packet->buf)) { ngx_log_error(NGX_LOG_WARN, c->log, 0, "|xquic|invalid packet head|"); return; }
` 看起来是需要第一个字符的第二个二进制位是1才行。我看字母都是在这个区间,但是数字不行,我测试了一下也确实如此。
不知道咱们后续有没有考虑优化这块健康检查逻辑?在头检测前先进行healcheck? 以及后续将健康检查报文配置化?这样方便我们自定义配置~
我们接入架构是 lvs + tengine。lvs 会定期像tengine发送几个udp报文,需要tengine回复指定报文udp才认为健康。但实际使用中xquic会认为这是个错误请求,tengine不会返回任何数据,导致tengine节点会被认为一直不可用。不知道有没有什么方案解决?