org.jgroups.protocols
Class TUNNEL

java.lang.Object
  extended by org.jgroups.stack.Protocol
      extended by org.jgroups.protocols.TP
          extended by org.jgroups.protocols.TUNNEL

public class TUNNEL
extends TP

Replacement for UDP. Instead of sending packets via UDP, a TCP connection is opened to a Router (using the RouterStub client-side stub), the IP address/port of which was given using channel properties router_host and router_port. All outgoing traffic is sent via this TCP socket to the Router which distributes it to all connected TUNNELs in this group. Incoming traffic received from Router will simply be passed up the stack.

A TUNNEL layer can be used to penetrate a firewall, most firewalls allow creating TCP connections to the outside world, however, they do not permit outside hosts to initiate a TCP connection to a host inside the firewall. Therefore, the connection created by the inside host is reused by Router to send traffic from an outside host to a host inside the firewall.

Author:
Bela Ban, Vladimir Blagojevic

Nested Class Summary
 class TUNNEL.StubReceiver
           
static interface TUNNEL.TUNNELPolicy
           
 
Nested classes/interfaces inherited from class org.jgroups.protocols.TP
TP.Bundler, TP.DefaultBundler, TP.DefaultBundler2, TP.ProtocolAdapter, TP.TransferQueueBundler, TP.TransferQueueBundler2
 
Field Summary
 
Fields inherited from class org.jgroups.protocols.TP
bind_addr, bind_interface_str, bind_port, bundler, bundler_capacity, bundler_type, can_bind_to_mcast_addr, channel_name, connect_count, connectLock, default_thread_factory, diag_handler, diagnostics_addr, diagnostics_bind_interfaces, diagnostics_passcode, diagnostics_port, diagnostics_ttl, discard_incompatible_packets, enable_bundling, enable_diagnostics, enable_unicast_bundling, external_addr, external_port, f, global_thread_factory, header, last_discovery_request, LIST, local_addr, log_discard_msgs, log_discard_msgs_version, logical_addr_cache, logical_addr_cache_expiration, logical_addr_cache_max_size, loopback, max_bundle_size, max_bundle_timeout, members, MULTICAST, num_bytes_received, num_bytes_sent, num_incoming_msgs_received, num_msgs_received, num_msgs_sent, num_oob_msgs_received, OOB, oob_thread_factory, oob_thread_pool, oob_thread_pool_enabled, oob_thread_pool_keep_alive_time, oob_thread_pool_max_threads, oob_thread_pool_min_threads, oob_thread_pool_queue, oob_thread_pool_queue_enabled, oob_thread_pool_queue_max_size, physical_addr_max_fetch_attempts, port_range, preregistered_probe_handlers, print_function, receive_interfaces, receive_on_all_interfaces, singleton_name, socket_factory, suppress_log_different_cluster, suppress_log_different_version, suppress_time_different_cluster_warnings, suppress_time_different_version_warnings, thread_naming_pattern, thread_pool, thread_pool_enabled, thread_pool_keep_alive_time, thread_pool_max_threads, thread_pool_min_threads, thread_pool_queue, thread_pool_queue_enabled, thread_pool_queue_max_size, thread_pool_rejection_policy, tick_time, timer, timer_keep_alive_time, timer_max_threads, timer_min_threads, timer_queue_max_size, timer_rejection_policy, timer_thread_factory, timer_type, up_prots, wheel_size, who_has_cache, who_has_cache_timeout
 
Fields inherited from class org.jgroups.stack.Protocol
down_prot, ergonomics, id, log, name, stack, stats, up_prot
 
Constructor Summary
TUNNEL()
           
 
Method Summary
 void destroy()
          This method is called on a Channel.close().
 java.lang.String getInfo()
           
protected  PhysicalAddress getPhysicalAddress()
           
 long getReconnectInterval()
           
 java.lang.Object handleDownEvent(Event evt)
           
 void init()
          Called after instance has been created (null constructor) and before protocol is started.
protected  void send(Message msg, Address dest, boolean multicast)
          Serializes and sends a message.
 void sendMulticast(byte[] data, int offset, int length)
          Send to all members in the group.
 void sendUnicast(PhysicalAddress dest, byte[] data, int offset, int length)
          Send a unicast to 1 member.
 void setGossipRouterHosts(java.lang.String hosts)
           
 void setReconnectInterval(long reconnect_interval)
           
 void setTUNNELPolicy(TUNNEL.TUNNELPolicy policy)
           
 boolean supportsMulticasting()
          Whether or not hardware multicasting is supported
 java.lang.String toString()
           
 
