The world of Solaris Networking
By sunay on Jun 14, 2005
One of the big changes in Solaris 10 was project FireEngine which allowed Solaris to perform and scale. The important thing that I couldn't tell people before was where the wins came from. Bulk of them came from a lockless design called Vertical perimeter implemented by means of a serialization queue. This allows packets once picked up for processing to be taken all the way up to socket layer or all the way down to device driver. With the aid of the IPclassifer, we bind connections to squeues (which in turn are bound to CPUs) and this allows us to get a better locality and scaling. The squeues also allow us to track the entire backlog per CPU. The GLDv3 based drivers allow IP to control the interrupts and based on the squeue backlog, the interrupts are controlled dynamically to achieve even higher performance and avoid the havoc caused by interrupts. Some day I will tell you stories on how we dealt with 1Gb NICs when they arrived and CPUs were still pretty slow.
Coming back to collaboration, you will notice that Solaris networking architecture looks very different compared to SVR4 STREAMS based architecture or BSD based architecture. It opens new doors for us and it allows us to do stack virtualization and resource control (project Crossbow) and tons of new things. We have setup a networking community page which has brief discussion on some of the new projects we are doing and would love to hear what you think about it. The discussion form on the same page would be an easy way to talk. We are open to suggestions on how you would like to see this go forward.
Enjoy, just like I enjoyed Solaris for so many years!
Technorati Tag: OpenSolaris
Technorati Tag: Solaris