In fairness, concurrency is "teh hardz" on any platform, in any framework.

You can use threads and shared memory then problems two you have.

You can bodge it by serialising everything and pushing data between
threads/processes with queues and using craploads of locking, but you
typically want fast CPUs for that. Or you can cheat and coop multitask,
but then you're back at IOS classic / JunOS rpd.

You can write it in a concurrent-friendly language like Erlang (or maybe
Go) but then you have problem employing developers on the cheap, and
have to discard your existing codebase (yikes!)

I'm sympathetic to Juniper/Cisco/etc. here - they've got huge codebases
they can't afford to discard because of the years of accumulated
real-world behavioural tweaks, but proper concurrency typically involves
ground-up design principles.

It's not a solved problem yet :o(

The approach to run rpd on one core, and other process on avaibles one is a quick win. And optimizing the actual code before thinking in paralelism may be a faster approach to make speed gain ?

I complelty agree that to make a good paralelized junos, major rewrite or complete rewrite must be engaged.

Btw Junos on intel RE is fast enough for me. But not all on other cpu, specially on EX/QFX one... Perhaps Juniper should install x86 cpu on switch too (other vendor do this).


--
Raphael Mazelier
_______________________________________________
juniper-nsp mailing list juniper-nsp@puck.nether.net
https://puck.nether.net/mailman/listinfo/juniper-nsp

Reply via email to