From 8a83a84f0f139251f0c6fa86d8bf677be353165a Mon Sep 17 00:00:00 2001 From: benStre Date: Sat, 11 Nov 2023 05:41:05 +0100 Subject: [PATCH] add network tracing --- compiler/compiler.ts | 2 +- compiler/protocol_types.ts | 2 + datex_short.ts | 12 +++++ docs/manual/06 Supranet Networking.md | 16 ++++++ docs/manual/assets/network_trace.png | Bin 0 -> 177235 bytes network/client.ts | 9 +++- runtime/runtime.ts | 67 ++++++++++++++++++++------ types/addressing.ts | 67 ++++++++++++++++++++++++-- utils/blobify.ts | 1 - utils/global_types.ts | 2 + 10 files changed, 155 insertions(+), 23 deletions(-) create mode 100644 docs/manual/assets/network_trace.png diff --git a/compiler/compiler.ts b/compiler/compiler.ts index b80a8ae8..9a1e6f4c 100644 --- a/compiler/compiler.ts +++ b/compiler/compiler.ts @@ -79,7 +79,7 @@ export class DatexResponse { export const ProtocolDataTypesMap = [ - "REQUEST", "RESPONSE", "DATA", "TMP_SCOPE", "LOCAL", "HELLO", "DEBUGGER", "SOURCE_MAP", "UPDATE", "GOODBYE" + "REQUEST", "RESPONSE", "DATA", "TMP_SCOPE", "LOCAL", "HELLO", "DEBUGGER", "SOURCE_MAP", "UPDATE", "GOODBYE", "TRACE", "TRACE_BACK" ] diff --git a/compiler/protocol_types.ts b/compiler/protocol_types.ts index ded80ed1..d6712cc1 100644 --- a/compiler/protocol_types.ts +++ b/compiler/protocol_types.ts @@ -12,4 +12,6 @@ export enum ProtocolDataType { SOURCE_MAP = 7, // send a source map for a scope UPDATE = 8, // like normal request, but don't propgate updated pointer values back to sender (prevent recursive loop) GOODBYE = 9, // info message that endpoint is offline + TRACE = 10, // record endpoint hops + TRACE_BACK = 11 // record endpoint hops, backtrip } \ No newline at end of file diff --git a/datex_short.ts b/datex_short.ts index d8166406..b098a9f3 100644 --- a/datex_short.ts +++ b/datex_short.ts @@ -459,6 +459,16 @@ export function f(name:[T]|T):endpoint_by_endpoint_name return Target.get((typeof name == "string" ? name : name[0])); } +export function printTrace(endpoint: string|Endpoint) { + endpoint = typeof endpoint == "string" ? Target.get(endpoint) as Endpoint : endpoint; + return endpoint.printTrace() +} + +type printTraceT = typeof printTrace; +declare global { + const printTrace: printTraceT; +} + export function syncedValue(parent:any|Pointer, key?:any):PointerProperty { return PointerProperty.get(parent, key); @@ -576,4 +586,6 @@ globalThis.static_pointer = static_pointer; // @ts-ignore globalThis.f = f; // @ts-ignore +globalThis.printTrace = printTrace; +// @ts-ignore globalThis.props = props; \ No newline at end of file diff --git a/docs/manual/06 Supranet Networking.md b/docs/manual/06 Supranet Networking.md index 3a06d7de..d3e9ed35 100644 --- a/docs/manual/06 Supranet Networking.md +++ b/docs/manual/06 Supranet Networking.md @@ -18,6 +18,22 @@ await Datex.Supranet.connectTemporary() ``` +## Debugging + +### Network traces + +The `printTrace` function can be used to create a network trace report for debugging purposes. +`printTrace` also collects and shows additional relevant data like round-trip time and endpoint interface types. +To create a network trace, DATEX `TRACE` and `TRACE_BACK` messages are routed through the network to the destination endpoint and back. + +![Network Trace Report](./assets/network_trace.png) + +The raw trace output can be retrieved by calling the `.trace()` method on an endpoint: + +```ts +const trace = await f('@+unyt2').trace() +``` + ## Creating custom DATEX channels with the ComInterface [TODO] diff --git a/docs/manual/assets/network_trace.png b/docs/manual/assets/network_trace.png new file mode 100644 index 0000000000000000000000000000000000000000..5999ad2ded2cea743e97b7761ebb289119cfb32e GIT binary patch literal 177235 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 (7z#9`Y%vQ0LdO?IhNc29~FI;iKA?1 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 // multiple endpoints + is_bidirectional_hub?: boolean, // allow the same block to go in and out eg a -> this interface -> this runtime -> this interface again -> b in: boolean // can receive data out: boolean // can send data global?: boolean // has a connection to the global network, use as a default interface if possible @@ -253,6 +255,7 @@ export abstract class CommonInterface implements Co /** HTTP interface */ +// @deprecated class HttpClientInterface extends CommonInterface { override type = "http" @@ -509,6 +512,10 @@ class WebsocketClientInterface extends CommonInterface { override out = true override type = "websocket" + get description() { + return `${this.protocol}://${this.host}` + } + private protocol:'ws'|'wss' = 'wss'; // use wss or ws private is_first_try = true @@ -780,7 +787,7 @@ export class InterfaceManager { return InterfaceManager.handleNoRedirectFound(to); } // error: loopback - else if (source == comInterface) { + else if (!source?.is_bidirectional_hub && source == comInterface) { return InterfaceManager.handleNoRedirectFound(to); } // send diff --git a/runtime/runtime.ts b/runtime/runtime.ts index 28ddabf1..676736dc 100644 --- a/runtime/runtime.ts +++ b/runtime/runtime.ts @@ -811,14 +811,16 @@ export class Runtime { * Executes a DATEX Binary locally and returns the result * @param dxb DATEX Binary * @param context_location context in which the script should be executed (URL) + * @param overrideMeta custom override header metadata + * @param forceLocalExecution execute block even if receiver is external (default false) * @returns evaluated DATEX result */ - public static async executeDXBLocally(dxb:ArrayBuffer, context_location?:URL, overrideMeta?: Partial):Promise { + public static async executeDXBLocally(dxb:ArrayBuffer, context_location?:URL, overrideMeta?: Partial, forceLocalExecution = false):Promise { // generate new header using executor scope header let header:dxb_header; let dxb_body:ArrayBuffer; - const res = await this.parseHeader(dxb) + const res = await this.parseHeader(dxb, undefined, false, forceLocalExecution) if (res instanceof Array) { header = res[0]; dxb_body = res[1].buffer; @@ -1078,14 +1080,14 @@ export class Runtime { // default labels: - Pointer.createLabel({ - REQUEST:ProtocolDataType.REQUEST, - RESPONSE:ProtocolDataType.RESPONSE, - DATA:ProtocolDataType.DATA, - HELLO:ProtocolDataType.HELLO, - LOCAL:ProtocolDataType.LOCAL, - UPDATE:ProtocolDataType.UPDATE, - }, "TYPE"); + // Pointer.createLabel({ + // REQUEST:ProtocolDataType.REQUEST, + // RESPONSE:ProtocolDataType.RESPONSE, + // DATA:ProtocolDataType.DATA, + // HELLO:ProtocolDataType.HELLO, + // LOCAL:ProtocolDataType.LOCAL, + // UPDATE:ProtocolDataType.UPDATE, + // }, "TYPE"); // create std static scope this.STD_STATIC_SCOPE = {}; @@ -1391,7 +1393,7 @@ export class Runtime { } // returns header info and dxb body, or routing information if not directed to own endpoint - static async parseHeader(dxb:ArrayBuffer, force_sym_enc_key?:CryptoKey, force_only_header_info = false):Promise<[dxb_header, Uint8Array, Uint8Array, Uint8Array]|dxb_header> { + static async parseHeader(dxb:ArrayBuffer, force_sym_enc_key?:CryptoKey, force_only_header_info = false, force_no_redirect = false):Promise<[dxb_header, Uint8Array, Uint8Array, Uint8Array]|dxb_header> { const res = this.parseHeaderSynchronousPart(dxb); @@ -1402,7 +1404,8 @@ export class Runtime { iv: Uint8Array, encrypted_key: ArrayBuffer; - if (!res[0].redirect && !force_only_header_info) { + // no redirect + if ((!res[0].redirect && !force_only_header_info) || force_no_redirect) { [header, data_buffer, header_buffer, signature_start, iv, encrypted_key] = res; // save encrypted key? @@ -1443,7 +1446,7 @@ export class Runtime { } - // only return header + // only return header (for redirect) else return res[0]; } @@ -1605,7 +1608,7 @@ export class Runtime { * @param header_callback callback method returning information for the evaluated header before executing the dxb * @returns header information (after executing the dxb) */ - private static async handleDatexIn(dxb:ArrayBuffer, last_endpoint:Endpoint, full_scope_callback?:(sid:number, scope:any, error?:boolean)=>void, _?:any, header_callback?:(header:dxb_header)=>void, source: Source): Promise { + private static async handleDatexIn(dxb:ArrayBuffer, last_endpoint:Endpoint, full_scope_callback?:(sid:number, scope:any, error?:boolean)=>void, _?:any, header_callback?:(header:dxb_header)=>void, source?: Source): Promise { let header:dxb_header, data_uint8:Uint8Array; @@ -1649,7 +1652,23 @@ export class Runtime { console.log("TODO: handle proxy sign for " + res.sender) } + // propagate TRACE message try { + const to = [...(res.routing?.receivers??[])][0]; + if (res.type == ProtocolDataType.TRACE || res.type == ProtocolDataType.TRACE_BACK) { + const trace = await this.executeDXBLocally(dxb, undefined, undefined, true); + if (to instanceof Endpoint && trace instanceof Array) { + try { + await to.trace({header: res, source, trace}) + } + catch {} + return {}; + } + else { + logger.error("Invalid TRACE message") + } + } + await this.redirectDatex(dxb, res, false, source); } catch (e) { @@ -1683,6 +1702,7 @@ export class Runtime { // get existing scope or create new let scope = scope_map?.scope ?? this.createNewInitialScope(header); + scope.source = source; // those values can change later in the while loop let _header = header; @@ -1812,6 +1832,7 @@ export class Runtime { else if ( header.type == ProtocolDataType.RESPONSE || header.type == ProtocolDataType.DATA || + header.type == ProtocolDataType.TRACE_BACK || header.type == ProtocolDataType.LOCAL) { const unique_sid = header.sid+"-"+header.return_index; @@ -1839,7 +1860,7 @@ export class Runtime { } - private static async handleScopeResult(header:dxb_header, scope: datex_scope, return_value:any){ + private static async handleScopeResult(header:dxb_header, scope: datex_scope, return_value:any, source?: Source){ const unique_sid = header.sid+"-"+header.return_index; @@ -1854,8 +1875,14 @@ export class Runtime { // handle response else if (header.type == ProtocolDataType.RESPONSE || header.type == ProtocolDataType.DATA || + header.type == ProtocolDataType.TRACE_BACK || header.type == ProtocolDataType.LOCAL) { + + if (header.type == ProtocolDataType.TRACE_BACK) { + return_value.push({endpoint:Runtime.endpoint, interface: {type: scope.source?.type, description: scope.source?.description}, timestamp: new Date()}); + } + // handle result if (this.callbacks_by_sid.has(unique_sid)) { this.callbacks_by_sid.get(unique_sid)[0](return_value); @@ -1909,7 +1936,15 @@ export class Runtime { logger.error("ignoring unsigned GOODBYE message") } } - + + else if (header.type == ProtocolDataType.TRACE) { + const sender = return_value[0].endpoint; + + console.log("TRACE request from " + sender); + return_value.push({endpoint:Runtime.endpoint, interface: {type: scope.source?.type, description: scope.source?.description}, timestamp: new Date()}); + + this.datexOut(["?", [return_value], {type:ProtocolDataType.TRACE_BACK, to:sender, return_index:header.return_index, encrypt:header.encrypted, sign:header.signed}], sender, header.sid, false); + } else if (header.type == ProtocolDataType.DEBUGGER) { logger.success("DEBUGGER ?", return_value) diff --git a/types/addressing.ts b/types/addressing.ts index 85b7f653..60e24908 100644 --- a/types/addressing.ts +++ b/types/addressing.ts @@ -2,14 +2,15 @@ import { BinaryCode } from "../compiler/binary_codes.ts"; import { Pointer } from "../runtime/pointers.ts"; import { ValueConsumer } from "./abstract_types.ts"; import { ValueError } from "./errors.ts"; -import { Compiler } from "../compiler/compiler.ts"; -import type { datex_scope } from "../utils/global_types.ts"; +import { Compiler, ProtocolDataTypesMap } from "../compiler/compiler.ts"; +import type { datex_scope, dxb_header } from "../utils/global_types.ts"; import { buffer2hex, hex2buffer } from "../utils/utils.ts"; import { clause, Disjunction } from "./logic.ts"; import { Runtime, StaticScope } from "../runtime/runtime.ts"; import { logger } from "../utils/global_values.ts"; import { Datex } from "../mod.ts"; import { ProtocolDataType } from "../compiler/protocol_types.ts"; +import { ESCAPE_SEQUENCES } from "../utils/logger.ts"; type target_prefix_person = "@"; type target_prefix_id = "@@"; @@ -290,11 +291,69 @@ export class Endpoint extends Target { * Generates a network trace * (for routing debugging) */ - public async trace() { - const res = await Runtime.datexOut(['[]', [], {type:ProtocolDataType.REQUEST, sign:false}], this, undefined, true); + public async trace(previous?: {header: dxb_header, trace: any[], source?: any}):Promise<{endpoint: Endpoint, timestamp: Date, interface: {type?: string, description?:string}}[]> { + if (previous) { + console.log(ProtocolDataTypesMap[previous.header.type??ProtocolDataType.TRACE]+" from " + previous.header.sender + " to " + this); + } + const trace = previous?.trace ?? []; + trace.push({endpoint:Runtime.endpoint, interface: {type: previous?.source?.type, description: previous?.source?.description}, timestamp: new Date()}); + + const res = await Runtime.datexOut(['?', [trace], {type:previous?.header?.type ?? ProtocolDataType.TRACE, sign:false}], this, previous?.header?.sid, true, false, undefined, false, undefined, 60_000); return res; } + public async printTrace() { + const format = (val:any) => Runtime.valueToDatexStringExperimental(val, true, true); + + let trace: {endpoint: Endpoint, timestamp: Date, interface: {type?: string, description?:string}}[] + try { + trace = await this.trace(); + } + catch { + let title = `${ESCAPE_SEQUENCES.BOLD}DATEX Network Trace\n${ESCAPE_SEQUENCES.RESET}`; + title += `${format(Runtime.endpoint)}${ESCAPE_SEQUENCES.RESET} -> ${format(this)}${ESCAPE_SEQUENCES.RESET}\n\n` + title += `${ESCAPE_SEQUENCES.RED}Error: Endpoint not reachable` + console.log(title); + return; + } + + if (!trace) throw new Error("Invalid trace"); + + const resolvedEndpointData = trace.find((data) => trace.indexOf(data)!=0 && (data.endpoint == this || data.endpoint.main == this || (data.endpoint == Runtime.endpoint && (this as any)==Datex.LOCAL_ENDPOINT)))!; + const resolveEndpointIndex = trace.indexOf(resolvedEndpointData); + const resolvedEndpoint = resolvedEndpointData.endpoint; + const hopsToDest = resolveEndpointIndex; + const hopsFromDest = trace.length - resolveEndpointIndex - 1; + + let title = `${ESCAPE_SEQUENCES.BOLD}DATEX Network Trace\n${ESCAPE_SEQUENCES.RESET}`; + title += `${format(Runtime.endpoint)}${ESCAPE_SEQUENCES.RESET} -> ${format(resolvedEndpoint)}${ESCAPE_SEQUENCES.RESET}\n\n` + let pre = '' + let logs = '' + const rtt = trace.at(-1).timestamp.getTime() - trace.at(0).timestamp.getTime(); + + pre += `-----------------------------\n` + pre += `${ESCAPE_SEQUENCES.BOLD}Round-Trip Time: ${ESCAPE_SEQUENCES.RESET}${rtt}ms\n` + pre += `${ESCAPE_SEQUENCES.BOLD}Hops to Destination: ${ESCAPE_SEQUENCES.RESET}${hopsToDest}\n` + pre += `${ESCAPE_SEQUENCES.BOLD}Hops from Destination: ${ESCAPE_SEQUENCES.RESET}${hopsFromDest}\n` + pre += `-----------------------------\n\n` + + pre += `\n${ESCAPE_SEQUENCES.BOLD}Hops:${ESCAPE_SEQUENCES.RESET}\n\n`; + + for (let i = 0; i ${format(next.endpoint)}${ESCAPE_SEQUENCES.RESET}\n\n` + } + + + console.log(title+pre+logs) + } + + public async getCertifier(){ // resolve alias from Blockchain return this.#certifier = Runtime.Blockchain.getEndpointCertifier(this); diff --git a/utils/blobify.ts b/utils/blobify.ts index d0366bec..af57c628 100644 --- a/utils/blobify.ts +++ b/utils/blobify.ts @@ -8,7 +8,6 @@ import { client_type } from "./constants.ts"; */ export async function blobifyFile(path: string|URL) { const [script] = await Datex.Runtime.getURLContent(path.toString(), true, true) as [string, string]; - console.log("script", script) return blobifyScript(script); } diff --git a/utils/global_types.ts b/utils/global_types.ts index 2011133c..1c8d307e 100644 --- a/utils/global_types.ts +++ b/utils/global_types.ts @@ -146,6 +146,8 @@ export type datex_scope = { sender: Endpoint, // sender of the scope origin: Endpoint, // origin to use for pointers / casting (default is sender) + source?: any // original source (com interface) from which this scope was received + current_index: number, start_index: number, // keep track of index to jump back to index_offset: number, // current_index + index_offset = actual index, everything left of the index_offset is no longer cached in the buffer