Claims
- 1. A method of exposing multiple network interfaces as a single network interface to a higher level networking software, the method comprising:
receiving a request from the higher level networking software; sending an intermediate request to the multiple network interfaces; receiving responses to the intermediate request from the multiple network interfaces; conglomerating the responses from the multiple network interfaces into a single response; and responding to the request from the higher level networking software with the single response.
- 2. A computing device for performing the method of claim 1.
- 3. The method of claim 1 wherein the intermediate request to the multiple network interfaces is sent when a connection to the multiple network interfaces is initialized.
- 4. The method of claim 1 wherein the request, the intermediate request, the responses, and the single response conform to the Network Device Interface Specification.
- 5. The method of claim 1 wherein:
the request from the higher level networking software is a query request; the intermediate request to the multiple network interfaces is an intermediate query request; and the step of conglomerating the responses from the multiple network interfaces into the single response includes selecting an extreme response of the responses from the multiple network interfaces as the single response.
- 6. The method of claim 1 wherein:
the request from the higher level networking software is a set request; the intermediate request to the multiple network interfaces is an intermediate set request; and the intermediate set request is equivalent to the set request.
- 7. The method of claim 6 wherein:
the set request is a set filter request to set a filter on the single network interface; the step of receiving the request from the higher level networking software includes the step of creating internal filter criteria; the intermediate request to the multiple network interfaces is an operate promiscuously request to operate in a promiscuous relay mode the step of conglomerating the responses from the multiple network interfaces into the single response includes the step of comparing the responses to the internal filter criteria; and the step of responding to the request from the higher level networking software with the single response includes the step of indicating the responses to the higher level networking software if the responses pass the internal filter criteria.
- 8. The method of claim 1 further comprising exposing to a user a user interface comprising:
a user interface element for each of the multiple network interfaces; a function selection element for joining at least two of the multiple network interfaces into the single network interface; a user interface element for the single network interface; and a property presentation element for providing the user access to a property of a selected network interface, the selected network interface being one of the multiple network interfaces or the single network interface.
- 9. A method of bridging multiple network segments and exposing the multiple network segments as a single network to a higher level networking software on a bridging computing device, the bridging computing device connected to the multiple network segments through multiple network interfaces and exposing the single network through a higher level interface, the method comprising:
receiving a first packet from the higher level networking software or from one of the multiple network interfaces; determining a first destination address of the first packet; locating the first destination address in a database; determining, by reference to the database, a first port through which the first destination address can be reached; and processing the first packet with reference to the first port.
- 10. A computer-readable medium having computer-executable instructions for performing the steps of claim 9.
- 11. The method of claim 9 wherein the database is created by a database creation method comprising:
receiving a second packet from the multiple network interfaces; determining a second port through which the second packet was received; determining a sending address of the second packet; and entering into the database the sending address and the second port.
- 12. The method of claim 11 further comprising: deleting an entry in the database if the entry is older than an expiration date.
- 13. The method of claim 9 wherein the processing the first packet with reference to the first port includes transmitting the first packet through the first port.
- 14. The method of claim 9 wherein:
the determining the first destination address of the first packet includes determining the first destination address to be an address of the bridging computing device; and the processing the first packet with reference to the first port includes indicating the first packet to the higher level networking software through the higher level interface.
- 15. The method of claim 14 wherein the indicating the first packet to the higher level networking software includes:
modifying a packet descriptor header of the first packet; indicating the first packet to the higher level networking software through the higher level interface if a received packet queue is empty; and placing the first packet onto the received packet queue if the received packet queue contains at least one queued packet.
- 16. The method of claim 9 wherein the processing the first packet with reference to the first port includes:
discarding the first packet if the first port is a receive port through which the first packet was received; and placing the first packet onto a received packet queue.
- 17. The method of claim 9 wherein the processing the first packet with reference to the first port includes:
placing the first packet onto a received packet queue; requesting a first queue-servicing thread to process the received packet queue; and processing the received packet queue with the first queue-servicing thread.
- 18. The method of claim 17 wherein the processing of the received packet queue is for a limited duration; and wherein the processing the first packet with reference to the first port further includes:
requesting a second queue-servicing thread after the limited duration if the received packet queue contains at least one queued packet; and processing the received packet queue with the second queue-servicing thread.
- 19. The method of claim 9 wherein the bridging further comprises:
identifying a root bridge with reference to a lowest bridge identifier; identifying a root port with reference to a most efficient network route to the root bridge; identifying a designated port with reference to a connection to one of the multiple network segments through which a packet is received for forwarding to the root bridge; and blocking a port if the port is neither the root port nor the designated port.
- 20. The method of claim 9 wherein the multiple network interfaces to the multiple network segments are granted a memory segment through a dynamic memory allocation method, the dynamic memory allocation method comprising:
receiving a memory segment request for the memory segment from a first network interface of the multiple network interfaces; determining a fair share of memory of the first network interface; determining a safety buffer of memory; granting the memory segment if a first network interface memory allocated to the first network interface is less than the fair share of memory of the first network interface and an available memory segment exists; and granting the memory segment if the first network interface memory allocated to the first network interface is greater than the fair share of memory of the first network interface and the available memory segment is greater than the safety buffer of memory.
- 21. The method of claim 9 further comprising exposing to a user a user interface comprising:
a user interface element for each of the multiple network segments; a function selection element for bridging at least two of the multiple network segments into the single network; a user interface element for the single network; and a property presentation element for providing the user access to a property of a selected network, the selected network being one of the multiple network segments or the single network.
- 22. The method of claim 21 wherein the selected network is the single network, and wherein the property presentation element comprises an item selection element for bridging another of the multiple network segments into the single network.
- 23. The method of claim 21 wherein the selected network is a bridged network segment, and wherein the property presentation element prevents the user from accessing an item selection element for editing a higher level networking software or protocol which is active over the bridged network segment.
- 24. A method of multiply referencing an element of data, the method comprising:
creating a base descriptor of the element of data, wherein the base descriptor contains a counter and a pointer to the element of data; creating a child descriptor of the element of data, wherein the child descriptor contains a pointer to the base descriptor and the pointer to the element of data; modifying the counter to account for the child descriptor; providing access to the element of data to a first user of the element of data by providing to the first user the base descriptor; and simultaneously providing access to the element of data to a second user of the element of data by providing to the second user the child descriptor.
- 25. A computing device for performing the steps of claim 24.
- 26. The method of claim 24 wherein the creating the base descriptor of the element of data includes modifying the counter to account for the base descriptor.
- 27. The method of claim 24 further comprising:
discarding the base descriptor if the counter indicates the existence of zero child descriptors.
- 28. The method of claim 24 wherein the base descriptor further contains a pointer to an original descriptor received with the element of data.
- 29. The method of claim 24 wherein:
the element of data is a multiple destination packet directed to more than one computing device on a network; the base descriptor of the element of data is a base packet descriptor; and the child descriptor of the element of data is a child packet descriptor; the method of claim 24 further comprising:
determining the more than one computing device on the network to which the multiple destination packet is directed; determining multiple ports through which the more than one computing device on the network can be reached; transmitting the multiple destination packet through a first of the multiple ports by providing to the first of the multiple ports the base packet descriptor; and simultaneously transmitting the multiple destination packet through a second of the multiple ports by providing to the second of the multiple ports the child packet descriptor.
- 30. The method of claim 29 wherein the creating the child packet descriptor includes creating multiple child packet descriptors sufficient to simultaneously provide each of the multiple ports with a one child packet descriptor of the multiple child packet descriptors or the base packet descriptor.
- 31. The method of claim 29 wherein:
the transmitting the multiple destination packet through the second of the multiple ports by providing to the second of the multiple ports the child packet descriptor includes discarding the child packet descriptor when the transmitting the multiple destination packet through the second of the multiple ports has completed and modifying the counter when the child packet descriptor is discarded; the transmitting the multiple destination packet through the first of the multiple ports by providing to the first of the multiple ports the base packet descriptor includes, if the counter indicates that no child packets exist, discarding the base packet descriptor when the transmitting the multiple destination packet through the first of the multiple ports has completed and returning the multiple destination packet.
- 32. A computer-readable medium having computer-executable instructions for performing steps for exposing multiple network interfaces as a single network interface, the steps comprising:
receiving a request; sending an intermediate request to the multiple network interfaces; receiving responses to the intermediate request from the multiple network interfaces; conglomerating the responses from the multiple network interfaces into a single response; and responding to the request with the single response.
- 33. The computer-readable medium of claim 32 wherein the intermediate request to the multiple network interfaces is sent when a connection to the multiple network interfaces is initialized.
- 34. The computer-readable medium of claim 32 wherein the request, the intermediate request, the responses, and the single response conform to the Network Device Interface Specification.
- 35. The computer-readable medium of claim 32 wherein:
the request is a query request; the intermediate request to the multiple network interfaces is an intermediate query request; and the step of conglomerating the responses from the multiple network interfaces into the single response includes selecting an extreme response of the responses from the multiple network interfaces as the single response.
- 36. The computer-readable medium of claim 32 wherein:
the request from the higher level networking software is a set request; the intermediate request to the multiple network interfaces is an intermediate set request; and the intermediate set request is equivalent to the set request.
- 37. The computer-readable medium of claim 36 wherein:
the set request is a set filter request to set a filter on the single network interface; the step of receiving the request includes the step of creating internal filter criteria; the intermediate request to the multiple network interfaces is an operate promiscuously request to operate in a promiscuous relay mode the step of conglomerating the responses from the multiple network interfaces into the single response includes the step of comparing the responses to the internal filter criteria; and the step of responding to the request with the single response includes the step of indicating the responses if the responses pass the internal filter criteria.
- 38. The computer-readable medium of claim 32, the steps further comprising exposing to a user a user interface comprising:
a user interface element for each of the multiple network interfaces; a function selection element for joining at least two of the multiple network interfaces into the single network interface; a user interface element for the single network interface; and a property presentation element for providing the user access to a property of a selected network interface, the selected network interface being one of the multiple network interfaces or the single network interface.
- 39. A computing device for bridging multiple network segments and exposing the multiple network segments as a single network, the computing device comprising:
multiple network interfaces connected to the multiple network segments; a database comprising a network address and a corresponding port through which the network address can be reached; and an intermediate network interface driver for exposing the multiple network segments as the single network through a higher level interface.
- 40. The computing device of claim 39 wherein the database is created by a database creation method comprising:
receiving a packet from the multiple network interfaces; determining a port through which the packet was received; determining a sending address of the second packet; and entering into the database the sending address as the network address and the second port as the corresponding port.
- 41. The computing device of claim 40, the database creation method further comprising: deleting an entry in the database if the entry is older than an expiration date.
- 42. The computing device of claim 39 wherein the intermediate network interface driver performs steps comprising:
receiving a packet through the higher level interface or from one of the multiple network interfaces; determining a destination address of the packet; locating the destination address in the database; determining, by reference to the database, the corresponding port; and processing the packet with reference to the corresponding port.
- 43. The computing device of claim 42 wherein:
the determining the corresponding port includes determining the corresponding port to be the higher level interface; and the processing the packet with reference to the corresponding port includes indicating the packet through the higher level interface.
- 44. The computing device of claim 43 wherein the indicating the packet through the higher level interface includes:
modifying a packet descriptor header of the packet; indicating the packet through the higher level interface if a received packet queue is empty; and placing the packet onto the received packet queue if the received packet queue contains at least one queued packet.
- 45. The computing device of claim 42 wherein the processing the packet with reference to the corresponding port includes:
discarding the packet if the corresponding port is a receive port through which the first packet was received; and placing the packet onto a received packet queue.
- 46. The computing device of claim 42 wherein the processing the packet with reference to the corresponding port includes:
placing the packet onto a received packet queue; requesting a first queue-servicing thread to process the received packet queue; and processing the received packet queue with the first queue-servicing thread.
- 47. The computing device of claim 46 wherein the processing of the received packet queue is for a limited duration; and wherein the processing the packet with reference to the corresponding port further includes:
requesting a second queue-servicing thread after the limited duration if the received packet queue contains at least one queued packet; and processing the received packet queue with the second queue-servicing thread.
- 48. The computing device of claim 39 wherein the intermediate network interface driver performs steps comprising:
identifying a root bridge with reference to a lowest bridge identifier; identifying a root port with reference to a most efficient network route to the root bridge; identifying a designated port with reference to a connection to one of the multiple network segments through which a packet is received for forwarding to the root bridge; and blocking a port if the port is neither the root port nor the designated port.
- 49. The computing device of claim 39 wherein the multiple network interfaces are granted a memory segment through a dynamic memory allocation method, the dynamic memory allocation method comprising:
receiving a memory segment request for the memory segment from a first network interface of the multiple network interfaces; determining a fair share of memory of the first network interface; determining a safety buffer of memory; granting the memory segment if a first network interface memory allocated to the first network interface is less than the fair share of memory of the first network interface and an available memory segment exists; and granting the memory segment if the first network interface memory allocated to the first network interface is greater than the fair share of memory of the first network interface and the available memory segment is greater than the safety buffer of memory.
- 50. The computing device of claim 39 further comprising a user interface, the user interface comprising:
a user interface element for each of the multiple network segments; a function selection element for bridging at least two of the multiple network segments into the single network; a user interface element for the single network; and a property presentation element for providing the user access to a property of a selected network, the selected network being one of the multiple network segments or the single network.
- 51. The computing device of claim 50 wherein the selected network is the single network, and wherein the property presentation element comprises an item selection element for bridging another of the multiple network segments into the single network.
- 52. The computing device of claim 50 wherein the selected network is a bridged network segment, and wherein the property presentation element prevents the user from accessing an item selection element for editing a higher level networking software or protocol which is active over the bridged network segment.
- 53. A computer-readable medium having computer executable instructions for performing steps for multiply referencing an element of data, the steps comprising:
creating a base descriptor of the element of data, wherein the base descriptor contains a counter and a pointer to the element of data; creating a child descriptor of the element of data, wherein the child descriptor contains a pointer to the base descriptor and the pointer to the element of data; modifying the counter to account for the child descriptor; providing access to the element of data to a first user of the element of data by providing to the first user the base descriptor; and simultaneously providing access to the element of data to a second user of the element of data by providing to the second user the child descriptor.
- 54. The computer-readable medium of claim 53 wherein the creating the base descriptor of the element of data includes modifying the counter to account for the base descriptor.
- 55. The computer-readable medium of claim 53 further comprising:
discarding the base descriptor if the counter indicates the existence of zero child descriptors.
- 56. The computer-readable medium of claim 53 wherein the base descriptor further contains a pointer to an original descriptor received with the element of data.
- 57. The computer-readable medium of claim 53 wherein:
the element of data is a multiple destination packet directed to more than one computing device on a network; the base descriptor of the element of data is a base packet descriptor; and the child descriptor of the element of data is a child packet descriptor; the computer-readable medium of claim 53 further having computer executable instructions for performing steps comprising:
determining the more than one computing device on the network to which the multiple destination packet is directed; determining multiple ports through which the more than one computing device on the network can be reached; transmitting the multiple destination packet through a first of the multiple ports by providing to the first of the multiple ports the base packet descriptor; and simultaneously transmitting the multiple destination packet through a second of the multiple ports by providing to the second of the multiple ports the child packet descriptor.
- 58. The computer-readable medium of claim 57 wherein the creating the child packet descriptor includes creating multiple child packet descriptors sufficient to simultaneously provide each of the multiple ports with a one child packet descriptor of the multiple child packet descriptors or the base packet descriptor.
- 59. The computer-readable medium of claim 57 wherein:
the transmitting the multiple destination packet through the second of the multiple ports by providing to the second of the multiple ports the child packet descriptor includes discarding the child packet descriptor when the transmitting the multiple destination packet through the second of the multiple ports has completed and modifying the counter when the child packet descriptor is discarded; the transmitting the multiple destination packet through the first of the multiple ports by providing to the first of the multiple ports the base packet descriptor includes, if the counter indicates that no child packets exist, discarding the base packet descriptor when the transmitting the multiple destination packet through the first of the multiple ports has completed and returning the multiple destination packet.
RELATED APPLICATION
[0001] This application is related to, and claims priority from, U.S. Provisional Application No. 60/244,425, entitled “Principle of Exposing a Bridged Network as a Single Virtual Segment”, and filed on Oct. 30, 2000.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60244425 |
Oct 2000 |
US |