Uploaded image for project: 'ONOS'
  1. ONOS
  2. ONOS-7558

Assign switch to controller failure

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 1.13.0
    • Fix Version/s: 1.13.0
    • Component/s: None
    • Environment:

      ONOS_APPS: drivers,metrics,openflow

      3 to 7 ONOS node ( More number of nodes, more chance it can occur.)

      Happens inconsistently. Once in 5 times to 20 times.

       

    • Epic Link:
    • Sprint:
      N Sprint #5 - QA

      Description

      When running onos with the Mininet

      Custom Topology ( topo-perf-2sw.py ) :

              s1 = self.addSwitch( "s1", dpid="0000000000000001" )
      
              h1 = self.addHost( "h1" )
              self.addLink( s1, h1 )
      sudo mn --custom ~/mininet/custom/topo-perf-2sw.py --topo mytopo --mac --controller remote --switch ovsk,protocols=OpenFlow13

       Then, assign switches to controller :

      sh ovs-vsctl set-controller s1 tcp:10.192.19.111:6653

      Once in 5-20 times frequency, it fails to assign controller since it fails to find the device with switch's dpid.

       

      Starting seeing this issue after the patchset :

      https://gerrit.onosproject.org/#/c/17487/

      From the new function:

      private boolean isGroupCapable(OpenFlowSwitch sw) {
      Driver driver = driverService.getDriver(DeviceId.deviceId(Dpid.uri(sw.getDpid())));
      if (driver == null) {
      return true;
      }
      String isGroupCapable = driver.getProperty(GROUP_CAPABLE);
      return isGroupCapable == null || Boolean.parseBoolean(isGroupCapable);
      }

      When it tries to get driver, it fails to find the device:

      failing point : 
      driverService.getDriver(DeviceId.deviceId(Dpid.uri(sw.getDpid())));

      and throws an exception:

      2018-03-23 13:08:03,331 | INFO  | onos-of-worker-1 | OFChannelHandler                 | 167 | New switch connection from /10.192.19.69:54546
      
      2018-03-23 13:08:03,376 | INFO  | onos-of-worker-0 | OFChannelHandler                 | 167 | Sending OF_13 Hello to /10.192.19.69:54545
      
      2018-03-23 13:08:03,409 | INFO  | onos-of-worker-0 | OFChannelHandler                 | 167 | Received switch description reply OFDescStatsReplyVer13(xid=4294967288, flags=[], mfrDesc=Nicira, Inc., hwDesc=Open vSwitch, swDesc=2.3.0, serialNum=None, dpDesc=None) from switch at /10.192.19.69:54545
      
      2018-03-23 13:08:03,411 | INFO  | onos-of-worker-1 | Controller                       | 167 | Driver 'ovs' assigned to device 00:00:00:00:00:00:00:01
      
      2018-03-23 13:08:03,417 | INFO  | onos-of-worker-1 | ntrollerImpl$OpenFlowSwitchAgent | 167 | Added switch 00:00:00:00:00:00:00:01
      
      2018-03-23 13:08:03,738 | ERROR | onos-of-worker-0 | OFChannelHandler                 | 168 | Error while processing message from switch NiciraSwitchHandshaker{session=10.192.19.69:54545, dpid=00:00:00:00:00:00:00:01}state WAIT_DESCRIPTION_STAT_REPLY
      
      org.onlab.util.ItemNotFoundException: Device not found
      
      at org.onlab.util.Tools.nullIsNotFound(Tools.java:181)[126:org.onosproject.onlab-misc:1.13.0.SNAPSHOT]
      
      at org.onosproject.net.driver.impl.DriverManager.getDriver(DriverManager.java:111)[130:org.onosproject.onos-core-net:1.13.0.SNAPSHOT]
      
      at org.onosproject.provider.of.group.impl.OpenFlowGroupProvider.isGroupCapable(OpenFlowGroupProvider.java:386)[172:org.onosproject.onos-providers-openflow-group:1.13.0.SNAPSHOT]
      
      at org.onosproject.provider.of.group.impl.OpenFlowGroupProvider.isGroupSupported(OpenFlowGroupProvider.java:371)[172:org.onosproject.onos-providers-openflow-group:1.13.0.SNAPSHOT]
      
      at org.onosproject.provider.of.group.impl.OpenFlowGroupProvider.access$600(OpenFlowGroupProvider.java:94)[172:org.onosproject.onos-providers-openflow-group:1.13.0.SNAPSHOT]
      
      at org.onosproject.provider.of.group.impl.OpenFlowGroupProvider$InternalGroupProvider.switchAdded(OpenFlowGroupProvider.java:455)[172:org.onosproject.onos-providers-openflow-group:1.13.0.SNAPSHOT]
      
      at org.onosproject.openflow.controller.impl.OpenFlowControllerImpl$OpenFlowSwitchAgent.addConnectedSwitch(OpenFlowControllerImpl.java:672)[168:org.onosproject.onos-protocols-openflow-ctl:1.13.0.SNAPSHOT]
      
      at org.onosproject.openflow.controller.driver.AbstractOpenFlowSwitch.connectSwitch(AbstractOpenFlowSwitch.java:307)[167:org.onosproject.onos-protocols-openflow-api:1.13.0.SNAPSHOT]
      
      at org.onosproject.openflow.controller.impl.OFChannelHandler$ChannelState$6.processOFStatisticsReply(OFChannelHandler.java:549)[168:org.onosproject.onos-protocols-openflow-ctl:1.13.0.SNAPSHOT]
      
      at org.onosproject.openflow.controller.impl.OFChannelHandler$ChannelState.processOFMessage(OFChannelHandler.java:1073)[168:org.onosproject.onos-protocols-openflow-ctl:1.13.0.SNAPSHOT]
      
      at org.onosproject.openflow.controller.impl.OFChannelHandler.channelRead(OFChannelHandler.java:1387)[168:org.onosproject.onos-protocols-openflow-ctl:1.13.0.SNAPSHOT]
      
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:287)[100:io.netty.handler:4.1.8.Final]
      
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:287)[100:io.netty.handler:4.1.8.Final]
      
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)[101:io.netty.codec:4.1.8.Final]
      
      at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)[101:io.netty.codec:4.1.8.Final]
      
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:129)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:642)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:565)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:479)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:441)[99:io.netty.transport:4.1.8.Final]
      
      at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)[97:io.netty.common:4.1.8.Final]
      
      at java.lang.Thread.run(Thread.java:745)[:1.8.0_121]

        Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

            Assignee:
            y-higuchi Yuta Higuchi
            Reporter:
            dlim15 Devin Lim
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: