OCT 1. 移除UDP代理服务调试信息以及sleep,加快网络转发数据包效率

This commit is contained in:
黄昕 2023-12-07 15:08:31 +08:00
parent 0cdad9225a
commit c2b96cc333
2 changed files with 26 additions and 9 deletions

View File

@ -5,6 +5,8 @@
#include "usrerr.h" #include "usrerr.h"
#include "misc.h" #include "misc.h"
#define DEBUG_PROXY_PACKAGE (0)
#if !USED_PORTMAP_TUNNEL #if !USED_PORTMAP_TUNNEL
#include "globalcfg.h" #include "globalcfg.h"
#include <winsock2.h> #include <winsock2.h>
@ -16,7 +18,6 @@
#endif #endif
void StopUDPProxyServer() { void StopUDPProxyServer() {
#if !USED_PORTMAP_TUNNEL #if !USED_PORTMAP_TUNNEL
const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy; const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy;
@ -47,8 +48,9 @@ static DWORD UDPProxvRemoteThread(LPVOID lpParameter) {
while (pPeerSock && !pProxy->exitNow) { while (pPeerSock && !pProxy->exitNow) {
sockaddr_in remoteWgAddr {}; sockaddr_in remoteWgAddr {};
#if DEBUG_PROXY_PACKAGE
TCHAR ipAddr[MAX_IP_LEN]; TCHAR ipAddr[MAX_IP_LEN];
#endif
int addrSize = sizeof(SOCKADDR); int addrSize = sizeof(SOCKADDR);
char recvBuf[1500]; char recvBuf[1500];
int iRecvBytes; int iRecvBytes;
@ -60,15 +62,16 @@ static DWORD UDPProxvRemoteThread(LPVOID lpParameter) {
0, 0,
reinterpret_cast<SOCKADDR *>(&remoteWgAddr), reinterpret_cast<SOCKADDR *>(&remoteWgAddr),
&addrSize); &addrSize);
#if DEBUG_PROXY_PACKAGE
memset(ipAddr, 0, MAX_IP_LEN); memset(ipAddr, 0, MAX_IP_LEN);
InetNtop(AF_INET, &remoteWgAddr.sin_addr.s_addr, ipAddr, MAX_IP_LEN); InetNtop(AF_INET, &remoteWgAddr.sin_addr.s_addr, ipAddr, MAX_IP_LEN);
SPDLOG_TRACE(TEXT(">>> Scoket In {1} Recv {0} bytes from {2}:{3}"), SPDLOG_TRACE(TEXT(">>> Scoket In {1} Recv {0} bytes from {2}:{3}"),
iRecvBytes, iRecvBytes,
pProxy->scgGwSock, pProxy->scgGwSock,
ipAddr, ipAddr,
ntohs(remoteWgAddr.sin_port)); ntohs(remoteWgAddr.sin_port));
#endif
if (iRecvBytes != SOCKET_ERROR) { if (iRecvBytes != SOCKET_ERROR) {
int sendBytes = sendto(pProxy->udpProxySock, int sendBytes = sendto(pProxy->udpProxySock,
recvBuf, recvBuf,
@ -76,6 +79,8 @@ static DWORD UDPProxvRemoteThread(LPVOID lpParameter) {
0, 0,
reinterpret_cast<SOCKADDR *>(pPeerSock), reinterpret_cast<SOCKADDR *>(pPeerSock),
sizeof(SOCKADDR)); sizeof(SOCKADDR));
#if DEBUG_PROXY_PACKAGE
memset(ipAddr, 0, MAX_IP_LEN); memset(ipAddr, 0, MAX_IP_LEN);
InetNtop(AF_INET, &pPeerSock->sin_addr.s_addr, ipAddr, MAX_IP_LEN); InetNtop(AF_INET, &pPeerSock->sin_addr.s_addr, ipAddr, MAX_IP_LEN);
SPDLOG_TRACE(TEXT("<<< Scoket In Send {0} bytes to {2}:{3}"), SPDLOG_TRACE(TEXT("<<< Scoket In Send {0} bytes to {2}:{3}"),
@ -91,8 +96,10 @@ static DWORD UDPProxvRemoteThread(LPVOID lpParameter) {
ntohs(remoteWgAddr.sin_port), ntohs(remoteWgAddr.sin_port),
WSAGetLastError()); WSAGetLastError());
} }
Sleep(100); Sleep(100);
#else
}
#endif
} }
return 0; return 0;
} }
@ -102,7 +109,9 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) {
sockaddr_in localWgAddr {}; sockaddr_in localWgAddr {};
sockaddr_in scgAddr {}; sockaddr_in scgAddr {};
unsigned char recvBuf[1500 + SCG_UDP_HEAD_SIZE]; unsigned char recvBuf[1500 + SCG_UDP_HEAD_SIZE];
#if DEBUG_PROXY_PACKAGE
std::array<UINT8, 1511> arr; std::array<UINT8, 1511> arr;
#endif
const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy; const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy;
const auto svrId = static_cast<UINT8>(GetGlobalCfgInfo()->userCfg.cliConfig.scgTunnelAppId); const auto svrId = static_cast<UINT8>(GetGlobalCfgInfo()->userCfg.cliConfig.scgTunnelAppId);
char *pRecBuf = reinterpret_cast<char *>(&recvBuf[SCG_UDP_HEAD_SIZE]); char *pRecBuf = reinterpret_cast<char *>(&recvBuf[SCG_UDP_HEAD_SIZE]);
@ -126,7 +135,9 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) {
pProxy->exitNow = false; pProxy->exitNow = false;
while (!pProxy->exitNow) { while (!pProxy->exitNow) {
#if DEBUG_PROXY_PACKAGE
TCHAR ipAddr[MAX_IP_LEN]; TCHAR ipAddr[MAX_IP_LEN];
#endif
int addrSize = sizeof(SOCKADDR); int addrSize = sizeof(SOCKADDR);
int iRecvBytes; int iRecvBytes;
@ -138,12 +149,16 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) {
reinterpret_cast<SOCKADDR *>(&localWgAddr), reinterpret_cast<SOCKADDR *>(&localWgAddr),
&addrSize); &addrSize);
#if DEBUG_PROXY_PACKAGE
InetNtop(AF_INET, &localWgAddr.sin_addr.s_addr, ipAddr, MAX_IP_LEN); InetNtop(AF_INET, &localWgAddr.sin_addr.s_addr, ipAddr, MAX_IP_LEN);
SPDLOG_TRACE(TEXT(">>> Scoket Out {1} Recv {0} bytes from {2}:{3}"), SPDLOG_TRACE(TEXT(">>> Scoket Out {1} Recv {0} bytes from {2}:{3}"),
iRecvBytes, iRecvBytes,
pProxy->udpProxySock, pProxy->udpProxySock,
ipAddr, ipAddr,
ntohs(localWgAddr.sin_port)); ntohs(localWgAddr.sin_port));
#endif
#if 0 #if 0
if (iRecvBytes >= (1450 - SCG_UDP_HEAD_SIZE)) { if (iRecvBytes >= (1450 - SCG_UDP_HEAD_SIZE)) {
SPDLOG_WARN(TEXT("!Maybe MTU overflow: Current package {0} bytes, UDP MTU 1450, SCG Head Used {1} bytes"), SPDLOG_WARN(TEXT("!Maybe MTU overflow: Current package {0} bytes, UDP MTU 1450, SCG Head Used {1} bytes"),
@ -186,7 +201,7 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) {
// 增加SCG包头数据长度 // 增加SCG包头数据长度
iRecvBytes += 11; iRecvBytes += 11;
#if DEBUG_PROXY_PACKAGE
if (GetGlobalCfgInfo()->logLevel == spdlog::level::trace) { if (GetGlobalCfgInfo()->logLevel == spdlog::level::trace) {
const auto start = std::begin(recvBuf); const auto start = std::begin(recvBuf);
std::copy_n(start, iRecvBytes, std::begin(arr)); std::copy_n(start, iRecvBytes, std::begin(arr));
@ -195,23 +210,26 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) {
svrId, svrId,
id); id);
} }
#endif
sendBytes = sendto(pProxy->scgGwSock, sendBytes = sendto(pProxy->scgGwSock,
reinterpret_cast<char *>(recvBuf), reinterpret_cast<char *>(recvBuf),
iRecvBytes, iRecvBytes,
0, 0,
reinterpret_cast<SOCKADDR *>(&scgAddr), reinterpret_cast<SOCKADDR *>(&scgAddr),
sizeof(SOCKADDR)); sizeof(SOCKADDR));
#if DEBUG_PROXY_PACKAGE
memset(ipAddr, 0, MAX_IP_LEN); memset(ipAddr, 0, MAX_IP_LEN);
InetNtop(AF_INET, &scgAddr.sin_addr.s_addr, ipAddr, MAX_IP_LEN); InetNtop(AF_INET, &scgAddr.sin_addr.s_addr, ipAddr, MAX_IP_LEN);
SPDLOG_TRACE(TEXT("<<< Scoket Out Send {0} bytes to {2}:{3}"), SPDLOG_TRACE(TEXT("<<< Scoket Out Send {0} bytes to {2}:{3}"),
sendBytes, sendBytes,
pProxy->scgGwSock, pProxy->scgGwSock,
ipAddr, ipAddr,
ntohs(scgAddr.sin_port)); ntohs(scgAddr.sin_port));
#endif
} }
Sleep(100); //Sleep(100);
} }
return 0; return 0;
} }

View File

@ -1103,7 +1103,6 @@ int RemoveAllIntelnetConnectSharing() {
SPDLOG_DEBUG(TEXT("Remove {0}-{1} ICS"), ifIndex, pAdapter->AdapterName); SPDLOG_DEBUG(TEXT("Remove {0}-{1} ICS"), ifIndex, pAdapter->AdapterName);
} }
} }
} else { } else {
SPDLOG_ERROR(TEXT("Get {0}-{1} ICS status error: {2}"), ifIndex, pAdapter->AdapterName, ret); SPDLOG_ERROR(TEXT("Get {0}-{1} ICS status error: {2}"), ifIndex, pAdapter->AdapterName, ret);
} }