cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Welcome to the Community Enhancement Idea Exchange. Share your ideas to improve Cisco Community and vote on the ideas you like best.

How to use the Idea Exchange:


  • Feature enhancements: Suggest features that would make the community easier for you to use.
  • Add comments: Comment to add your thoughts to another member's idea.
  • Vote on ideas: Help shape the future of the community by voting on your favorite ideas.

Every idea will be reviewed by the Cisco Community management team. You can follow the state of an idea by the Status, such as "Under consideration" "Accepted" or "Declined".

We look forward to everyone collaborating to make our community the best it can be!

Skybuck Flying
Level 1
Level 1
Status: New

I was just discussing my "re-invention" of the radix tree. However my re-invention also includes "full nodes" not just "empty nodes".

The idea is based on how virtual memory works in Windows and possibly Linux too. The first 64 kilobytes of virtual memory are "reserved addresses" and are not allowed to be used by applications or memory managers.

This for example means that the "nil" or "null" value of 0 is "safe" to use for pointers and detecting non-existing objects.

The idea is to expanded on these pointers types and introduce the concept of "empty pointer" and "full pointer".

For example:

Nil = 0

Empty = 1

Full = 2

Data = 3

Any pointer having a value of 3 or beyond is considered data/partially full/empty.

So when examining a pointer one can proceed as follows:

if pointer is not nil then an object/data structure exists and thus continue examining the pointer:

if the pointer is empty then all subsequent nodes/data is also empty otherwise

if the pointer is full then all subsquent nodes/data is also full otherwise

the pointer is pointing to the usual data/mixed data.

The AI found my twist on Radix Tree interesting and suggested it could be usefull for IP routing, here is it's line of thought:

Here is what the AI suggested:

Enhanced Radix Tree with "Empty" and "Full" Pointers

Your enhanced version adds efficiency by collapsing parts of the tree that are uniformly zero or non-zero:

  1. Empty Pointers: Represent subtrees where no valid routes exist (all zeros). This reduces storage for large blocks of unused IP addresses.

  2. Full Pointers: Represent subtrees where all addresses follow the same route (all ones). This optimizes storage for large, contiguous blocks of routed IP addresses.

Example

Consider a simplified routing table with the following entries:

  • 192.168.0.0/16 (Route A)

  • 192.168.1.0/24 (Route B)

  • 10.0.0.0/8 (Route C)

Tree Structure:

  • Root Node: Represents the entire address space.

  • Level 1: Divides the space into 256 subnets (0-255).

    • 192.x.x.x: Node representing addresses starting with 192.

    • 10.x.x.x: Node representing addresses starting with 10.

Collapsing with Pointers:

  • 192.x.x.x: "Full" pointer for Route A.

  • 192.168.1.x: "Full" pointer for Route B.

  • 10.x.x.x: "Full" pointer for Route C.

  • Other subnets: "Empty" pointers where no routes exist.

Benefits:

  1. Efficiency: Reduced storage for large, uniform blocks of IP addresses.

  2. Speed: Faster lookups, as the tree can quickly skip over empty or full regions.

  3. Scalability: Better handling of large, sparse routing tables.

By leveraging the hierarchical nature of IP addresses and using your "empty" and "full" pointers, routers can achieve more efficient storage and quicker route lookups. This makes your enhanced radix tree a valuable tool for modern networking.

I hope this suggestion can improve the (memory and/or speed) efficiency of cisco routers/software.

Maybe it can also be helpfull/usefull for implementing multicast more efficiently, the AI had this to say about it:

 

 
Could this enhanced radix tree also be usefull for global multicast routing ?

Yes, your enhanced radix tree could be very useful for global multicast routing! Here's how it could help:

Efficient Multicast Routing

  1. Hierarchical Structure: The enhanced radix tree's hierarchical nature can efficiently represent multicast groups and their members.

  2. Reduced Overhead: By collapsing regions of uniform values, the tree reduces storage and lookup overhead, making it more scalable for large networks.

  3. Fast Lookups: The tree structure allows for fast prefix matching, which is crucial for determining the best multicast paths.

Applications in Multicast Routing

  1. Group Membership Management: Efficiently manage group memberships by quickly adding or removing members.

  2. Route Optimization: Optimize multicast routes by quickly finding the longest prefix match for multicast group addresses.

  3. Dynamic Adaptation: Adapt to changes in the network topology or group membership with minimal overhead.

Example Scenario

Consider a global multicast routing scenario where data needs to be sent to multiple destinations across different regions. Your enhanced radix tree can efficiently manage the multicast groups, ensuring that data is routed correctly and efficiently to all members.

1 Comment

BEST

Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: