Software ontwikkeling/development

Over Phact. Phact is een one stop shop voor softwareontwikkeling, app development, hardwareontwikkeling, IoT, detachering, software development, hardware development in Venray, Limburg, Gelderland, Holland, Nederland. Phact startte in 2015 met al bijna 25 jaar ervaring in de telecommunicatie branch op zak. Software ontwikkeling, hardware ontwikkeling, iot portal, OutSystems in Venray, Limburg, Gelderland, Holland, Nederland. Hoe dat kan? Phact is ontstaan toen een groep mensen met een berg ervaring op zak besloot zich te richten op een nieuwe toekomst. Veel van onze medewerkers werkten al jaren in de telecommunicatie en namen hun expertise mee. Zo werd Phact geboren. Sinds 1991 ontwikkelen mensen uit ons team telecomhardware en-software voor VoIP- en SS7-carriers. BigData, analyse, development, OutSystems, ontwikkeling, partner. Venray, Limburg, Gelderland, Holland, Nederland. Kennis is een zeer belangrijk onderdeel van ons bedrijf en dus hebben we hechte samenwerkingsverbanden met onze professionele partners en toeleveranciers. Phact is dan misschien nog piepjong, maar we hebben jarenlange ervaring op gebied van software- en hardwareontwikkeling in huis.

ETL

Wij zetten graag onze expertises in om uw uitdaging aan te gaan. iOS, Android, Windows, Linux. ETL experts. Phact ontwikkelt betrouwbare, schaalbare en innovatieve high performance oplossingen, van producten voor intern gebruik tot high end producten met miljoenen gebruikers. Onze klanten verwachten perfecte service en op maat gemaakte producten en die leveren wij dan ook op uiteenlopende terreinen. Vanaf 2016 zijn we ook partner van OutSystems en ontwikkelen we razendsnel een oplossing voor uw bedrijfstoepassing.

OutSystems

OutSystems biedt met hun Rapid Application Development (RAD) platform, een platform waarmee razendsnel alle onderdelen van uw web- en mobiele applicaties kunnen worden ontwikkeld. Proof Of Concept Een investering in software brengt altijd een risico met zich mee. Dat realiseren wij ons bij Phact maar al te goed. Daarom bieden wij u een gratis Proof Of Concept (POC) aan voor uw grootste ICT uitdaging. Met onze gratis POC zullen wij aantonen dat onze software professionals uw ICT uitdaging oplossen en/of een gekozen oplossing of product succesvol kan zijn. Neem vandaag nog contact met ons op voor een afspraak met één van onze experts.

Hardware ontwikkeling/development

Wilt u met uw organisatie aan de slag met het Internet of Things? Heeft u behoefte aan inzicht in bergen data om uw bedrijfsprocessen slimmer en efficiënter te maken? Of heeft u hulp nodig bij het ontwikkelen van maatwerk hardware-oplossingen? Neem contact met ons op en krijg inzicht in de mogelijkheden en ontvang een eerlijk advies over de beste oplossing voor uw IoT vraagstuk. Gezamenlijk bepalen we uw IoT strategie en met onze proof-of-concept-benadering kunt u uw IoT project en de potentiële zakelijke waarde snel valideren. One Stop IoT Shop Met meer dan 25 jaar ervaring met projecten in de telecommunicatie branche beschikt Phact over een grote veelzijdigheid aan ervaring en expertise op het gebied van software– , hardwareontwikkeling en data services. Deze unieke combinatie maakt van Phact een one-stop-shop voor al uw Internet of Things projecten. Nederland, gelderland, Limburg, Holland, Venray, OutSystems, Software development, App development, Hardware development. IoT. Internet of things. Big data.

IoT

internet of things

Wilt u met uw organisatie aan de slag met het Internet of Things? Heeft u behoefte aan inzicht in bergen data om uw bedrijfsprocessen slimmer en efficiënter te maken? Of heeft u hulp nodig bij het ontwikkelen van maatwerk hardware-oplossingen?

SureSense, SureAlert en SureView

Dit zijn onze producten rondom onze IoT ontwikkelingen.

Phact ISO 27001 gecertificeerd

De beveiliging van klantdata en de beschikbaarheid van onze diensten heeft bij Phact altijd de hoogste prioriteit. Onze werkwijze is nu echter ook geformaliseerd, Wij zijn er trots op dat Phact vanaf 1 september 2018 formeel ISO/IEC 27001:2017 gecertificeerd is. Een geslaagde audit heeft aangetoond dat we voldoen aan alle normeisen op het gebied van informatiebeveiliging. Wat dat betekent? Op basis van de ISO 270001 hebben we onze manier van werken geformaliseerd en hebben wij een proces ingericht om continue de kwaliteit van onze informatiebeveiliging te bewaken en te verbeteren.

{ innovation experts }
linkedin

Wat maakt een processor tot een netwerkprocessor?

Netwerkprocessoren zijn relatief onbekend maar cruciaal voor de doorstroming op onze digitale snelwegen. Met de Octeon van Cavium als voorbeeld legt Johan Kleuskens van Phact uit waarin deze gespecialiseerde dataverwerkers zich onderscheiden van generieke cpu’s en hoe ze zijn in te zetten om de systeemprestaties een boost te geven.

