[SFC-205] SFC SCF classifier attempts to remove flows from the wrong table Created: 09/Nov/17  Updated: 27/Feb/18  Resolved: 27/Feb/18

Status: Verified
Project: sfc
Component/s: General
Affects Version/s: None
Fix Version/s: Oxygen

Type: Bug Priority: Medium
Reporter: Jaime Caamaño Ruiz Assignee: Jaime Caamaño Ruiz
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

Originally reported by ebrjohn

The classifier is being created in table=0 as expected, but when the classifier is deleted, it tries to delete from table=86. Here are the LOGs:

Classifier flow creation:

2017-10-30 12:06:03,763 | INFO  | pool-67-thread-1 | FlowSetWriterTask                | 348 - org.opendaylight.sfc.openflow-utils - 0.7.0.SNAPSHOT | FlowSetWriterTask SFF [openflow:156930464280132] NodeKey [NodeKey [_id=Uri [_value=openflow:156930464280132]]] TableKey [TableKey [_id=0]] FlowKey [FlowKey [_id=Uri [_value=MatchAny]]]
2017-10-30 12:06:03,764 | INFO  | pool-67-thread-1 | FlowSetWriterTask                | 348 - org.opendaylight.sfc.openflow-utils - 0.7.0.SNAPSHOT | FlowSetWriterTask SFF [openflow:156930464280132] NodeKey [NodeKey [_id=Uri [_value=openflow:156930464280132]]] TableKey [TableKey [_id=0]] FlowKey [FlowKey [_id=Uri [_value=sff1ACL1ACE1.in]]]
2017-10-30 12:06:03,778 | INFO  | pool-67-thread-1 | FlowSetWriterTask                | 348 - org.opendaylight.sfc.openflow-utils - 0.7.0.SNAPSHOT | FlowSetWriterTask SFF [openflow:156930464280132] NodeKey [NodeKey [_id=Uri [_value=openflow:156930464280132]]] TableKey [TableKey [_id=0]] FlowKey [FlowKey [_id=Uri [_value=sff1ACL1ACE1.out]]]

Classifier flow deletion:

2017-10-30 12:07:26,820 | INFO  | pool-67-thread-1 | FlowSetRemoverTask               | 348 - org.opendaylight.sfc.openflow-utils - 0.7.0.SNAPSHOT | FlowSetRemoverTask SFF [openflow:156930464280132] NodeKey [NodeKey [_id=Uri [_value=openflow:156930464280132]]] TableKey [TableKey [_id=82]] FlowKey [FlowKey [_id=Uri [_value=sff1ACL1ACE1.in]]]
2017-10-30 12:07:26,820 | INFO  | pool-67-thread-1 | FlowSetRemoverTask               | 348 - org.opendaylight.sfc.openflow-utils - 0.7.0.SNAPSHOT | FlowSetRemoverTask SFF [openflow:156930464280132] NodeKey [NodeKey [_id=Uri [_value=openflow:156930464280132]]] TableKey [TableKey [_id=82]] FlowKey [FlowKey [_id=Uri [_value=sff1ACL1ACE1.out]]]

The TableKey is different when creating and deleting. Narrowed it down to where in the code this happens, but Im not sure what's going on there:

/home/bjohnson/projects/odl/sfc/sfc-classifiers/sfc-scf-openflow/src/main/java/org/opendaylight/sfc/scfofrenderer/processors/NshProcessor.java 

Starting at Line 100

        // add a classifier
        if (addClassifier) {
            // write the flows into the classifier
            LOG.info("processAce - About to create flows");
            theFlows.add(classifierInterface.initClassifierTable(nodeName));
            theFlows.add(classifierInterface.createClassifierOutFlow(flowKey, match, nsh.get(), nodeName));
            theFlows.addAll(classifierInterface.createDpdkFlows(nodeName, nsh.get().getNshNsp()));
        } else {
            LOG.info("processAce - About to delete the *out* flows");
            theFlows.add(classifierHandler.deleteFlowFromTable(nodeName,
                    flowKey, ClassifierGeniusIntegration.getClassifierTable()));    <== This thing always returns NwConstants.SFC_TRANSPORT_CLASSIFIER_TABLE = 86
        }


 Comments   
Comment by Jaime Caamaño Ruiz [ 09/Nov/17 ]

https://git.opendaylight.org/gerrit/#/c/65356/

Generated at Wed Feb 07 20:38:54 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.