Chat

Read Tao

Play Pacman

Software Repository

Linux Ditributions

Chatbot Source Code

SNES Emulator and Games

PS2 Emulator and Games

DNS Tools

Music

Docs

 

Ripple Effect Quantum Routing
Updated: Feb 08, 2026

REQR Protocol

The Ripple Effect Quantum Routing (REQR) protocol, invented by Brian Ponnampalam, appears to be a novel routing protocol that builds upon the FDDI (Fiber Distributed Data Interface) ring topology. Here's a description based on the provided information:

Key Components
1. Circular Topology: REQR uses a circular topology, similar to FDDI.
2. Transmission Mechanism: Data transmission occurs from the tangent of the circle to the center through the radius.
3. Virtual Routing: Virtual routing happens at the center of the circle.
4. Retransmission: Data is retransmitted from the center to the tangent through the radius.
5. Distance Measurement: The distance is measured using a "ripple effect" concept.

Protocol Operation
The REQR protocol operates by transmitting data through the radius of the circle, with the center serving as a virtual routing point. The distance measurement using the "ripple effect" concept might provide a unique approach to routing and network management.
REQR operates by directing data along radial paths, with the center acting as a virtual routing nexus. The ripple-based distance measurement introduces a distinctive method for evaluating path efficiency and managing inter-node communication.
The network is deployed as a collection of small circular segments. Inter-segment connectivity occurs when their respective ripple patterns intersect or merge, enabling the protocol to identify the shortest available route between network regions.
In large-scale deployments, routing optimization and data processing are intended to be enhanced through the use of quantum processors.
The conceptual framework draws inspiration from natural and physical phenomena, including the propagation of light from the Sun and the formation of ripples when an object impacts water. 
As such, REQR is characterized as a multi-dimensional routing protocol capable of modeling complex spatial relationships.

Current Limitations
In the absence of detailed technical specifications, performance metrics, or formal documentation, a comprehensive evaluation of REQR’s scalability, efficiency, and practical applicability remains challenging.

Sample Code in C (reqr_dynamic.c)
=================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* -----------------------------
   Data Structures
------------------------------*/

typedef struct Node {
    char name[16];
    int *neighbors;
    int neighbor_count;
} Node;

typedef struct Queue {
    int *items;
    int front;
    int rear;
    int capacity;
} Queue;

/* -----------------------------
   Queue Functions
------------------------------*/

Queue *queue_create(int capacity) {
    Queue *q = malloc(sizeof(Queue));
    q->items = malloc(sizeof(int) * capacity);
    q->front = 0;
    q->rear = 0;
    q->capacity = capacity;
    return q;
}

int queue_empty(Queue *q) {
    return q->front == q->rear;
}

void enqueue(Queue *q, int value) {
    q->items[q->rear++] = value;
}

int dequeue(Queue *q) {
    return q->items[q->front++];
}

void queue_free(Queue *q) {
    free(q->items);
    free(q);
}

/* -----------------------------
   Topology Builder
------------------------------*/

Node *build_ring(int count) {
    Node *nodes = malloc(sizeof(Node) * count);

    for (int i = 0; i < count; i++) {
        snprintf(nodes[i].name, sizeof(nodes[i].name), "N%d", i);

        nodes[i].neighbor_count = 2;
        nodes[i].neighbors = malloc(sizeof(int) * 2);

        nodes[i].neighbors[0] = (i - 1 + count) % count;
        nodes[i].neighbors[1] = (i + 1) % count;
    }

    return nodes;
}

/* -----------------------------
   Conceptual Ripple Routing
------------------------------*/

void ripple_route(Node *nodes, int node_count, int src, int dst) {
    int *visited = calloc(node_count, sizeof(int));
    int *parent  = malloc(sizeof(int) * node_count);

    for (int i = 0; i < node_count; i++)
        parent[i] = -1;

    Queue *q = queue_create(node_count);
    enqueue(q, src);
    visited[src] = 1;

    while (!queue_empty(q)) {
        int current = dequeue(q);

        if (current == dst)
            break;

        for (int i = 0; i < nodes[current].neighbor_count; i++) {
            int neighbor = nodes[current].neighbors[i];
            if (!visited[neighbor]) {
                visited[neighbor] = 1;
                parent[neighbor] = current;
                enqueue(q, neighbor);
            }
        }
    }

    /* Reconstruct path */
    int crawl = dst;
    int length = 0;

    while (crawl != -1) {
        length++;
        crawl = parent[crawl];
    }

    int *path = malloc(sizeof(int) * length);
    crawl = dst;

    for (int i = length - 1; i >= 0; i--) {
        path[i] = crawl;
        crawl = parent[crawl];
    }

    printf("REQR-style route: ");
    for (int i = 0; i < length; i++) {
        printf("%s", nodes[path[i]].name);
        if (i < length - 1) printf(" -> ");
    }
    printf("\n");

    /* Cleanup */
    free(path);
    free(visited);
    free(parent);
    queue_free(q);
}