De opkomst van het internet heeft sinds begin jaren tachtig van de vorige eeuw een verscheidenheid aan netwerksystemen met zich meegebracht, zoals dsl-modems, ethernetswitches en nat-routers. Hun architectuur heeft in de loop der jaren grote veranderingen doorgemaakt. In eerste instantie gebruikten de apparaten generieke processoren met alle functionaliteit in software geïmplementeerd. Vanaf eind jaren negentig kwamen daar asics en fpga’s bij die de complete verwerking van de datapakketten overnamen en zo de hoofdprocessor ontlastten. Fpga’s en zeker asics zijn echter inflexibel. Dat werd een probleem toen in het begin van dit millennium de behoefte aan nieuwe netwerkfunctionaliteit sterk toenam. De chipfabrikanten kwamen daarop met een oplossing die beter aansloot bij de dynamische vraag: de netwerkprocessor. Deze combineert de flexibiliteit van software met de hoge verwerkingssnelheid van hardwaremodules. Een veelgebruikte netwerkprocessor is de Octeon van het Amerikaanse Cavium.



Cavium


In hardware

Netwerksystemen dragen informatie over in de vorm van datapakketten. Deze zijn er in vele soorten en maten. Voor software is het een tijdrovende klus om de eigenschappen te bepalen van een ontvangen pakket (IP, ARP, ICMP, TCP, ...) en om te achterhalen of er fouten in zitten (te kort, te lang, ongeldige inhoud, ...). De Octeon heeft hardware aan boord die de applicatiesoftware een object aanbiedt waarin de meest voorkomende eigenschappen zijn opgenomen. Op zijn reis door het netwerk kan een datapakket op velerlei manieren verminkt raken. Daarom hangt de zender er een of meerdere controlegetallen aan. Met deze checksums kan de ontvanger de data controleren op bitfouten. Indien softwarematig uitgevoerd, is het genereren en controleren van de getallen echter zeer processorintensief, zeker als het aantal bytes in het pakket groot is. Voordat de data aankomen bij de applicatie, gaan ze vaak ook nog eens door drie verschillende lagen (ethernet, IP en TCP/UDP), waarbij elke laag een checksum toevoegt. Door de checksumgeneratie en –controle in hardware te doen, kan een netwerkprocessor zoals de Octeon deze taken tot wel honderd keer sneller uitvoeren. Onderweg passeren de pakketten bovendien talrijke systemen waar het een fluitje van een cent is om de inhoud te onderscheppen en aan een nader onderzoek te onderwerpen. Om allerlei gevoelige gegevens te verkrijgen, hoeven kwaadwillenden enkel een extra computer met een programma als het opensource Wireshark aan te sluiten op een switch, router of gateway. Een mogelijke bescherming hiertegen is versleuteling van de data via een Secure Socket Layer-verbinding (SSL). Maar ook encryptie en decryptie zijn zeer processorintensieve taken, helemaal bij gebruik van de RSA-standaard. In de Octeon heeft elke processorkern een hardwareacceleratiemodule, waardoor een versnelling tot achthonderd procent mogelijk is.

Horrorscenario

Een netwerkprocessor kan meerdere cores bevatten, de Octeon wel 48. Deze voeren ieder hun eigen of allemaal dezelfde applicatie uit. Als een toepassing meerdere processorkernen tegelijk gebruikt, zal de systeemperformance een stuk hoger zijn dan als zij op één enkele core draait. Maar wat als meerdere cores op hetzelfde moment dezelfde datastructuur benaderen? De applicatieprogrammeur zou zijn toevlucht dan kunnen nemen tot een spinlock. Voordat een core de data kan benaderen, moet hij de spinlock claimen, om deze weer vrij te geven als hij klaar is met de gegevens. Op enig moment kan slechts één processorkern de spinlock in bezit hebben. Mislukt het claimen omdat een andere core hem heeft, dan zit er niks anders op dan te wachten totdat die ermee klaar is. Deze methode van synchroniseren is dodelijk voor een multicore systeem. Processorkernen zitten elkaar meer in de weg dan dat ze elkaar helpen. De prestatie van het systeem kan zelfs minder worden met meer cores. Een Octeon-netwerkprocessor biedt een paar mechanismen om dit horrorscenario te voorkomen: multiple-read/single-write-spinlocks en tagging.

Geen toegang

