隧道链接改成标准URI格式

This commit is contained in:
2026-07-11 22:28:50 +08:00
parent 053450429c
commit 314f90b5f3
66 changed files with 1578 additions and 1506 deletions
@@ -1,29 +1,14 @@
package org.kne.cloud.network.srv6;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.Serializable;
import java.net.Inet6Address;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import org.kne.cloud.network.MultipurposeSocketAddress;
import org.kne.cloud.network.NetworkPacket;
import org.kne.cloud.network.ipv6.IPv6AddressGroup;
import org.kne.cloud.network.MultiProtocolSocketAddress;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -53,7 +38,7 @@ public class JsonDataPacket extends KLALBRoutingProtocolPacket implements Serial
private static Gson gson;
static{
GsonBuilder gb=new GsonBuilder();
MultipurposeSocketAddress.registerToGsonBuilder(gb);
MultiProtocolSocketAddress.registerToGsonBuilder(gb);
gson=gb.create();
}
@@ -10,7 +10,7 @@ import java.util.UUID;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import org.kne.cloud.network.MultipurposeSocketAddress;
import org.kne.cloud.network.MultiProtocolSocketAddress;
import org.kne.cloud.network.congestion.NOCongestionAlgorithm;
import org.kne.cloud.network.congestion.SendPacketSlidingWindow;
import org.kne.opencl64.Releaser;
@@ -33,16 +33,16 @@ public class KLALBRoutingProtocolAPIClient {
if ((relate = window.ack(ruid)) != null) {
List<?> connects = (List<?>) dataobj.getData();
List<MultipurposeSocketAddress> connectsm = new ArrayList<MultipurposeSocketAddress>(connects.size());
List<MultiProtocolSocketAddress> connectsm = new ArrayList<MultiProtocolSocketAddress>(connects.size());
for (Object open : connects) {
if (open instanceof MultipurposeSocketAddress) {
connectsm.add((MultipurposeSocketAddress) open);
if (open instanceof MultiProtocolSocketAddress) {
connectsm.add((MultiProtocolSocketAddress) open);
} else {
connectsm.add(new MultipurposeSocketAddress((String) open));
connectsm.add(new MultiProtocolSocketAddress((String) open));
}
}
((Consumer<List<MultipurposeSocketAddress>>) relate.getUserCallback()).accept(connectsm);
((Consumer<List<MultiProtocolSocketAddress>>) relate.getUserCallback()).accept(connectsm);
}
break;
}
@@ -56,7 +56,7 @@ public class KLALBRoutingProtocolAPIClient {
clr.register(this, releaser);
}
public void requestOpenLines(SocketAddress addr, Consumer<List<MultipurposeSocketAddress>> callback)
public void requestOpenLines(SocketAddress addr, Consumer<List<MultiProtocolSocketAddress>> callback)
throws IOException {
UUID suid = UUID.randomUUID();
KLALBRoutingProtocolJsonData json = new KLALBRoutingProtocolJsonData(
@@ -4,13 +4,8 @@ import java.io.IOException;
import java.lang.ref.Cleaner;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.ArrayList;
import java.util.UUID;
import java.util.function.BiConsumer;
import org.kne.cloud.network.MultipurposeSocketAddress;
import org.kne.cloud.network.ThreadTool;
import org.kne.cloud.network.congestion.SendPacketSlidingWindow;
import org.kne.cloud.network.klalb.KLALBController;
import org.kne.opencl64.Releaser;
+33 -21
View File
@@ -46,6 +46,8 @@ import org.kne.cloud.network.ipv6.PostcardEntry;
import org.kne.cloud.network.ipv6.RouteItem;
import org.kne.cloud.network.klalb.KLALBRemoteLink;
import org.kne.cloud.network.klalb.KLALBUtils;
import org.kne.cloud.network.klalb.PerformanceStrategy;
import org.kne.cloud.network.klalb.ui.PerformanceStrategyItem;
import org.kne.concurrent.HighPerformanceExecutor2;
import org.kne.concurrent.TimeoutConcurrentHashMap;
import org.pcap4j.packet.IllegalRawDataException;
@@ -62,6 +64,8 @@ public class SRv6Router {
private static final int IPv6_BITS = 128; // IPv6地址位数
private PerformanceStrategy performanceStrategy=PerformanceStrategy.MULTI_FILL;
/*private TimeoutConcurrentHashMap<FlowSession, PacketIDGenerator> flowIDmap = new TimeoutConcurrentHashMap<FlowSession, PacketIDGenerator>(
60000000000L);
*/
@@ -161,6 +165,14 @@ public class SRv6Router {
};
public void setPerformanceStrategy(PerformanceStrategy performanceStrategy) {
this.performanceStrategy=performanceStrategy;
}
public PerformanceStrategy getPerformanceStrategy(){
return performanceStrategy;
}
// 链路状态监听器实现
private class LinkListener implements IPv6LinkStateListener {
@@ -765,44 +777,44 @@ public class SRv6Router {
//private static HighPerformanceExecutor2 defaultExecutor = new HighPerformanceExecutor2(4, Thread.ofVirtual().name("SRv6 Routing").factory());
public static HighPerformanceExecutor2 getDefaultExecutor() {
/*public static HighPerformanceExecutor2 getDefaultExecutor() {
return defaultExecutor;
}
}*/
// private ArrayBlockingQueue<Supplier<IPv6Packet>> packetQueue=new
// ArrayBlockingQueue<>(10000);
public void enqueuePacketSendTask(Supplier<IPv6Packet> sendTask) {
// packetQueue.add(object);
defaultExecutor.executeWithCongestionReport((state) -> {
try {
long start=System.nanoTime();
IPv6Packet packet=sendTask.get();
if(state) {
packet.markCE();
}
insertSRHandRoutePacket(null, packet); // 插入SRH并路由
long time=System.nanoTime()-start;
backplaneCount(time,state);
} catch (Exception e) {
e.printStackTrace();
}
},20);
switch(performanceStrategy) {
case SINGLE_CORE:
runPacketSendTask0(sendTask, false);
break;
case MULTI_FILL:
case MULTI_SCATTER:
defaultExecutor.executeWithCongestionReport((state) -> {
runPacketSendTask0(sendTask, state);
}, 20,performanceStrategy);
break;
}
}
public void runPacketSendTask(Supplier<IPv6Packet> sendTask) {
public void runPacketSendTask0(Supplier<IPv6Packet> sendTask,boolean ecn) {
try {
boolean state=false;
long start=System.nanoTime();
IPv6Packet packet=sendTask.get();
if(state) {
if(ecn) {
packet.markCE();
}
insertSRHandRoutePacket(null, packet); // 插入SRH并路由
long time=System.nanoTime()-start;
backplaneCount(time,state);
backplaneCount(time,ecn);
} catch (Exception e) {
e.printStackTrace();
}
}
public void runPacketSendTask(Supplier<IPv6Packet> sendTask) {
runPacketSendTask0(sendTask,false);
}
public void onReceive(IPv6NetworkLink link,IPv6Packet t){
if (unduplicate(t)) {
@@ -824,7 +836,7 @@ public class SRv6Router {
} catch (Exception e) {
e.printStackTrace();
}
},20);
},20,performanceStrategy);
}
public void enqueuePacket(IPv6Packet packet) {