
<!--
  Sample file that defines a number of stacks, used by the multiplexer
  Author: Bela Ban
  Version: $Id: multiplexer-stacks.xml 60111 2007-01-30 05:54:56Z bstansberry@jboss.com $
-->
<protocol_stacks>
    <stack name="udp"
           description="Default: IP multicast based stack, with flow control and message bundling">
        <config>
          <UDP
             mcast_port="${jgroups.udp.mcast_port:45688}"
             mcast_addr="${jgroups.udp.mcast_addr:228.11.11.11}"
             tos="8"
             ucast_recv_buf_size="20000000"
             ucast_send_buf_size="640000"
             mcast_recv_buf_size="25000000"
             mcast_send_buf_size="640000"
             loopback="false"
             discard_incompatible_packets="true"
             max_bundle_size="64000"
             max_bundle_timeout="30"
             use_incoming_packet_handler="true"
             use_outgoing_packet_handler="false"
             ip_ttl="${jgroups.udp.ip_ttl:2}"
             down_thread="false" up_thread="false"
             enable_bundling="true"/>
          <PING timeout="2000"
             down_thread="false" up_thread="false" num_initial_members="3"/>
          <MERGE2 max_interval="100000"
             down_thread="false" up_thread="false" min_interval="20000"/>
          <FD_SOCK down_thread="false" up_thread="false"/>
          <FD timeout="10000" max_tries="5" down_thread="false" up_thread="false" shun="true"/>
          <VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false"/>
          <pbcast.NAKACK max_xmit_size="60000"
                   use_mcast_xmit="false" gc_lag="0"
                   retransmit_timeout="300,600,1200,2400,4800"
                   down_thread="false" up_thread="false"
                   discard_delivered_msgs="true"/>
          <UNICAST timeout="300,600,1200,2400,3600"
             down_thread="false" up_thread="false"/>
          <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
                   down_thread="false" up_thread="false"
                   max_bytes="400000"/>
          <pbcast.GMS print_local_addr="true" join_timeout="3000"
                   down_thread="false" up_thread="false"
                   join_retry_timeout="2000" shun="true"
                   view_bundling="true"
                   view_ack_collection_timeout="5000"/>
          <FC max_credits="2000000" down_thread="false" up_thread="false"
              min_threshold="0.10"/>
          <FRAG2 frag_size="60000" down_thread="false" up_thread="false"/>
          <pbcast.STATE_TRANSFER down_thread="false" up_thread="false" use_flush="false"/>
        </config>
    </stack>
    

    <stack name="udp-sync"
           description="IP multicast based stack, without flow control and without message bundling. This should be used
           instead of udp if (1) synchronous calls are used and (2) the message volume (rate and size)
            is not that large. Don't use this configuration if you send messages at a high sustained rate, or you might
            run out of memory">
        <config>
            <UDP
                 mcast_port="${jgroups.udp.mcast_port:45699}"
                 mcast_addr="${jgroups.udp.mcast_addr:229.11.11.11}"
                 tos="8"
                 ucast_recv_buf_size="20000000"
                 ucast_send_buf_size="640000"
                 mcast_recv_buf_size="25000000"
                 mcast_send_buf_size="640000"
                 loopback="false"
                 discard_incompatible_packets="true"
                 max_bundle_size="64000"
                 max_bundle_timeout="30"
                 use_incoming_packet_handler="true"
                 use_outgoing_packet_handler="false"
                 ip_ttl="${jgroups.udp.ip_ttl:2}"
                 down_thread="false" up_thread="false"
                 enable_bundling="false"/>
            <PING timeout="2000"
                  down_thread="false" up_thread="false" num_initial_members="3"/>
            <MERGE2 max_interval="100000"
                    down_thread="false" up_thread="false" min_interval="20000"/>
            <FD_SOCK down_thread="false" up_thread="false"/>
            <FD timeout="10000" max_tries="5" down_thread="false" up_thread="false" shun="true"/>
            <VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false"/>
            <pbcast.NAKACK max_xmit_size="60000"
                    use_mcast_xmit="false" gc_lag="0"
                    retransmit_timeout="300,600,1200,2400,4800"
                    down_thread="false" up_thread="false"
                    discard_delivered_msgs="true"/>
            <UNICAST timeout="300,600,1200,2400,3600"
                    down_thread="false" up_thread="false"/>
            <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
                    down_thread="false" up_thread="false"
                    max_bytes="400000"/>
            <pbcast.GMS print_local_addr="true" join_timeout="3000"
                    down_thread="false" up_thread="false"
                    join_retry_timeout="2000" shun="true"
                    view_bundling="true"/>
            <FRAG2 frag_size="60000" down_thread="false" up_thread="false"/>
            <pbcast.STATE_TRANSFER down_thread="false" up_thread="false" use_flush="false"/>
        </config>
    </stack>


    <stack name="tcp"
           description="TCP based stack, with flow control and message bundling. This is usually used when IP
           multicasting cannot be used in a network, e.g. because it is disabled (routers discard multicast)">
        <config>
            <TCP start_port="7600"
                 loopback="true"
                 recv_buf_size="20000000"
                 send_buf_size="640000"
                 discard_incompatible_packets="true"
                 max_bundle_size="64000"
                 max_bundle_timeout="30"
                 use_incoming_packet_handler="true"
                 use_outgoing_packet_handler="false"
                 down_thread="false" up_thread="false"
                 enable_bundling="true"
                 use_send_queues="false"
                 sock_conn_timeout="300"
                 skip_suspected_members="true"/>
            <TCPPING timeout="3000"
                     down_thread="false" up_thread="false"
                     initial_hosts="${jgroups.tcpping.initial_hosts:localhost[7600],localhost[7601]}"
                     port_range="1"
                     num_initial_members="3"/>
            <MERGE2 max_interval="100000"
                    down_thread="false" up_thread="false" min_interval="20000"/>
            <FD_SOCK down_thread="false" up_thread="false"/>
            <FD timeout="10000" max_tries="5" down_thread="false" up_thread="false" shun="true"/>
            <VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false"/>
            <pbcast.NAKACK max_xmit_size="60000"
                           use_mcast_xmit="false" gc_lag="0"
                           retransmit_timeout="300,600,1200,2400,4800"
                           down_thread="false" up_thread="false"
                           discard_delivered_msgs="true"/>
            <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
                           down_thread="false" up_thread="false"
                           max_bytes="400000"/>
            <pbcast.GMS print_local_addr="true" join_timeout="3000"
                        down_thread="false" up_thread="false"
                        join_retry_timeout="2000" shun="true"
                        view_bundling="true"/>
            <FC max_credits="2000000" down_thread="false" up_thread="false"
                min_threshold="0.10"/>
            <FRAG2 frag_size="60000" down_thread="false" up_thread="false"/>
            <pbcast.STATE_TRANSFER down_thread="false" up_thread="false" use_flush="false"/>
        </config>
    </stack>


    <stack name="tcp-sync"
           description="TCP based stack, without flow control and without message bundling. This is usually used when IP
           multicasting cannot be used in a network, e.g. because it is disabled (routers discard multicast). This
           configuration should be used instead of tcp when (1) synchronous calls are used and (2) the message volume
           (rate and size) is not that large">
        <config>
            <TCP start_port="7650"
                 loopback="true"
                 recv_buf_size="20000000"
                 send_buf_size="640000"
                 discard_incompatible_packets="true"
                 max_bundle_size="64000"
                 max_bundle_timeout="30"
                 use_incoming_packet_handler="true"
                 use_outgoing_packet_handler="false"
                 down_thread="false" up_thread="false"
                 enable_bundling="false"
                 use_send_queues="false"
                 sock_conn_timeout="300"
                 skip_suspected_members="true"/>
            <TCPPING timeout="3000"
                     down_thread="false" up_thread="false"
                     initial_hosts="${jgroups.tcpping.initial_hosts:localhost[7650],localhost[7651]}"
                     port_range="1"
                     num_initial_members="3"/>
            <MERGE2 max_interval="100000"
                    down_thread="false" up_thread="false" min_interval="20000"/>
            <FD_SOCK down_thread="false" up_thread="false"/>
            <FD timeout="10000" max_tries="5" down_thread="false" up_thread="false" shun="true"/>
            <VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false"/>
            <pbcast.NAKACK max_xmit_size="60000"
                           use_mcast_xmit="false" gc_lag="0"
                           retransmit_timeout="300,600,1200,2400,4800"
                           down_thread="false" up_thread="false"
                           discard_delivered_msgs="true"/>
            <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
                           down_thread="false" up_thread="false"
                           max_bytes="400000"/>
            <pbcast.GMS print_local_addr="true" join_timeout="3000"
                        down_thread="false" up_thread="false"
                        join_retry_timeout="2000" shun="true"
                        view_bundling="true"/>
            <pbcast.STATE_TRANSFER down_thread="false" up_thread="false" use_flush="false"/>
        </config>
    </stack>


    <stack name="tcp_nio"
           description="TCP_NIO based stack, with flow control and message bundling. This is usually used when IP
           multicasting cannot be used in a network, e.g. because it is disabled (routers discard multicast)">
        <config>
            <TCP_NIO
                   recv_buf_size="20000000"
                   send_buf_size="640000"
                   loopback="false"
                   discard_incompatible_packets="true"
                   max_bundle_size="64000"
                   max_bundle_timeout="30"
                   use_incoming_packet_handler="true"
                   use_outgoing_packet_handler="false"
                   down_thread="false" up_thread="false"
                   enable_bundling="true"
                   start_port="7700"
                   use_send_queues="false"
                   sock_conn_timeout="300" skip_suspected_members="true"
                   reader_threads="8"
                   writer_threads="8"
                   processor_threads="8"
                   processor_minThreads="8"
                   processor_maxThreads="8"
                   processor_queueSize="100"
                   processor_keepAliveTime="-1"/>
            <TCPPING timeout="3000"
                     down_thread="false" up_thread="false"
                     initial_hosts="${jgroups.tcpping.initial_hosts:localhost[7700],localhost[7701]}"
                     port_range="1"
                     num_initial_members="3"/>
            <MERGE2 max_interval="100000"
                  down_thread="false" up_thread="false" min_interval="20000"/>
            <FD_SOCK down_thread="false" up_thread="false"/>
            <FD timeout="10000" max_tries="5" down_thread="false" up_thread="false" shun="true"/>
            <VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false"/>
            <pbcast.NAKACK max_xmit_size="60000"
                   use_mcast_xmit="false" gc_lag="0"
                   retransmit_timeout="300,600,1200,2400,4800"
                   down_thread="false" up_thread="false"
                   discard_delivered_msgs="true"/>
            <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
                   down_thread="false" up_thread="false"
                   max_bytes="400000"/>
            <pbcast.GMS print_local_addr="true" join_timeout="3000"
                   down_thread="false" up_thread="false"
                   join_retry_timeout="2000" shun="true"
                   view_bundling="true"/>
            <FC max_credits="2000000" down_thread="false" up_thread="false"
                min_threshold="0.10"/>
            <FRAG2 frag_size="60000" down_thread="false" up_thread="false"/>
            <pbcast.STATE_TRANSFER down_thread="false" up_thread="false" use_flush="false"/>
        </config>
    </stack>


    <stack name="tcp_nio-sync"
           description="TCP_NIO based stack, with flow control and message bundling. This is usually used when IP
           multicasting cannot be used in a network, e.g. because it is disabled (routers discard multicast). This
           configuration should be used instead of tcp when (1) synchronous calls are used and (2) the message volume
           (rate and size) is not that large">
        <config>
            <TCP_NIO
                     recv_buf_size="20000000"
                     send_buf_size="640000"
                     loopback="false"
                     discard_incompatible_packets="true"
                     max_bundle_size="64000"
                     max_bundle_timeout="30"
                     use_incoming_packet_handler="true"
                     use_outgoing_packet_handler="false"
                     down_thread="false" up_thread="false"
                     enable_bundling="false"
                     start_port="7750"
                     use_send_queues="false"
                     sock_conn_timeout="300" skip_suspected_members="true"
                     reader_threads="8"
                     writer_threads="8"
                     processor_threads="8"
                     processor_minThreads="8"
                     processor_maxThreads="8"
                     processor_queueSize="100"
                     processor_keepAliveTime="-1"/>
            <TCPPING timeout="3000"
                     down_thread="false" up_thread="false"
                     initial_hosts="${jgroups.tcpping.initial_hosts:localhost[7750],localhost[7751]}"
                     port_range="1"
                     num_initial_members="3"/>
            <MERGE2 max_interval="100000"
                    down_thread="false" up_thread="false" min_interval="20000"/>
            <FD_SOCK down_thread="false" up_thread="false"/>
            <FD timeout="10000" max_tries="5" down_thread="false" up_thread="false" shun="true"/>
            <VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false"/>
            <pbcast.NAKACK max_xmit_size="60000"
                        use_mcast_xmit="false" gc_lag="0"
                        retransmit_timeout="300,600,1200,2400,4800"
                        down_thread="false" up_thread="false"
                        discard_delivered_msgs="true"/>
            <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
                        down_thread="false" up_thread="false"
                        max_bytes="400000"/>
            <pbcast.GMS print_local_addr="true" join_timeout="3000"
                        down_thread="false" up_thread="false"
                        join_retry_timeout="2000" shun="true"
                        view_bundling="true"/>
            <pbcast.STATE_TRANSFER down_thread="false" up_thread="false" use_flush="false"/>
        </config>
    </stack>


    <stack name="tunnel"
           description="Used with a GossipRouter">
        <config>
            <TUNNEL router_port="12001" router_host="127.0.0.1"/>
            <PING timeout="2000"
                  down_thread="false" up_thread="false" num_initial_members="3"
                  gossip_refresh="10000"
                  gossip_host="127.0.0.1"
                  gossip_port="12001"/>
            <MERGE2 max_interval="20000"
                    down_thread="false" up_thread="false" min_interval="5000"/>
            <FD_SOCK down_thread="false" up_thread="false"/>
            <FD timeout="2000" max_tries="3" down_thread="false" up_thread="false" shun="true"/>
            <VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false"/>
            <pbcast.NAKACK max_xmit_size="60000"
                           use_mcast_xmit="false" gc_lag="0"
                           retransmit_timeout="300,600,1200,2400,4800"
                           down_thread="false" up_thread="false"
                           discard_delivered_msgs="true"/>
            <UNICAST timeout="300,600,1200,2400,3600"
                     down_thread="false" up_thread="false"/>
            <pbcast.STABLE stability_delay="1000" desired_avg_gossip="5000"
                           down_thread="false" up_thread="false"
                           max_bytes="400000"/>
            <pbcast.GMS print_local_addr="true" join_timeout="3000"
                        down_thread="false" up_thread="false"
                        join_retry_timeout="2000" shun="false"
                        view_bundling="true"
                        view_ack_collection_timeout="5000"/>
            <FC max_credits="2000000" down_thread="false" up_thread="false"
                min_threshold="0.10"/>
            <FRAG2 frag_size="60000" down_thread="false" up_thread="false"/>
            <pbcast.STATE_TRANSFER down_thread="false" up_thread="false"/>
        </config>
    </stack>

</protocol_stacks>