Methods inherited from class org.jgroups.protocols.TP
addPhysicalAddressToCache, clearDifferentClusterCache, clearDifferentVersionCache, clearLogicalAddressCache, createThreadPool, dispatchToThreadPool, doSend, down, dumpTimerTasks, evictLogicalAddressCache, evictLogicalAddressCache, fetchLocalAddresses, getAllPhysicalAddressesFromCache, getBindAddress, getBindPort, getBundlerBufferSize, getDefaultThreadPool, getDefaultThreadPoolThreadFactory, getDifferentClusterMessages, getDifferentVersionMessages, getLogDiscardMessages, getLogDiscardMessagesVersion, getMaxBundleSize, getMaxBundleTimeout, getNumBytesReceived, getNumBytesSent, getNumMessagesReceived, getNumMessagesSent, getNumThreads, getNumTimerTasks, getOOBMaxQueueSize, getOOBMessages, getOOBPoolSize, getOOBQueueSize, getOOBThreadPool, getOOBThreadPoolKeepAliveTime, getOOBThreadPoolMaxThreads, getOOBThreadPoolMinThreads, getOOBThreadPoolThreadFactory, getPhysicalAddressFromCache, getPortRange, getReceiveInterfaces, getRegularMaxQueueSize, getRegularMessages, getRegularPoolSize, getRegularQueueSize, getSingletonName, getSocketFactory, getThreadFactory, getThreadNamingPattern, getThreadPoolKeepAliveTime, getThreadPoolMaxThreads, getThreadPoolMinThreads, getTimer, getTimerClass, getTimerKeepAliveTime, getTimerMaxThreads, getTimerMinThreads, getTimerQueueSize, getTimerThreadFactory, getTimerThreads, getUpProtocols, handleConnect, handleDisconnect, isDefaulThreadPoolEnabled, isDiscardIncompatiblePackets, isEnableBundling, isEnableUnicastBundling, isLoopback, isMulticastCapable, isOOBThreadPoolEnabled, isReceiveOnAllInterfaces, isSingleton, passMessageUp, passToAllUpProtocols, printLogicalAddressCache, printWhoHasCache, readMessage, readMessageList, receive, registerLocalAddress, registerProbeHandler, removeLogicalAddressFromCache, resetStats, sendToAllPhysicalAddresses, sendToSingleMember, setBindAddress, setBindPort, setBindToAllInterfaces, setDefaultThreadPool, setDefaultThreadPoolThreadFactory, setDiagnosticsHandler, setDiscardIncompatiblePackets, setEnableBundling, setEnableUnicastBundling, setInAllThreadFactories, setLogDiscardMessages, setLogDiscardMessagesVersion, setLoopback, setMaxBundleSize, setMaxBundleTimeout, setOOBRejectionPolicy, setOOBThreadPool, setOOBThreadPoolKeepAliveTime, setOOBThreadPoolMaxThreads, setOOBThreadPoolMinThreads, setOOBThreadPoolThreadFactory, setPortRange, setRegularRejectionPolicy, setSocketFactory, setSourceAddress, setThreadFactory, setThreadNames, setThreadPoolKeepAliveTime, setThreadPoolMaxThreads, setThreadPoolMinThreads, setThreadPoolQueueEnabled, setTimer, setTimerKeepAliveTime, setTimerMaxThreads, setTimerMinThreads, setTimerThreadFactory, shutdownThreadPool, start, stop, unregisterProbeHandler, unsetThreadNames, up, writeMessage, writeMessageList
 
Methods inherited from class org.jgroups.stack.Protocol
dumpStats, enableStats, getConfigurableObjects, getDownProtocol, getDownServices, getId, getIdsAbove, getLevel, getName, getProtocolStack, getTransport, getUpProtocol, getUpServices, getValue, isErgonomics, printStats, providedDownServices, providedUpServices, requiredDownServices, requiredUpServices, resetStatistics, setDownProtocol, setErgonomics, setId, setLevel, setProtocolStack, setUpProtocol, setValue, setValues, statsEnabled
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TUNNEL

public TUNNEL()
Method Detail

supportsMulticasting

public boolean supportsMulticasting()
Description copied from class: TP
Whether or not hardware multicasting is supported

Specified by:
supportsMulticasting in class TP

setGossipRouterHosts

public void setGossipRouterHosts(java.lang.String hosts)
                          throws java.net.UnknownHostException
Throws:
java.net.UnknownHostException

toString

public java.lang.String toString()
Overrides:
toString in class TP

getReconnectInterval

public long getReconnectInterval()

setReconnectInterval

public void setReconnectInterval(long reconnect_interval)

setTUNNELPolicy

public void setTUNNELPolicy(TUNNEL.TUNNELPolicy policy)

init

public void init()
          throws java.lang.Exception
Description copied from class: Protocol
Called after instance has been created (null constructor) and before protocol is started. Properties are already set. Other protocols are not yet connected and events cannot yet be sent.

Overrides:
init in class TP
Throws:
java.lang.Exception - Thrown if protocol cannot be initialized successfully. This will cause the ProtocolStack to fail, so the channel constructor will throw an exception

destroy

public void destroy()
Description copied from class: Protocol
This method is called on a Channel.close(). Does some cleanup; after the call the VM will terminate

Overrides:
destroy in class TP

handleDownEvent

public java.lang.Object handleDownEvent(Event evt)
Overrides:
handleDownEvent in class TP

send

protected void send(Message msg,
                    Address dest,
                    boolean multicast)
             throws java.lang.Exception
Description copied from class: TP
Serializes and sends a message. This method is not reentrant

Overrides:
send in class TP
Throws:
java.lang.Exception

sendMulticast

public void sendMulticast(byte[] data,
                          int offset,
                          int length)
                   throws java.lang.Exception
Description copied from class: TP
Send to all members in the group. UDP would use an IP multicast message, whereas TCP would send N messages, one for each member

Specified by:
sendMulticast in class TP
Parameters:
data - The data to be sent. This is not a copy, so don't modify it
Throws:
java.lang.Exception

sendUnicast

public void sendUnicast(PhysicalAddress dest,
                        byte[] data,
                        int offset,
                        int length)
                 throws java.lang.Exception
Description copied from class: TP
Send a unicast to 1 member. Note that the destination address is a *physical*, not a logical address

Specified by:
sendUnicast in class TP
Parameters:
dest - Must be a non-null unicast address
data - The data to be sent. This is not a copy, so don't modify it
Throws:
java.lang.Exception

getInfo

public java.lang.String getInfo()
Specified by:
getInfo in class TP

getPhysicalAddress

protected PhysicalAddress getPhysicalAddress()
Specified by:
getPhysicalAddress in class TP


Copyright © 1998-2012 Bela Ban / Red Hat. All Rights Reserved.