[OPNFLWPLUG-551] controller becomes deadlocked after arp packet floods Created: 22/Sep/15 Updated: 27/Sep/21 Resolved: 01/Jun/17 |
|
| Status: | Resolved |
| Project: | OpenFlowPlugin |
| Component/s: | General |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | ||
| Reporter: | Tony Huang | Assignee: | Unassigned |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: Linux |
||
| Attachments: |
|
| External issue ID: | 4335 |
| Description |
|
Here I have encountered a problem when testing the ODL performance. The following is the way how i did. I wrote a test program sending arp packets to ODL at some rate. when the rate reaches a relative high level, ODL stops replying arp packet, and it seems to be deadlocked. I followed ODL and figure the reason out. Firstly, the QueueHarvester find out that the packets from switch belong to packet-in and forward them to MD-SAL. And then MD-SAL uses distruptor to push notification. Finally packet handler in L2switch decode the packet from MD-SAL and publich the packet to MD-SAL again. Here is the key section. Disruptor uses ring buffer to store packets. If the buffer is full, provider has to wait consumer to pick packet out. When the packets flood, packet handler cannot process in time, so ring buffer in distruptor has no space some time later. After this time QueueHarvester drops all packet because ring buffer is full, while packet handler is also waiting to publich decoded packet, they are deadlocked. |
| Comments |
| Comment by Tony Huang [ 22/Sep/15 ] |
|
Attachment file_4335.txt has been added with description: Thread [OFmsgHarvester-0], Thread [OFmsgProcessor-1] and Thread [pool-28-thread-1] call stacks |
| Comment by Michal Rehak [ 12/Nov/15 ] |
|
Hi Tony, https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin::LiProposal_dev_setup |
| Comment by Jozef Bacigal [ 01/Jun/17 ] |
|
He design is deprecated in carbon release and will be abandoned in nitrogen release. In carbon and boron release is problem with threads solved by https://git.opendaylight.org/gerrit/#/c/58100/1 and cherrypicks. Closing as fixed |