diff --git a/KLALB/KNECloud/iplist.json b/KLALB/KNECloud/iplist.json index 2c04dd7..06ec9b6 100644 --- a/KLALB/KNECloud/iplist.json +++ b/KLALB/KNECloud/iplist.json @@ -14,24 +14,13 @@ "localaddress" : "127.0.0.1:3389" } ], "tunnels" : [ { + "name" : "Openfrp-直连线路", + "remoteaddress" : "127.0.0.1:4566" + }, { "name" : "Openfrp-直连线路", "remoteaddress" : "127.0.0.1:4566", - "frpc":[ "[common]", - "server_addr = 180.76.147.250", - "server_port = 8120", - "tcp_mux = true", - "protocol = tcp", - "dns_server = 223.5.5.5", - "user = bb28264e0abf3bcbec3a2180c5a279b8", - "token = I2KMo1HvRxuvurv2", - "[ts1xx]", - "type = xtcp", - "role = visitor", - "server_name = zl1", - "bind_addr = 127.0.0.1", - "bind_port = 4566", - "sk = knecloud"] - },{ + "frpc" : [ "[common]", "server_addr = 180.76.147.250", "server_port = 8120", "tcp_mux = true", "protocol = tcp", "dns_server = 223.5.5.5", "user = bb28264e0abf3bcbec3a2180c5a279b8", "token = I2KMo1HvRxuvurv2", "[ts1xx]", "type = xtcp", "role = visitor", "server_name = zl1", "bind_addr = 127.0.0.1", "bind_port = 4566", "sk = knecloud" ] + }, { "name" : "NULL-宿迁联通", "remoteaddress" : "153.36.240.12:65529" }, { @@ -61,5 +50,5 @@ }, { "name" : "HYHBX-上海腾讯-2", "remoteaddress" : "43.143.109.64:49965" - }] -} + } ] +} \ No newline at end of file diff --git a/src/org/kne/cloud/network/klalb/Consts.java b/src/org/kne/cloud/network/klalb/Consts.java index 4593e53..5c75b7e 100644 --- a/src/org/kne/cloud/network/klalb/Consts.java +++ b/src/org/kne/cloud/network/klalb/Consts.java @@ -3,7 +3,7 @@ package org.kne.cloud.network.klalb; public class Consts { public static final int BLOCKSIZE=8192; public static final long PINGTIMENS=1000000000L; - public static final int SO_TIMEOUT = 20000; + public static final int SO_TIMEOUT = 10000; public static final long SN_KEEP = 60000000000L; public static final int MAX_RESEND = 100; public static final long UACK_TIME = 10000000000L; diff --git a/src/org/kne/cloud/network/klalb/IOThreadManager.java b/src/org/kne/cloud/network/klalb/IOThreadManager.java index eac132d..6a3e7c6 100644 --- a/src/org/kne/cloud/network/klalb/IOThreadManager.java +++ b/src/org/kne/cloud/network/klalb/IOThreadManager.java @@ -22,7 +22,7 @@ import org.kne.cloud.network.mport.ServiceElement; import org.kne.cloud.network.mport.ThreadTool; public class IOThreadManager { - private KLALBCore klc = new KLALBCore(2000); + private KLALBCore klc = new KLALBCore(5000); private volatile boolean isopen = true; public IOThreadManager() { diff --git a/src/org/kne/cloud/network/klalb/KLALBClientGUI.java b/src/org/kne/cloud/network/klalb/KLALBClientGUI.java index 5a422bb..f66b4c4 100644 --- a/src/org/kne/cloud/network/klalb/KLALBClientGUI.java +++ b/src/org/kne/cloud/network/klalb/KLALBClientGUI.java @@ -247,7 +247,7 @@ public class KLALBClientGUI extends XFrame { } }); panel_1.add(btnNewButton_1, BorderLayout.EAST); - setTitle("KNE云网络负载均衡客户端"); + setTitle("KNE云网络负载均衡客户端V1.0"); setSize(600, 370); setLocationRelativeTo(null); diff --git a/src/org/kne/cloud/network/klalb/KLALBCore.java b/src/org/kne/cloud/network/klalb/KLALBCore.java index 3cf5cda..6107c8b 100644 --- a/src/org/kne/cloud/network/klalb/KLALBCore.java +++ b/src/org/kne/cloud/network/klalb/KLALBCore.java @@ -109,7 +109,7 @@ public class KLALBCore { pdb.pingtime=System.nanoTime(); tc.sendBlock(pdb); } - if(!tc.getNDSendDeque().isEmpty()||!tc.getSendDeque().isEmpty()||!tc.getReSendDeque().isEmpty()) + if(!tc.getNDSendDeque().isEmpty()||!tc.getSendDeque().isEmpty()) break; synchronized (tc.getSendDeque()) { tc.getSendDeque().wait(10); @@ -122,16 +122,13 @@ public class KLALBCore { } tc.sendBlock(k0); }else { - KLALBBlock k1=tc.getReSendDeque().poll(); - if(k1!=null) { - tc.sendBlock(k1); - }else { + KLALBBlock k=tc.getSendDeque().poll(); if(k!=null) { //if(localtcps.containsKey(k.cuid)||k.cuid.equals(ZERO_UUID)) tc.sendBlock(k); } - } + } } public void remoteReceive(RemoteTCPConnection tc) throws IOException { @@ -224,7 +221,7 @@ public class KLALBCore { ack.cuid=brc.cuid; ack.number=-brc.number; ack.cacheused=ltcs.getSendDeque().size(); - submitAckBlockNoDelay(ack,3); + submitAckBlockNoDelay(ack,5); } @@ -246,6 +243,16 @@ public class KLALBCore { } } } + + synchronized (remotetcps) { + for (Iterator iterator = remotetcps.iterator(); iterator.hasNext();) { + RemoteTCPConnection remoteTCPConnection = (RemoteTCPConnection) iterator.next(); + Queuesq=remoteTCPConnection.getSendDeque(); + sq.removeIf((vb)->{ + return vb.number==nx; + }); + } + } /*ltc.getOutputcache().removeIf((b) -> { return b.number == nx; });*/ @@ -265,7 +272,7 @@ public class KLALBCore { for (Iterator iterator = remotetcps.iterator(); iterator.hasNext();) { RemoteTCPConnection remoteTCPConnection = (RemoteTCPConnection) iterator.next(); Queue bdq=remoteTCPConnection.getSendDeque(); - if(bdq.size()<1) { + if(bdq.size()<2) { bdq.add(kb); synchronized (bdq) { bdq.notifyAll(); @@ -279,25 +286,6 @@ public class KLALBCore { Thread.sleep(1); } - } - public void submitReDataBlock(KLALBBlock kb) throws InterruptedException { - while(true) { - synchronized (remotetcps) { - for (Iterator iterator = remotetcps.iterator(); iterator.hasNext();) { - RemoteTCPConnection remoteTCPConnection = (RemoteTCPConnection) iterator.next(); - Queue bdq=remoteTCPConnection.getReSendDeque(); - if(bdq.size()<1) { - bdq.add(kb); - synchronized (bdq) { - bdq.notifyAll(); - } - return; - } - } - } - Thread.sleep(1); - } - } public void submitDataBlockNoDelay(KLALBBlock kb) { synchronized (remotetcps) { @@ -368,17 +356,29 @@ public class KLALBCore { synchronized( l) { for (int i = 0; i < l.size(); i++) { KLALBBlock block=l.get(i); - long timex = (System.nanoTime() - block.sendtime) / 1000000; - if ((i==0&&timex>100)||timex > (RTO/1000000)*(1< Math.min(RTO,1000000000L )*(1<=Consts.MAX_RESEND) { + l.remove(i); + i--; + } + } + } + /*if ((i<=10&&timex>500)||timex > (RTO/1000000)*(1<=Consts.MAX_RESEND) { l.remove(i); i--; } - System.out.println("超时重传:"+block+" 位置:"+i); - } + }*/ } } long curr=System.nanoTime(); diff --git a/src/org/kne/cloud/network/klalb/KLALBSM.java b/src/org/kne/cloud/network/klalb/KLALBSM.java index 29f50e6..ba66d9f 100644 --- a/src/org/kne/cloud/network/klalb/KLALBSM.java +++ b/src/org/kne/cloud/network/klalb/KLALBSM.java @@ -17,7 +17,7 @@ import org.kne.cloud.network.mport.ServiceElement; public class KLALBSM { public static void main(String[] args) throws IOException { - System.out.println("KNE云负载均衡调度软件服务端V0.1"); + System.out.println("KNE云负载均衡调度软件服务端V1.0"); ServerPropties sp=new ServerPropties(); int remp=sp.getPort(); diff --git a/src/org/kne/cloud/network/klalb/RemoteTCPConnection.java b/src/org/kne/cloud/network/klalb/RemoteTCPConnection.java index 074abab..1896f92 100644 --- a/src/org/kne/cloud/network/klalb/RemoteTCPConnection.java +++ b/src/org/kne/cloud/network/klalb/RemoteTCPConnection.java @@ -11,6 +11,7 @@ import java.io.StreamCorruptedException; import java.net.Socket; import java.net.UnknownHostException; import java.util.Arrays; +import java.util.Comparator; import java.util.Queue; import java.util.Random; import java.util.UUID; @@ -19,6 +20,7 @@ import java.util.concurrent.BlockingDeque; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.PriorityBlockingQueue; import java.util.zip.DataFormatException; import java.util.zip.Deflater; import java.util.zip.GZIPInputStream; @@ -243,17 +245,31 @@ public class RemoteTCPConnection extends TCPConnection { } } - private Queue NDsendDeque = new ConcurrentLinkedQueue<>(); + private Queue NDsendDeque = new ConcurrentLinkedQueue(); public Queue getNDSendDeque() { return NDsendDeque; } - private Queue resendDeque = new ConcurrentLinkedQueue<>(); - public Queue getReSendDeque() { - return sendDeque; - } - private Queue sendDeque = new ConcurrentLinkedQueue<>(); + private Queue sendDeque = new PriorityBlockingQueue(2, new Comparator() { + + @Override + public int compare(KLALBBlock o1, KLALBBlock o2) { + if(o1.resend>o2.resend) { + return -1; + }else if(o1.resendo2.number) { + return 1; + }else if(o1.number getSendDeque() { return sendDeque;