一次现场问题的网络分析

现场BES(应用服务器)连接Oracle总是很慢,特别是初始化连接时,经常出现创建连接超时。Oracle服务监听在ipv6地址上,端口1521。服务端为两台服务器组成的RAC集群。IP地址分别为2409:8018:5c00:201::208,
2409:8018:5c00:201::209。
从java的调用栈来看,只能看到hang在连接Oracle的调用栈上。目前没有其他好办法,只能抓个包试试看:
logo
前三个包为连接x208的三次握手,接着Oracle drive发了一个Request,Connect包。我们先看1号包:
logo
目的地址为x208,客户端将报文发送给Mac为00:0c:bd:08:46:15的设备, 看不出什么异常。继续看2号包:
logo
信息来了,2号包却是一个MAC地址为e4:a8:b6:f6:95:12(Wireshark识别出为HuaweiTe) 的设备发出来的。因为远程协助,对方对环境等各方面不太清楚,不知道MAC地址为e4:a8:b6:f6:95:12的是个什么设备。但这里1号包与2号包走的不是一条线。而且Hop limit为61,那x208到客户端(也有可能根本没到x208)的应该经历了三(64-61)次路由转发。猜测客户端到208的拓扑应该是这样:
logo
继续向下看,发现能够正常通信的是发送到209的报文(第一个连接不成功,RAC切换到了第二个服务器)。23,24,25号包是与x209进行三次握手。
logo
发现23号也是发送到MAC为00:0c:bd:08:46:15的设备上,那00:0c:bd:08:46:15肯定不是208或209的MAC,这里猜测00:0c:bd:08:46:15是客户端的网关路由器。服务器208,209都在路由器后面。再看24号包:
logo
24号包也是由设备e4:a8:b6:f6:95:12发出。以及正常通信的26,27号包:
logo
logo
都是:32:09:be:88:d8:67 -> 00:0c:bd:08:46:15,e4:a8:b6:f6:95:12->32:09:be:88:d8:67。说明服务器返回到客户端的报文最终都由e4:a8:b6:f6:95:12设备转发一次。猜测e4:a8:b6:f6:95:12
很可能是一个firewall设备,拓拆接近下图:
logo
没有现场环境,只能猜到这些。已告知对方检测e4:a8:b6:f6:95:12设备对x208与x209的路由的情况.由于对网络拓扑接触的比较少,还望大家给予指正。