1 Reply Latest reply on Sep 5, 2007 6:33 AM by mkrzemien

    How to configure JGroups for specific NIC address?

    mkrzemien

      We use hosts with multiple NICs. One specific NIC in each host is intended for JBossCache/JGroups communication. Does anyone know how to configure JGroups for such environment. Specifically I don't know how to configure GMS to use a specified NIC. (I am not sure if the GMS it the only thing that makes the problem). The only place I know that allows specifying addresses in configuration is the UDP part.

      I made some prototyping - details below.

      Thank you in advance
      kind regards
      Mariusz

      Version: JBossCache 1.4.1 SP3, JGroups 2.4.1
      Environment: a LAN consisting of two hosts (), each host with two NICs (eth0, eth1), the hosts connected directly (possible connections: eth0-to-eth0, eth1-to-eth1), only one link working (either eth-0-to-eth0 or eth1-to-eth1). JGroups was intended to communicate on the working interfaces and to use multicast (see Configuration below)

      Test description:
      - link eth0-to-eth0 working, link eth1-to-eth1 broken. JGroups configured for working interfaces
      on each node started one instance of JBossCache
      replication working correctly
      repeat test for link eth1-to-eth1 working, link eth0-to-eth0 broken

      For both test executions GMS reported using eth0. For the first execution replication worked fine. For second execution there was no replication until I repaired eth0-to-eth0 link.

      Configuration details:

      <UDP mcast_addr="228.8.8.8" mcast_port="45566"
      ip_ttl="64" ip_mcast="true"
      mcast_send_buf_size="150000" mcast_recv_buf_size="80000"
      ucast_send_buf_size="150000" ucast_recv_buf_size="80000"
      loopback="false"
      <!-- receive_interfaces="eth1"
      send_interfaces="eth1"/>-->
      receive_interfaces="eth0"
      send_interfaces="eth0"/>

      <PING timeout="2000" num_initial_members="3"
      up_thread="false" down_thread="false"/>
      <MERGE2 min_interval="10000" max_interval="20000"/>
      <!-- <FD shun="true" up_thread="true" down_thread="true" />-->
      <FD_SOCK/>
      <VERIFY_SUSPECT timeout="1500"
      up_thread="false" down_thread="false"/>
      <pbcast.NAKACK gc_lag="50" retransmit_timeout="600,1200,2400,4800"
      max_xmit_size="8192" up_thread="false" down_thread="false"/>
      <UNICAST timeout="600,1200,2400" window_size="100" min_threshold="10"
      down_thread="false"/>
      <pbcast.STABLE desired_avg_gossip="20000"
      up_thread="false" down_thread="false"/>
      <pbcast.GMS join_timeout="5000" join_retry_timeout="2000"
      shun="true" print_local_addr="true"/>
      <FC max_credits="2000000" down_thread="false" up_thread="false"
      min_threshold="0.20"/>
      <FRAG frag_size="8192" down_thread="false" up_thread="true"/>
      <pbcast.STATE_TRANSFER up_thread="true" down_thread="true"/>

        • 1. Re: How to configure JGroups for specific NIC address?
          mkrzemien

          Ok, I figured it out.

          The problem was in my configuration. Address used by GMS can be specified in the UDP section: parameter bind_addr (can be also specified as System property -Dbind.address).

          Note: contrary to receive_interfaces and send_interfaces the bind_addr does not accept NIC names (like ?eth0?), only addresses.

          Kind regards
          Mariusz