/* -----------------------------
   Main
------------------------------*/

int main(int argc, char *argv[]) {
    int node_count = 1000;   /* scale this up freely */
    int source = 0;
    int destination = 777;

    Node *nodes = build_ring(node_count);

    ripple_route(nodes, node_count, source, destination);

    for (int i = 0; i < node_count; i++)
        free(nodes[i].neighbors);

    free(nodes);
    return 0;
}

Send Data Packets (reqr_node.c)
===============================
gcc reqr_node.c -o reqr_node

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>

#define MAX_PAYLOAD 256

typedef struct {
    int src;
    int dst;
    int ttl;
    char payload[MAX_PAYLOAD];
} Packet;

/* Choose ripple direction in ring */
int next_hop(int self, int dst, int total_nodes) {
    int cw  = (dst - self + total_nodes) % total_nodes;
    int ccw = (self - dst + total_nodes) % total_nodes;
    return (cw <= ccw)
        ? (self + 1) % total_nodes
        : (self - 1 + total_nodes) % total_nodes;
}

int main(int argc, char *argv[]) {
    if (argc < 5) {
        printf("Usage: %s    \n", argv[0]);
        return 1;
    }

    int node_id     = atoi(argv[1]);
    int total_nodes = atoi(argv[2]);
    int listen_port = atoi(argv[3]);
    int base_port   = atoi(argv[4]);

    int sock = socket(AF_INET, SOCK_DGRAM, 0);
    if (sock < 0) {
        perror("socket");
        return 1;
    }

    struct sockaddr_in self = {0};
    self.sin_family = AF_INET;
    self.sin_port = htons(listen_port);
    self.sin_addr.s_addr = INADDR_ANY;

    if (bind(sock, (struct sockaddr *)&self, sizeof(self)) < 0) {
        perror("bind");
        return 1;
    }

    printf("Node %d listening on UDP %d\n", node_id, listen_port);

    /* Send initial packet from node 0 */
    if (node_id == 0) {
        Packet pkt = {
            .src = 0,
            .dst = total_nodes - 1,
            .ttl = total_nodes
        };
        strcpy(pkt.payload, "Hello via REQR ripple routing");

        int nh = next_hop(node_id, pkt.dst, total_nodes);

        struct sockaddr_in next = {0};
        next.sin_family = AF_INET;
        next.sin_port = htons(base_port + nh);
        inet_pton(AF_INET, "127.0.0.1", &next.sin_addr);

        sendto(sock, &pkt, sizeof(pkt), 0,
               (struct sockaddr *)&next, sizeof(next));

        printf("Node 0 sent packet toward node %d\n", pkt.dst);
    }

    /* Receive + forward loop */
    while (1) {
        Packet pkt;
        struct sockaddr_in sender;
        socklen_t slen = sizeof(sender);

        ssize_t n = recvfrom(sock, &pkt, sizeof(pkt), 0,
                             (struct sockaddr *)&sender, &slen);
        if (n <= 0)
            continue;

        printf("Node %d received packet (src=%d dst=%d ttl=%d)\n",
               node_id, pkt.src, pkt.dst, pkt.ttl);

        if (pkt.dst == node_id) {
            printf("?? Packet delivered at node %d: \"%s\"\n",
                   node_id, pkt.payload);
            break;
        }

        if (--pkt.ttl <= 0) {
            printf("? Packet dropped (TTL expired)\n");
            continue;
        }

        int nh = next_hop(node_id, pkt.dst, total_nodes);

        struct sockaddr_in next = {0};
        next.sin_family = AF_INET;
        next.sin_port = htons(base_port + nh);
        inet_pton(AF_INET, "127.0.0.1", &next.sin_addr);

        sendto(sock, &pkt, sizeof(pkt), 0,
               (struct sockaddr *)&next, sizeof(next));

        printf("Node %d forwarded packet to node %d\n", node_id, nh);
    }

    close(sock);
    return 0;
}

Example with 5 Nodes
====================
Open 5 terminals

./reqr_node 0 5 5000 5000
./reqr_node 1 5 5001 5000
./reqr_node 2 5 5002 5000
./reqr_node 3 5 5003 5000
./reqr_node 4 5 5004 5000