[Ryu-devel] Ryu manager doesn't send FIN/ACK in response to FIN
Brought to you by:
nz_gizmoguy
From: Guru C. P. <gpe...@Br...> - 2015-07-27 07:15:47
|
Hi, Issue: ===== When an Openflow client closes the connection with Ryu Manager by sending a FIN, only ACK is sent in response. FIN/ACK is not received by Openflow client. The TCP connection on Ryu Manager is moved to CLOSE-WAIT state. This causes our switch (Openflow client) to wait in FIN-WAIT-2 state and then sends a Reset to Ryu Manager after some timeout. Again when the switch uses the same source port for reconnection, the connection fails. PFA packet dissections text file "ryn-find-issue.txt" with this mail. Further observations: ================= Thereafter, if I try to reconnect to Ryu Manager using same source port, the client is stuck in SYN-SENT state. The below are the only ways to recover: 1. Killing the Ryu manager sends the pending FIN/ACK messages. 2. Reconnecting to Ryu Manager using different source port. a. At this state Ryu Manager is sending FIN/ACK for the previous source port also. Please resolve this issue, I suspect that TCP connection cleanup is being performed only when some other activity happens. Packet capture explanation: ====================== 1. RY Manager IP: 10.37.73.180 Port: 6633 2. Switch (Openflow client) IP: 10.37.73.181 Source Port: 7802 Packet 1: Client sends a FIN to Ryu Manager Packet 2: Ryu Manager sends an ACK Packet 3: Client sends a RST to forcefully close the connection. (ICMP destination unreached is received for this message) Packet 4,5: ICMP destination port unreached messages Packet 6,N: Client keeps on resending the SYN messages. (Client reuses the same source port 7801 for reconnection) Logs on Ryu Manager: ================= connected socket:<eventlet.greenio.base.GreenSocket object at 0x7f49316759d0> address:('10.37.73.181', 7801) hello ev <ryu.controller.ofp_event.EventOFPHello object at 0x7f4931675ad0> move onto config mode EVENT ofp_event->dpset EventOFPSwitchFeatures switch features ev version: 0x4 msg_type 0x6 xid 0xa85d7a34 OFPSwitchFeatures(auxiliary_id=0,capabilities=79,datapath_id=8398923215522496512,n_buffers=0,n_tables=1) move onto main mode EVENT ofp_event->dpset EventOFPStateChange DPSET: register datapath <ryu.controller.controller.Datapath object at 0x7f4931675a50> EVENT ofp_event->dpset EventOFPStateChange DPSET: unregister datapath <ryu.controller.controller.Datapath object at 0x7f4931675a50> Netstat output on Linux where Ryu is installed: =================================== tcp 0 0 Ubuntu-73.180:6633 10.37.73.181:7801 CLOSE_WAIT Thanks & regards, Guru Chaitanya Perakam |