Claims
- 1. A method for controlling access by processes running on a host device to a communication network, the method comprising:
assigning to each of the processes a respective doorbell address on a network interface adapter that couples the host device to the network; allocating a plurality of instances of a communication service on the network, to be provided via the adapter, to at least some of the processes on the host device, such that each of the instances is allocated to a particular one of the processes; receiving a request submitted by a given one of the processes to its respective doorbell address, to access one of the allocated service instances, which is specified in the request; and conveying data over the network using the specified instance of the service, subject to verifying, based on the doorbell address to which the request was submitted, that the specified instance was allocated to the given process.
- 2. A method according to claim 1, wherein assigning the respective doorbell address comprises assigning a single page in an address space of the host device to each of the processes for use thereby as the respective doorbell.
- 3. A method according to claim 1, wherein allocating the instances comprises allocating multiple instances to a single one of the processes, and wherein conveying the data comprises verifying that the specified service instance is one of the multiple instances allocated to the single one of the processes.
- 4. A method according to claim 1, wherein allocating the instances comprises recording a context of each of the instances in a table accessible to the network interface adapter, the context in the table indicating the respective doorbell address of the process to which each of the instances is allocated, and wherein conveying the data comprises verifying that the doorbell address to which the request was submitted matches the doorbell address indicated by the table for the specified instance.
- 5. A method according to claim 4, wherein recording the context comprises maintaining the table in a memory accessible to the host device, while preventing access by the processes to the table.
- 6. A method according to claim 4, wherein the context further comprises at least a destination address and service type for each of the instances.
- 7. A method according to claim 1, wherein assigning the respective doorbell address comprises assigning the address using an operating system running on the host device, and wherein receiving the request comprises receiving the request by the given process to write to its respective doorbell address by means of the operating system, which permits each of the processes to write only to its own assigned doorbell address.
- 8. A method according to claim 1, wherein the communication service comprises a transport service.
- 9. A method according to claim 8, wherein allocating the plurality of the instances comprises allocating pairs of work queues, and wherein receiving the request comprises receiving a work request to place a work item in a specified one of the work queues, and wherein conveying the data comprises transporting the data to a destination address provided by a context of the specified work queue.
- 10. A method for controlling access by a process on a host device to a communication network, the method comprising:
allocating to the process a plurality of pairs of work queues on a channel adapter that couples the host device to the network, for use by the process in sending and receiving communications over the network; assigning to the process a single doorbell address on the adapter for use in accessing any of the plurality of the pairs of work queues; receiving a work request submitted by the process to the doorbell address to place a work item in one of the allocated queues that is specified in the request; and transporting data over the network responsive to the work request.
- 11. A method according to claim 10, wherein transporting the data comprises verifying, based on the doorbell address to which the request was submitted, that the queue specified in the request was allocated to the process.
- 12. A method according to claim 11, wherein allocating the plurality of pairs of work queues comprises allocating the pairs of work queues to multiple processes on the host device, such that each of the pairs is allocated to a particular one of the processes, and wherein assigning the single doorbell address comprises assigning multiple, respective doorbell addresses to the multiple processes.
- 13. A method according to claim 12, wherein assigning the multiple doorbell addresses comprises assigning a single page in an address space of the host device to each of the processes for use by the processes as the respective doorbell addresses.
- 14. A method according to claim 12, wherein assigning the multiple doorbell addresses comprises assigning the addresses using an operating system running on the host device, and wherein receiving the work request comprises receiving the request submitted by the process by means of the operating system, which permits each of the processes to write only to its own assigned doorbell address.
- 15. A method according to claim 10, wherein allocating the pairs of work queues comprises recording a context of each of the pairs in a table accessible to the channel adapter, the context in the table indicating the respective doorbell address of the process to which each of the pairs is allocated, and wherein transporting the data comprises verifying that the doorbell address to which the request was submitted matches the doorbell address indicated by the table for the specified queue.
- 16. A network interface adapter, for coupling a host device to a communication network, the adapter comprising:
a range of doorbell addresses in an address space of the host device, such that each of a plurality of processes running on the host device is assigned a respective doorbell address within the range; and a controller, which is arranged to allocate a plurality of instances of a communication service provided by the adapter on the network to at least some of the processes on the host device, such that each of the instances is allocated to a particular one of the processes, and which is further arranged, when the adapter receives a request submitted by a given one of the processes to its respective doorbell address to access one of the allocated service instances specified in the request, to verify, based on the doorbell address to which the request was submitted, that the specified instance was allocated to the given process before allowing the adapter, in response to the request, to convey data over the network using the specified instance of the service.
- 17. An adapter according to claim 16, wherein the respective doorbell address comprises a single page in an address space of the host device, which is assigned respectively to each of the processes.
- 18. An adapter according to claim 16, wherein multiple instances of the service may be allocated to a single one of the processes, and wherein the controller is arranged to verify that the specified service instance is one of the multiple instances allocated to the single one of the processes.
- 19. An adapter according to claim 16, wherein the controller is arranged to record a context of each of the instances in a table, the context in the table indicating the respective doorbell address of the process to which each of the instances is allocated, and to verify that the doorbell address to which the request was submitted matches the doorbell address indicated by the table for the specified instance.
- 20. An adapter according to claim 19, wherein the table is maintained in a memory accessible to the host device, while the processes are prevented from accessing the table.
- 21. An adapter according to claim 19, wherein the context further comprises at least a destination address and service type for each of the instances.
- 22. An adapter according to claim 16, wherein the doorbell address is assigned using an operating system running on the host device, which permits each of the processes to write only to its own assigned doorbell address.
- 23. An adapter according to claim 16, wherein the communication service comprises a transport service.
- 24. An adapter according to claim 23, wherein the instances comprise pairs of work queues, and wherein the request causes a work item to be placed in a specified one of the work queues, whereupon the adapter transports the data to a destination address provided by a context of the specified work queue.
- 25. A channel adapter for coupling a host device to a communication network, the adapter comprising:
a plurality of pairs of work queues, for allocation to a process on the host device for use in sending and receiving communications over the network; and a single doorbell address in an address space of the host device, for assignment to the process for use in accessing any of the plurality of the pairs of work queues, so that in response to a work request submitted by the process to the single doorbell address to place a work item in one of the allocated queues that is specified in the request, data are transported over the network by the adapter.
- 26. An adapter according to claim 25, and comprising a controller, which is arranged to verify, based on the doorbell address to which the request was submitted, that the queue specified in the request was allocated to the process before allowing the data to be transported by the adapter.
- 27. An adapter according to claim 26, wherein the plurality of pairs of work queues are allocated to multiple processes on the host device, such that each of the pairs is allocated to a particular one of the processes, and wherein multiple, respective doorbell addresses are assigned to the multiple processes.
- 28. An adapter according to claim 27, wherein each of the doorbell addresses comprises a single page in an address space of the host device.
- 29. An adapter according to claim 27, wherein the multiple doorbell addresses are assigned using an operating system running on the host device, and wherein the work request is submitted by the process by means of the operating system, which permits each of the processes to write only to its own assigned doorbell address.
- 30. An adapter according to claim 25, and comprising a controller, which is arranged to record a context of each of the pairs in a table accessible to the channel adapter, the context in the table indicating the respective doorbell address of the process to which each of the pairs is allocated, and to verify that the doorbell address to which the request was submitted matches the doorbell address indicated by the table for the specified queue before allowing the data to be transported by the adapter.
CROSS-REFERENCE TO RELATED APPLICATION
[0001] This application claims the benefit of U.S. Provisional Patent Application No. 60/283,108, filed Apr. 11, 2001, which is incorporated herein by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60283108 |
Apr 2001 |
US |