Een multiple-read/single-write-spinlock maakt een datastructuur leesbaar voor meerdere cores tegelijkertijd. Dit is veilig doordat de leesoperatie de gegevens niet wijzigt. Moet een core wel iets veranderen, dan krijgt hij als enige toegang. Dit type spinlock wordt vaak gebruikt bij datastructuren die weinig worden gewijzigd maar vaak geraadpleegd, zoals een Address Resolution Protocol-tabel of een lijst van verboden IP-adressen. Bij tagging berekent de netwerkprocessor voor ieder datapakket van dezelfde sessie dezelfde hash, een soort checksum voor een klein gedeelte van het pakket. Een sessie is een logische verbinding tussen een zender en een ontvanger. Voorbeelden zijn een browsersessie met een webpagina of een versleutelde verbinding met de server van een bank tijdens het internetbankieren. Pakketten die behoren tot een andere sessie krijgen een andere hash. Door deze ‘tag’ te gebruiken om een core te selecteren, kan het systeem alle pakketten van dezelfde sessie naar dezelfde processorkern sturen en zo het gebruik van spinlocks voorkomen. Een geavanceerdere manier is atomic tagging. Hierbij kan het systeem een datapakket in principe op elke core verwerken, met de beperking dat er van een specifieke hash op elk moment maar één pakket in behandeling mag zijn. Dit voorkomt dat meerdere pakketten van dezelfde sessie tegelijkertijd op verschillende processorkernen actief zijn en dezelfde datastructuur kunnen benaderen. Pakketten krijgen geen toegang tot een core als er al een sessiegenoot actief is op een andere core. Omdat atomic tagging werkt zonder spinlocks, zullen de prestaties van het systeem lineair toenemen met het aantal gebruikte processorkernen.



Tagging versus atomic tagging

Stel er is een rij van wachtende pakketjes van sessies A, B, C en D. A1 staat er het langst in, D3 het minst lang. Neem voor het gemak ook aan dat een pakket afhandelen altijd even lang duurt, wat in de praktijk natuurlijk nooit het geval zal zijn. Figuur 1 toont de pakketafhandeling als het systeem de hash als tag gebruikt om elke sessie naar dezelfde processorkern te sturen. A en C wijst het toe aan core 0, B en D aan core 1. Als eerste gaat A1 naar core 0; A2, C1 en C2 moeten naar dezelfde processorkern en zullen dus moeten wachten. B1, de volgende in de wachtrij, kan direct door naar de vrije core 1 en kan dus parallel aan A1 worden afgehandeld. Als A1 en B1 klaar zijn, is A2 aan de beurt op core 0 en B2 gelijktijdig op core 1. Zo werkt het systeem ook C1 en C2 in volgorde af op core 0 en B3, D1, D2 en D3 op core 1.

Cavium

Figuur 1: Met tagging werkt het systeem de wachtrij af in zes slagen.

Met deze methode is van dezelfde sessie maar één pakket tegelijkertijd actief op een processorkern, dus van synchronisatieproblemen is geen sprake. Merk op dat als D2 en D3 worden afgehandeld door core 1, core 0 niks te doen heeft. Dit is gelijk ook een nadeel van deze aanpak: core 0 is werkeloos zolang er geen pakketten voor hem binnenkomen, terwijl er nog pakketten in de wachtrij staan.

Dat het efficiënter kan, toont Figuur 2. Het gebruik van de hash als atomic tag laat elk pakket op een core toe mits er geen pakket van dezelfde sessie op een ander core actief is. Als eerste wordt A1 verwerkt op core 0; A2 mag ondertussen niet naar core 1, dus C1, de volgende in de wachtrij, gaat daarnaartoe. Als A1 en C1 klaar zijn, zet het systeem A2 op core 0 en C2 op core 1, enzovoorts.

Cavium

Figuur 2: Met atomic tagging doet het daar een slag minder over.

Zo is van dezelfde sessie maar één pakket tegelijkertijd actief op een processorkern. Van synchronisatieproblemen is dus ook nu weer geen sprake. Wel zijn alle cores volledig afgevuld en wordt de wachtrij in vijf verwerkingsslagen afgehandeld in plaats van zes.

Nakijken

De gegevensverwerking levert vaak ook weer datapakketten op om naar buiten te sturen. Als deze de processor allemaal via dezelfde poort moeten verlaten, treedt weer een synchronisatieprobleem op, omdat slechts één core tegelijkertijd data kan sturen naar een poort. In de Octeon heeft elke uitgang meerdere hardwarequeues; nadat een core de data in een ervan heeft gezet, zorgt het systeem voor de verdere afhandeling. Het synchronisatieprobleem is hiermee te omzeilen door voor alle pakketten van een sessie dezelfde queue te selecteren (op basis van de hash); tegelijkertijd data zetten in verschillende queues van dezelfde uitgangspoort mag namelijk wel. Zo hebben netwerkprocessoren meer speciale voorzieningen, bijvoorbeeld om quality of service te garanderen. En met deep packet inspection is het dataverkeer tussen zender en ontvanger veel grondiger uit te pluizen dan met de standaard mechanismen, die niet verder kijken dan het IP-adres en het poortnummer. Al deze functionaliteit maakt dat een chip als de Octeon een moderne Intel x86 het nakijken geeft wat betreft performance, en dat tegen een fractie van het energieverbruik.

Over Johan Kleuskens

Johan Kleuskens is ontwerper van embedded systemen bij Phact in Venray. Hij heeft meer dan 25 jaar ervaring in hardware- en softwareontwikkeling en is verantwoordelijk voor de reeks producten die zijn bedrijf momenteel ontwikkelt op basis van Caviums Octeon-netwerkprocessoren.