One number for every port
A phone company’s network is millions of parts, nested inside each other. In 2005 Yasser Awad gave every part one number that says exactly where it sits. With it, the software that runs the network finds everything inside any part in a single read.
- The address node5shelf2slot3card1port17
- The same, in bits 000000010110 bits000105 bits000115 bits000015 bits00100017 bits
- One number 21,246,097
10 + 5 + 5 + 5 + 7 = 32 bits
Boxes inside boxes
Picture a building full of telephone equipment. The network has nodes, the big switches. A node holds shelves. A shelf has slots, each slot holds a card, and each card has ports, where the cables plug in.
The software that runs all this is the network manager. It keeps one record for every part, in a database, and it gets the same kind of question all day long: what is inside this? Which ports are on this card? Which cards are in this shelf?
The question is hardest at the worst moment. When a shelf loses power, every port inside it stops at once, and each one raises an alarm. The operator needs the whole list now, while customers wait. Try it on this node.
- Node 5
- Shelf 1
- Slot 1 › Card 1 › port 1port 2port 3port 4
- Slot 2 › Card 1 › port 1port 2port 3port 4
- Slot 3 › Card 1 › port 1port 2port 3port 4
- Slot 4 › Card 1 › port 1port 2port 3port 4
- Slot 5 › Card 1 › port 1port 2port 3port 4
- Slot 6 › Card 1 › port 1port 2port 3port 4
- Shelf 2
- Slot 1 › Card 1 › port 1port 2port 3port 4
- Slot 2 › Card 1 › port 1port 2port 3port 4
- Slot 3 › Card 1 › port 1port 2port 3port 4
- Slot 4 › Card 1 › port 1port 2port 3port 4
- Slot 5 › Card 1 › port 1port 2port 3port 4
- Slot 6 › Card 1 › port 1port 2port 3port 4
- Shelf 3
- Slot 1 › Card 1 › port 1port 2port 3port 4
- Slot 2 › Card 1 › port 1port 2port 3port 4
- Slot 3 › Card 1 › port 1port 2port 3port 4
- Slot 4 › Card 1 › port 1port 2port 3port 4
- Slot 5 › Card 1 › port 1port 2port 3port 4
- Slot 6 › Card 1 › port 1port 2port 3port 4
- Shelf 4
- Slot 1 › Card 1 › port 1port 2port 3port 4
- Slot 2 › Card 1 › port 1port 2port 3port 4
- Slot 3 › Card 1 › port 1port 2port 3port 4
- Slot 4 › Card 1 › port 1port 2port 3port 4
- Slot 5 › Card 1 › port 1port 2port 3port 4
- Slot 6 › Card 1 › port 1port 2port 3port 4
- Shelf 1
Shelf 2 lost power. 24 ports are down, and each one is an alarm. The network manager has to name every one of them, now.
A real network is far bigger than one node. His numbering has room for 1,024 nodes. Each node holds 32 shelves, each shelf 32 slots, each slot 32 cards, and each card 128 ports. One full shelf can hold 131,072 ports.
The usual way walks down the tree
Most databases store a tree the simple way: each part remembers its parent.
A port knows its card, a card knows its slot, a slot knows its shelf. It is the same as a comments table where every reply stores the id of the comment it answers, with a foreign key.
That is easy to write and slow to ask. To list the ports in a shelf, the database finds the shelf’s slots, then the cards in each slot, then the ports on each card. Every step down is one more jump into the index. And the patent points out that this slowness hurts most at the worst time: while a network is coming back from an outage.
Below, both ways answer the same question side by side. Make the shelf bigger and run it again.
One full shelf: 32 slots, 1,024 cards, 131,072 ports.
1,057 jumpsthe usual way
1 jumpwith his key
Which ports are inside this shelf?
Done. The usual way took 10 jumps. His key took 1. Both found the same 24 ports.
Slot table, sorted by parent
Card table, sorted by parent
Port table, sorted by parent
10 jumps into the index · 33 rows read
Port table, sorted by his key
1 jump into the index · 24 rows read
One bar is one row of the index. Light bars are rows that belong to other shelves.
Make the number the address
You already use numbers that work like this. A phone number starting with +1 613 rings in the Ottawa area. An IP address like 10.1.2.3 is inside the network 10.1.0.0/16 because it starts with 10.1.
Yasser did the same for equipment. Every part gets one 32-bit number, the same size as an IPv4 address. The first 10 bits name the node, the next 5 the shelf, then 5 for the slot, 5 for the card and 7 for the port. Each group is a bit field. A part higher up fills its own groups and leaves zeros below.
Now sort the table by that number. Everything inside one part shares the same first bits, so it sits together in one unbroken run. The database jumps to the first number once and reads forward to the last: a range scan. Move the sliders, then pick what to search inside.
Decimal 21,246,097 Hex 01443091h
node 5 › shelf 2 › slot 3 › card 1 › port 17
WHERE key >= 21,233,664
AND key < 21,364,736 - shelf5.1.0.0.021,102,592
- port5.1.6.8.121,128,193
- shelf5.2.0.0.021,233,664
- port5.2.1.3.521,238,149
- port5.2.2.4.621,242,374
- slot5.2.3.0.021,245,952
- port5.2.3.1.1721,246,097
- shelf5.3.0.0.021,364,736
- port5.3.8.1.321,397,635
Everything in shelf 2 starts with the same 15 bits, so it sorts into one unbroken run: 5 rows here. Jump to 21,233,664 once, then read forward until 21,364,736. No joins, no second table.
-
Every possible key0 to 4,294,967,295
-
node 520,971,520 to 25,165,823
-
node 5 › shelf 221,233,664 to 21,364,735
-
node 5 › shelf 2 › slot 321,245,952 to 21,250,047
-
node 5 › shelf 2 › slot 3 › card 121,246,080 to 21,246,207
Port 17 sits at 21,246,097, inside every range above it.
The database jumps once, to 21,233,664, then reads forward to 21,364,735. One stretch of the index, 131,072 numbers long, and nothing outside it.
As an IP address, port 17 is 1.68.48.145. The chosen part is the network 1.68.0.0/15: every key that starts with the same 15 bits.
The same trick, in the tools you use
Modern databases have their own names for this idea.
A materialized path, Postgres ltree, a DynamoDB sort key and an IP subnet all do the same. Each puts the path to a thing inside one sortable value, so a whole branch becomes one stretch of an index. A recursive query is the walk down the tree from the race above.
Each tab asks for the same part you picked above. Change the key, and every tab follows.
One fixed-size integer per part. Every relational database of 2005 could store it, sort it and index it, with no extension and no text tricks. It sorts in true number order at every level, and one comparison tells you whether a part is inside another.
Port 17 is stored as
key = 21246097 Everything inside node 5, shelf 2
WHERE key >= 21233664
AND key < 21364736 One jump into a sorted index, to 21,233,664, then read forward. The keys are plain integers, so any database could index them in 2005, and numbers always sort in true order.
Port 17 is stored as
1.68.48.145 Everything inside node 5, shelf 2
(1.68.48.145 & 255.254.0.0)
== 1.68.0.0
// so it is inside 1.68.0.0/15 An IPv4 address is a 32-bit number too, and a network is every address that starts with the same bits. In his key, node 5, shelf 2 is exactly the network 1.68.0.0/15. Routers make this check for every packet.
Port 17 is stored as
path = '/5/2/3/1/17/' Everything inside node 5, shelf 2
WHERE path LIKE '/5/2/%' The same idea in text: the whole path sits in one column, and a prefix finds everything below it. Text compares letter by letter, so 10 sorts before 9 unless you pad the numbers. His fixed bit widths sort in true number order by design.
Port 17 is stored as
path = 'n5.s2.sl3.c1.p17' Everything inside node 5, shelf 2
WHERE path <@ 'n5.s2' A Postgres data type made for paths. The <@ operator means “is inside”, and a GiST index answers it without walking the tree level by level.
Port 17 is stored as
pk = 'NODE#0005'
sk = 'SHELF#02#SLOT#03#CARD#01#PORT#017' Everything inside node 5, shelf 2
KeyConditionExpression:
pk = :node AND begins_with(sk, :pre)
:node = 'NODE#0005'
:pre = 'SHELF#02#' Inside one partition, DynamoDB keeps items sorted by their sort key, so begins_with reads one stretch. The numbers are padded with zeros so that text order matches number order.
Port 17 is stored as
parent_id = (the id of card 1) Everything inside node 5, shelf 2
WITH RECURSIVE inside AS (
SELECT id FROM part WHERE id = :shelf
UNION ALL
SELECT p.id FROM part p
JOIN inside i ON p.parent_id = i.id
)
SELECT * FROM inside; One statement, but the database still works down one level at a time: first the slots, then the cards, then the ports. It is the level-by-level walk from the race above.
What the patent protects, in plain words
A patent spells out exactly what it protects, point by point, in its numbered list. Here are his four big ones.
Every part gets one number, and no two records in the whole database share it. (the abstract)
The number is cut into groups of bits, one group for each level: node, shelf, card and port. Each group names the part above at that level. (point 1)
“Inside” is a comparison. A record is inside a container when its number is bigger than the container’s number, and smaller than the number of the next container at the same level. (point 15)
Each table is kept sorted by that number. The groups can have different sizes, such as 10, 5, 5, 5 and 7 bits. (points 17 to 20)
The patent shows it with small 16-bit keys, one hex digit for each level, so you can read the address right off the number. Node 1 is 1000 in hex, which is 4096. Its shelf 1 is 1100, 4352. That shelf’s card 1 is 1110, 4368. Node 2 is 2000, 8192.
To find the cards in node 1, the patent searches the card table for keys bigger than 4096 and smaller than 8192. Pick any container below and run the same search.
- Card 14368
- Card 24384
- Card 14624
- Card 18464
Underlined numbers are the patent's own example. The others follow the same rule.
SELECT * FROM card WHERE key > 4096 AND key < 8192
- 1110 4368 node 1 › shelf 1 › card 1
- 1120 4384 node 1 › shelf 1 › card 2
- 1210 4624 node 1 › shelf 2 › card 1
- 2110 8464 node 2 › shelf 1 › card 1
nodeshelfcardport
The cards of node 1: bigger than 4096, node 1's own key, and smaller than 8192, the key of the next node. 3 cards, side by side.
For engineers: the full list, by number
- Claims 1 to 5 describe the record table, 6 to 10 the record itself, 11 to 17 the method of storing records, and 18 to 20 the groups of different widths.
- Claim 1 covers a table for “at least node, shelf, card, and port levels”. Each record has a data part and a key that is “an integer having a specified bit length”, split into one region per level.
- The abstract sums it up: the database uses “this, and only this, record key to index all database records in all record tables”. One key per row is the primary key, the parent link and the sort order at once.
- The search is integer comparison on a B-tree, so it runs on any SQL database. In the 32-bit example a whole node is one range of 4,194,304 keys, and a card is one range of 128.
One door, every router’s language
In December 2005 Yasser and two colleagues filed a second idea. It lets a phone company’s own software set up any router through the one standard door it already speaks.
A phone company runs its network from big back-office systems, its OSS. They reach the network manager through a standard interface, CORBA or CMIP, the way your app reaches a service through its published API. But every router maker has its own commands, and a new router can arrive long before any standard describes it.
Their answer: experts write a short script template for each router, with blanks. The network manager publishes each template on the standard interface as an ordinary object. The phone company’s system fills in the blanks and says “run”. The network manager writes the router’s own commands, sends them, and calls back when the answer is in, like a webhook.
- The phone company’s system fills in the blank through the standard door it already speaks:
vlanId = 210. To it, the template is one more ordinary object with settings. - It asks that object to run. That is all it needs to know about this router.
- The network manager fills the template written for this router:
vlan <vlanId|2-4094|100>becomesvlan 210. - It sends the finished command to the router, in the router’s own language.
- The router runs it and answers.
- The network manager tells the system the job is done: Execute Complete. Nobody held a line open while the router worked.
- The system reads the router’s answer when it is ready: Get Response.
| 2005 filing | 2026 | Why it is the same idea |
|---|---|---|
| A script template with blanks, one per router type | An Ansible task that fills a Jinja template | Experts write the template once. Everyone else only supplies the values. |
| The template published as an object on the OSS interface | A job you can start through a public API | The caller needs no knowledge of the device’s own commands. |
| Execute Complete, then Get Response | A webhook, or 202 Accepted and a job URL | Nobody holds a connection open while the device works. |
| A versioning module picks the template for each make, type and software release | Per-platform variables, such as ansible_network_os | One task, the right command text for each device. |
| A dependency table runs prerequisites first | Task order in a playbook, or depends_on in Terraform | Say what must happen before what. |
For engineers: the template format
- The filing’s format for one line:
CommandName<UserParamID|valid-range|default-value>/<NMSParamID>. The operator’s system fills user parameters within the valid range, or they take the default. The network manager fills its own parameters from its database, with the target router’s values. - Templates can be written in CLI (command line), TL1 or XML. Each one does one task, and a dependency table lists the templates that must run before it.
- Claim 1, in short: create an object whose attribute comes from a script template; receive a value from the outside system through the interface; fill the template to make a command script; send it to the device; tell the outside system when the answer is ready, and send it.
- The router templates in the diagram above are examples written in that format.
Cited by Cisco, IBM, Oracle and Huawei
Every patent lists the earlier inventions closest to it, its prior art, and the patent examiner adds more. 87 later patent filings, from 26 companies, list Yasser’s two inventions.
His database key is cited in storage and database patents: IBM’s index for huge storage clusters, Oracle’s in-memory database, Brocade’s switch configuration, Teradata and Citrix on nested data. His script templates are cited across network automation: Cisco, Huawei, Juniper, Arista, AT&T, Hewlett Packard Enterprise, Level 3, and Ericsson’s CENX.
The citations keep coming. They started in 2007 and reached their highest point in 2023, more than fifteen years after he filed. Pick a company to light up its dots, pick any dot or row to read what that invention does, and sort the list by any column.
Pick a dot or a row.
| Cisco | Detecting and managing recurring patterns in device and service configuration data US10462010B2 | 2019 | OSS templatesthrough its Chinese filing |
| IBM | Listing data objects using a hierarchical dispersed storage index US10089344B2 | 2018 | Database keyadded by the patent examiner |
| Oracle | In-memory key-value store for a multi-model database US10360233B2 | 2019 | Database keythrough its Chinese filing |
| Huawei | Method for service implementation in network function virtualization (NFV) system and communications unit US11218423B2 | 2022 | OSS templatesadded by the patent examiner |
| Huawei | System and method for metadata enhanced inventory management of a communications system US10013414B2 | 2018 | OSS templateslisted by its inventors |
| CENX, now Ericsson | Service information model for managing a telecommunications network US9871702B2 | 2018 | OSS templatesadded by the patent examiner |
| Juniper Networks | Model driven intent policy conflict detection and resolution through graph analysis US11283691B1 | 2022 | OSS templateslisted by its inventors |
| Apstra, now Juniper | Automatically generating an intent-based network model of an existing computer network US11805024B1 | 2023 | OSS templateslisted by its inventors |
| AT&T | Methods and systems for maintaining diversity for telecommunication services US8295199B2 | 2012 | OSS templatesadded by the patent examiner |
| HPE | Asset model import connector US9569471B2 | 2017 | OSS templatesadded by the patent examiner |
| Arista Networks | Structured network change controls US11750458B1 | 2023 | OSS templatesadded by the patent examiner |
| Brocade | Distributed configuration management for virtual cluster switching US9716672B2 | 2017 | Database keyadded by the patent examiner |
| Teradata | Techniques for managing data relationships US9514182B2 | 2016 | Database keylisted by its inventors |
| Citrix | Bulk loading multiple hierarchical levels of relational data to a database US10503754B2 | 2019 | Database keylisted by its inventors |
| Level 3 Communications | System and methods for configuration management US10326645B2 | 2019 | OSS templatesadded by the patent examiner |
| ZTE | Method and device for realizing northboundbound interface CN102684894B | 2014 | OSS templatesadded by the patent examiner |
| Rakuten Mobile | Method of managing at least one network element US20230033609A1 | 2023 | OSS templatesadded by the patent examiner |
| Net-Conex Developments | System and method for creating application groups US20070274314A1 | 2007 | OSS templatesadded by the patent examiner |
| AT&T | Methods and systems for maintaining diversity for telecommunication services US20090080343A1 | 2009 | OSS templatesadded by the patent examiner |
| ZTE | Method and system for realizing terminal quality of service of internet voice transmission system CN101631066A | 2010 | OSS templatesadded by the patent examiner |
| Baosight | System and method for configuring monitoring device based on object model CN101667124A | 2010 | OSS templatesadded by the patent examiner |
| Teradata | Techniques for managing data relationships US20110137957A1 | 2011 | Database keyadded by the patent examiner |
| Brocade | Distributed configuration management for virtual cluster switching US20110292947A1 | 2011 | Database keyadded by the patent examiner |
| ZTE | Cross-subnet circuit search method and device CN101674632B | 2012 | OSS templatesadded by the patent examiner |
| ZTE | Method and device for realizing northboundbound interface CN102684894A | 2012 | OSS templatesadded by the patent examiner |
| Level 3 Communications | Systems and methods for automatic replacement and repair of communications network devices CA2854339A1 | 2013 | OSS templatesthrough its Chinese filing |
| Level 3 Communications | System and methods for configuration management US20130326029A1 | 2013 | OSS templatesadded by the patent examiner |
| Gluware | Regional virtual VPN US8837491B2 | 2014 | OSS templatesthrough its Chinese filing |
| HPE | Asset model import connector US20140156711A1 | 2014 | OSS templatesadded by the patent examiner |
| Face Recording and Measurements | Data management system WO2014114761A1 | 2014 | Database keyadded by the patent examiner |
| IBM | Splitting an index node of a hierarchical dispersed storage index US8930375B2 | 2015 | Database keythrough its Chinese filing |
| Allied Telesis | Command line interface US20150019199A1 | 2015 | OSS templatesadded by the patent examiner |
| ZTE | Method and device for network management system to debug network element configuration CN105429774A | 2016 | OSS templatesthrough its Chinese filing |
| ZTE | Method and device used by network management system for debugging network element configuration WO2016041387A1 | 2016 | OSS templatesadded by the patent examiner |
| Apstra, now Juniper | Configuring a network WO2016077124A1 | 2016 | OSS templatesadded by the patent examiner |
| ZTE | Method and device for searching command on network device WO2016206546A1 | 2016 | OSS templatesadded by the patent examiner |
| Shanghai Feixun Data Communication | Router configuration system and router configuration method CN105429809A | 2016 | OSS templatesadded by the patent examiner |
| Gluware | Methods and systems for communicating using a virtual private network US9780965B2 | 2017 | OSS templateslisted by its inventors |
| HPE | Asset Model Import Connector CN103827810B | 2017 | OSS templatesadded by the patent examiner |
| Level 3 Communications | Systems and methods for automatic replacement and repair of communications network devices US9817709B2 | 2017 | OSS templateslisted by its inventors |
| Gluware | Methods and systems for creating a network US9760528B1 | 2017 | OSS templateslisted by its inventors |
| Huawei | System and method for metadata enhanced inventory management of a communications system EP3172866A4 | 2017 | OSS templatesadded by the patent examiner |
| Gluware | Methods and systems for object-oriented modeling of networks US9785412B1 | 2017 | OSS templateslisted by its inventors |
| ZTE | A kind of method and device realizing command lookup on network devices CN106301870A | 2017 | OSS templatesadded by the patent examiner |
| CENX, now Ericsson | Service information model for managing a telecommunications network US20170237628A1 | 2017 | OSS templatesadded by the patent examiner |
| Gluware | Methods and systems for remote device configuration US9928082B1 | 2018 | OSS templateslisted by its inventors |
| Apstra, now Juniper | Selectable declarative requirement levels US10063428B1 | 2018 | OSS templatesthrough its Chinese filing |
| Mashang Consumer Finance | Dynamic capacity expansion method and system for database table CN107633097A | 2018 | Database keyadded by the patent examiner |
| Mashang Consumer Finance | Dynamic capacity expansion method and system for database table CN107633097B | 2018 | Database keyadded by the patent examiner |
| Huawei | Method for service implementation in network function virtualization (nfv) system and communications unit US20190058670A1 | 2019 | OSS templatesadded by the patent examiner |
| Apstra, now Juniper | Configuring a network US10389573B2 | 2019 | OSS templateslisted by its inventors |
| Apstra, now Juniper | Verifying service status US10313206B1 | 2019 | OSS templatesthrough its Chinese filing |
| Apstra, now Juniper | Configuring system resources for different reference architectures US10374872B2 | 2019 | OSS templatesthrough its Chinese filing |
| Putian Information Technology | A method and device for generating embedded software code CN110275698A | 2019 | OSS templatesadded by the patent examiner |
| Level 3 Communications | Systems and methods for automatic replacement and repair of communications network devices US10592330B2 | 2020 | OSS templateslisted by its inventors |
| Huawei | Service implementation method for nfv system, and communications unit EP3116177B1 | 2020 | OSS templatesthrough its Chinese filing |
| Huawei | Method for service implementation in network function virtualization (NFV) system and communications unit US10862823B2 | 2020 | OSS templateslisted by its inventors |
| Cisco | Detecting and managing recurring patterns in device and service configuration data CN110799942A | 2020 | OSS templatesadded by the patent examiner |
| Apstra, now Juniper | Intent-based analytics US10756983B2 | 2020 | OSS templatesthrough its Chinese filing |
| Level 3 Communications | Systems and methods for configuration management US10997042B2 | 2021 | OSS templateslisted by its inventors |
| Apstra, now Juniper | Configuring system resources for different reference architectures US11088900B2 | 2021 | OSS templateslisted by its inventors |
| Apstra, now Juniper | Automatically generating an intent-based network model of an existing computer network US10992543B1 | 2021 | OSS templatesthrough its Chinese filing |
| Juniper Networks | Business policy management for self-driving network US11075805B1 | 2021 | OSS templateslisted by its inventors |
| Bilibili | Information processing method and system CN112559514A | 2021 | Database keyadded by the patent examiner |
| Hangzhou Runzhou Optoelectronic | Device management method, system, electronic device and storage medium CN112187482A | 2021 | OSS templatesadded by the patent examiner |
| Allied Telesis | Command line interface US11216293B2 | 2022 | OSS templatesadded by the patent examiner |
| Apstra, now Juniper | Configuring a network US11223512B2 | 2022 | OSS templateslisted by its inventors |
| Oracle | In-memory key-value storage for multi-model databases CN113961564A | 2022 | Database keyadded by the patent examiner |
| Apstra, now Juniper | Verifying service status US11323338B2 | 2022 | OSS templateslisted by its inventors |
| Apstra, now Juniper | Intent-based analytics US11451451B2 | 2022 | OSS templateslisted by its inventors |
| Juniper Networks | Business policy management for self-driving network US11444833B1 | 2022 | OSS templateslisted by its inventors |
| Apstra, now Juniper | Configuring a network US11695615B2 | 2023 | OSS templateslisted by its inventors |
| Apstra, now Juniper | Selectable declarative requirement levels US11677619B2 | 2023 | OSS templateslisted by its inventors |
| Apstra, now Juniper | Configuring system resources for different reference architectures US11689413B2 | 2023 | OSS templateslisted by its inventors |
| Apstra, now Juniper | Configuration, telemetry, and analytics of a computer infrastructure using a graph model US11567994B2 | 2023 | OSS templateslisted by its inventors |
| Cisco | Method, apparatus and computer readable medium for managing network devices and services CN110799942B | 2023 | OSS templatesadded by the patent examiner |
| Juniper Networks | Business policy management for self-driving network US11658872B1 | 2023 | OSS templateslisted by its inventors |
| Bilibili | Information processing method and system CN112559514B | 2023 | Database keyadded by the patent examiner |
| Hangzhou Runzhou Optoelectronic | Device management method, system, electronic device and storage medium CN112187482B | 2023 | OSS templatesthrough its Chinese filing |
| Juniper Networks | Model driven intent policy conflict detection and resolution through graph analysis US11652704B2 | 2023 | OSS templateslisted by its inventors |
| Apstra, now Juniper | Connectivity templates US11570055B2 | 2023 | OSS templateslisted by its inventors |
| Apstra, now Juniper | Verifying service status US11876699B2 | 2024 | OSS templateslisted by its inventors |
| Juniper Networks | Business policy management for self-driving network US11973645B1 | 2024 | OSS templateslisted by its inventors |
| Juniper Networks | Business policy management for self-driving network US12170593B1 | 2024 | OSS templateslisted by its inventors |
| Juniper Networks | Model driven intent policy conflict detection and resolution through graph analysis US11929886B2 | 2024 | OSS templateslisted by its inventors |
| Apstra, now Juniper | Connectivity templates US12021708B2 | 2024 | OSS templateslisted by its inventors |
| Allied Telesis | Command line interface US12468563B2 | 2025 | OSS templateslisted by its inventors |
87 publications found · 44 inventions · 26 companies
From Google Patents, checked against the US patent office’s own full-text search in October 2026. Cisco and Oracle cite him through the Chinese filings of their inventions. Alcatel’s own filings that cite him are not counted.
The two filings
US 7,603,377
“Method and data structure for indexed storage of hierarchically interrelated information in a relational database”
- Inventors
- Yasser Awad, Ahmed Moustafa, Mohamad Hassoun
- Assignee
- Alcatel
- Filed
- 15 June 2005 in Canada; 24 October 2005 in the United States
- Published
- 21 December 2006, as US 2006/0288020 A1
- Granted
- 13 October 2009
US 2007/0130192
“Method and system for configuring network devices through an operations support system interface”
- Inventors
- Ronald Scott Bolder, Yasser Awad, Chantal Sylvie Vandette
- Assignee
- Alcatel
- Filed
- 1 December 2005 in the United States
- Published
- 7 June 2007, as US 2007/0130192 A1; in Europe as EP 1793529
Both come from his years at Newbridge Networks and Alcatel in Kanata, where he was the architect of the CORBA interface of the 5620 Network Manager. Read his whole career.