Als wannabe scripter en niet gehinderd door enige kennis en ervaring wilde ik onderstaand even spiegelen bij de meer ervaren rotten.
Ik heb de beschikking over een file (aangeleverde dump) met daarin 100.000+ unieke IPv4 adressen die representatief zijn voor het bezoek aan website X.
Daarnaast heb ik een andere file met daarin de beschikbare netwerken (peers) van een BGP router. Het gaat hier om enkele duizenden netwerken. (111.111.111.0/20 bijv.)
Nu wil ik weten hoeveel procent van de unieke (potentiële) IP adressen niet bereikbaar zijn via aangesloten peers/netwerken op deze router en dus alleen via betaalde transit verbindingen te bereiken zijn.
Mijn eerste idee is om alle IP adressen in een array A in te lezen en vervolgens alle netwerken in een array B. Met een bitwise XOR operator kan er gekeken worden of een betreffende IP adres (uit array A) binnen het betreffende netwerk valt (in array B ). Array B is eigenlijk een ordinaire routing table.
Dit betekent dat voor elke entry in array A array B doorlopen moet worden en er voor elk netwerk in array B een XOR uitgevoerd wordt op zoek naar een match . Eventueel kan het iteratief doorlopen van array B afgebroken worden na een gevonden match.
Mijn gevoel zegt dat dit zal werken maar dat het een hoop tijd kost om de data op deze manier te verwerken. Wat kan ik hier aan optimaliseren? De gemiddelde huis-tuin-en-keuken router doet dit vast efficiënter
.
Mijn voorkeur gaat uit naar C# maar dat is voor dit vraagstuk niet zo heel relevant.
Heeft iemand hier ideeën over?
Ik heb de beschikking over een file (aangeleverde dump) met daarin 100.000+ unieke IPv4 adressen die representatief zijn voor het bezoek aan website X.
Daarnaast heb ik een andere file met daarin de beschikbare netwerken (peers) van een BGP router. Het gaat hier om enkele duizenden netwerken. (111.111.111.0/20 bijv.)
Nu wil ik weten hoeveel procent van de unieke (potentiële) IP adressen niet bereikbaar zijn via aangesloten peers/netwerken op deze router en dus alleen via betaalde transit verbindingen te bereiken zijn.
Mijn eerste idee is om alle IP adressen in een array A in te lezen en vervolgens alle netwerken in een array B. Met een bitwise XOR operator kan er gekeken worden of een betreffende IP adres (uit array A) binnen het betreffende netwerk valt (in array B ). Array B is eigenlijk een ordinaire routing table.
Dit betekent dat voor elke entry in array A array B doorlopen moet worden en er voor elk netwerk in array B een XOR uitgevoerd wordt op zoek naar een match . Eventueel kan het iteratief doorlopen van array B afgebroken worden na een gevonden match.
Mijn gevoel zegt dat dit zal werken maar dat het een hoop tijd kost om de data op deze manier te verwerken. Wat kan ik hier aan optimaliseren? De gemiddelde huis-tuin-en-keuken router doet dit vast efficiënter
Mijn voorkeur gaat uit naar C# maar dat is voor dit vraagstuk niet zo heel relevant.
Heeft iemand hier ideeën over?