Building a network switch

Thread Starter

dor

Joined Feb 20, 2009
63
What are the requirements for building a network switch?

Concerning the following subjects:


  • OS (operating system):
    • Is it the Electronics engineer's job or Computers engineer to build also the OS of the switch?
    • I suppose that an operating system for a switch may not include multitasking, memory handling etc. Am I right?
      A switch OS should transfer data as fast as it can, therefor the ordinary OS would impact the performance of the device, downgrading it's potential speed.
  • What is the processing unit of a switch?
    Is it FPGA/CPLD, some CPU, or NPU ( http://en.wikipedia.org/wiki/Network_Processing_Unit )?
    Which processing units are commonly used?
    What Cisco use?

Thanks in advance.

Regards,
Dor.
 

beenthere

Joined Apr 20, 2004
15,819
Last edited:

AlexR

Joined Jan 16, 2008
732
A network switch would be designed by a multi-disciplinary team of people rather than one person. Electronic engineers would design the circuit, software engineers and programmers would do the software, mechanical engineers would design the enclosure and even process engineers would be involved in setting up the production line. The whole lot would be pulled together and oversighted by a team leader who could come from any one of engineering or software disciplines but would have a passing knowledge of all disciplines.

The switching functions of a switch are carried out in hardware using something like a FPGA/CPLD but managed switches such as the Catalyst series also have a cpu that runs Cisco's multi-tasking operating system for management, configuration and statistic gathering functions. You would have to ask Cisco what brand of CPU they use, I seem to recollect that the the make and type is not marked on the chip.
 

Thread Starter

dor

Joined Feb 20, 2009
63
About the software development:

Ain't the Electronics engineers prepare an API for the software engineers to build the software?
I assume that the software engineers don't need to know the processor functionality and registers, it's not their part of the job.

For example, the Electronics engineers build a software API for the Ethernet network communication.
The software engineers only need to run a function that fetch the data when a communication start:

Rich (BB code):
HANDLER void ethernet_int(void)
{
     ... fetch_data(); ...
}
About the OS:

beenthere said:

Are you really certain that it takes an operating system to run a switch? They do not seem to need resources to do Quote:
multitasking, memory handling
and AlexR said:

but managed switches such as the Catalyst series also have a cpu that runs Cisco's multi-tasking operating system for management, configuration and statistic gathering functions.
So multitasking is not essential for the switching job, but for the additional job(s) of statistics gathering etc.

In addition, please refer to this: http://en.wikipedia.org/wiki/Computer_engineering
 
Last edited:

AlexR

Joined Jan 16, 2008
732
So what exactly is your point?

You seen to be harbouring some sort of an "us against them" attitude between software and hardware people. That's not how the real world works.

I don't have direct experience of how Cisco do things but generally the Electronics engineers are responsible for stringing chips together (the hardware nut and bolts) and the software people do all the programming. In the best design teams there usually isn't a strong demarcation between hardware and software people and often you will have engineers who are competent programmers and programmers who are comfortable with the hardware side of the project.

As for the OS, In a switch the OS plays a minor role as the switching function is performed in silicon and the OS only performs a supervisory role. In routers of course the OS does all the work.
 

beenthere

Joined Apr 20, 2004
15,819
Your code fragment is in a high level language like C. At that level, the part that needs to be aware of the
processor functionality and registers
is the compiler, which is produced by a subset of software engineers, or coders, who are aware of such things. The compiler outputs machine level code to produce the desired result.

Are you certain that the code that the router runs is compiled out of C? I might suggest that execution speed is important, so assembler would be more likely.

The code functions are very circumscribed, so the thought of a full-blown OS, requiring an API does not seem too likely. Why should some application have to make a far call into the kernel in order to route a packet to or from a network computer? There are no system functions like keyboard inputs and video outputs to support.

I think the additional functions you mention, like gathering stats, is a higher level function, such as at the gateway level.
 
Last edited:
Top