code: @Override
  	public void send(final CEMI frame, final BlockingMode mode) throws KNXConnectionClosedException
  	{
  		if (frame.getMessageCode() != CEMILData.MC_LDATA_IND)
  			throw new KNXIllegalArgumentException("cEMI frame is not an L-Data.ind");
  		try {
  			if (loopbackEnabled) {
  				synchronized (loopbackFrames) {
  					loopbackFrames.add((CEMILData) frame);
  				}
  				logger.trace("add to multicast loopback frame buffer: {}", frame);
  			}
  			// filter IP system broadcasts and always send them unsecured
  			if (RoutingSystemBroadcast.isSystemBroadcast(frame)) {
  				final byte[] buf = PacketHelper.toPacket(new RoutingSystemBroadcast(frame));
  				final DatagramPacket p = new DatagramPacket(buf, buf.length, systemBroadcast, DEFAULT_PORT);
  				if (sysBcastSocket != null)
  					sysBcastSocket.send(p);
  				else
  					socket.send(p);
  			}
  			else
  				super.send(frame, NonBlocking);
  			// we always succeed...
  			setState(OK);
  		}
  		catch (final IOException e) {
  			close(CloseEvent.INTERNAL, "communication failure", LogLevel.ERROR, e);
  			throw new KNXConnectionClosedException("connection closed (" + e.getMessage() + ")");
  		}
  		catch (final KNXTimeoutException ignore) {}
  		catch (final InterruptedException e) {
  			Thread.currentThread().interrupt();
  		}
  	}
docs: Sends a cEMI frame to the joined multicast group.
  <p>
  
  @param frame cEMI message to send
  @param mode arbitrary value, does not influence behavior, since routing is always a
  unconfirmed, nonblocking service