Remote Network and Router Management Platform for Internet Providers

Remote Network and Router Management Platform for Internet Providers

Information
Region:
USA and Denmark
Industry:
Telecom
Type:
Web
Engagement model:
Time and materials
Duration:
Since 2021
Staff:
A Solution Architect, 6 Senior-level Developers, 7 Mid-level Developers, 1 Senior-level QA Automation Engineer and a Project Manager
ID:
645
Technologies used
Spring
Azure Kubernetes
Go
Java
Kotlin
AWS S3
React
Python
MongoDB
PostgreSQL

Client

A Danish-American telecommunication software provider commissioned Elinext to develop a web application for managing networks and routers remotely.

Challenge

Internet providers have to use a lot of customer support workforce to help customers solve their connection issues. Every issue takes a fair amount of time to handle because operators need to explain to customers what needs to be done with their router.

One Danish-American company set out to change that. They came up with an idea for web software that would give operators access to customers’ routers and enable them to take action directly, in real-time. Nothing like that had ever been done before.

The company looked for a developer and came across Elinext. We had a lot of experience in real-time processing and Big Data, so our team turned out to be a good fit for the project.

Process

From the moment the project took off, we have been using the Agile methodology and direct communication with the customer’s team a few times a day. Sometimes we conduct meetings and debug sessions which may be lengthy (up to 4 hours), albeit always very productive.

We started by implementing cloud adapters for routers (CPE) and firmwares which our client’s C++ developers had already been working on. In parallel, we created adapters for third-party routers and made common APIs for all items. We also added a Kubernetes cluster which could be deployed on any platform.

During the latest stage, we enabled the software to collect and analyze 1,000,000 data points per second in real time.

We built the MVP quickly, in just two months, and then in four more months we brought the fully functional product to completion. And implementing AI and ML took 1.5 years from the project start.

Tuning Up the Messenger Broker

The client had been using the Apache Pulsar messenger broker. And their developers had been scaling it the wrong way, which we had to turn around. Eventually, we managed to tune the broker up but the client had to change something in their firmware.

Data Simulation

It is difficult to predict how each device will behave depending on its environment, as even particular wall materials may affect the signal quality. On top of that, we needed to generate 1,000,000 payloads per second. All that made simulating the behavior of the system a bit of a challenge.

What we did was use a separated cluster on Kotlin specifically for these cases.

Testing

We only did automated quality assurance. Manual tests were the remit of our client.

Product

The system we built is a unique software platform for seamless subscriber management and network visibility. It consists of a website, a set of analytics tools and a command-line interface.

We also made the system compliant with telecommunication standards like TR-069, TR-181, TR-369, TR-089, TR-106, TR-131, TR-135, TR-140, TR-142, TR-143, TR-157, TR-196, TR-330, TR-247 and TR-255.

The application elevates performance over basic connectivity via end-to-end visibility of the entire network. Identifying issues in real-time improves customer satisfaction, retention and quality of experience.

Through common APIs, the application can be seamlessly integrated with existing operational support systems and business support systems used by our client’s customers. The Customer-Premises Equipment (CPE) doesn’t have to be our client’s device.

The application provides a wealth of service options and customizations for Internet service providers.

Deployment

We used a Kubernetes cluster with Java microservices and React for GUI. Using microservices allows our client to support huge data throughput and scale inexpensively. In addition, it helps support real time analytics for any payload which we receive.

To allow operators to check network health, configure alerts and use traceability, we paired Grafana with Prometheus.

Microservices

The system consists of several microservices, each with a specific purpose.

  • The Ingestors services convert data models from any router to the TR181 model, which is standard for the industry.
  • Adapters process the TR181 model and create metrics (time series data) based on it. Metrics look like a point with a timestamp and a value like CPU usage or signal strength at a particular period of time.
  • The CPE Control module allows the operator to specify commands for the device – this can be done right after the endpoint has been called. The commands span device reboot, factory reset or specifying passwords for access points.
  • With the Firmware Upgrade module, operators can schedule firmware upgrades for any device connected to the platform.
  • As part of real-time analytics, statuses show whether a particular router is healthy or not. The operator can also check specific router parameters over the cloud infrastructure.
  • Users sometimes call support when their WiFi signal is poor. The Alerts module will notify the operator of a problem and suggest fixes before that happens.
  • The Dashboard module allows operators to configure over 100 widgets available with the application to handle particular types of upcoming data.
  • Another useful feature for operators is Session Manager. Using it, they can debug routers that are connected to the cluster.
  • Finally, the advanced module that took us the longest to build is the ML/AI Cloud. It is instrumental to further development of the product. Our client can use the Cloud to train the artificial intelligence model to meet their customers’ prospective needs.

Storage

We used PostgreSQL to store static values and constants, whereas MongoDB is in place for time series data. Cache is distributed and is enabled with Redis. And for historical data we used AWS S3.

Message Broker

The system relies on Kafka for most cases. But when it’s not enough for brokering messages, Apache Pulsar is used.

Results

It took us about 18 months to develop the fully functional, AI-powered system. It now processes around 1,000,000 payloads from 1,000,000 routers per second. And soon after it went live, operators using it were able to reduce their costs for customer support and improve customer communications.

This project was also a great educational experience, as we learned to work with a tool that was new to us: Apache Pulsar. And we continue to improve the product going forward. Adding further industry standards and supporting new routers are next in our pipeline.

Related Cases: A Showcase of Diverse Web Solutions

Outstaffing for Web App Development for a Top-Notch Insurance Company Web Design for a Healthcare Company Web Application for Seamless Subtitle Management Web Application Development for a Swiss Interior Design Studio Web Application for ICO Investments and Management Masternodes Investment Web Platform Web App for IoT Devices Monitoring Web App Development for Remote Orders Making Text-to-Speech Web Application Web Solution for Mental Health Clinics Refactoring of Web App for US Medical Lab Services
1-111
Do you want the same project?
Got A Project Idea? Lets Discuss It With Us
Contact Us

    • United States+1
    • United Kingdom+44
    • Afghanistan (‫افغانستان‬‎)+93
    • Albania (Shqipëri)+355
    • Algeria (‫الجزائر‬‎)+213
    • American Samoa+1
    • Andorra+376
    • Angola+244
    • Anguilla+1
    • Antigua and Barbuda+1
    • Argentina+54
    • Armenia (Հայաստան)+374
    • Aruba+297
    • Ascension Island+247
    • Australia+61
    • Austria (Österreich)+43
    • Azerbaijan (Azərbaycan)+994
    • Bahamas+1
    • Bahrain (‫البحرين‬‎)+973
    • Bangladesh (বাংলাদেশ)+880
    • Barbados+1
    • Belarus (Беларусь)+375
    • Belgium (België)+32
    • Belize+501
    • Benin (Bénin)+229
    • Bermuda+1
    • Bhutan (འབྲུག)+975
    • Bolivia+591
    • Bosnia and Herzegovina (Босна и Херцеговина)+387
    • Botswana+267
    • Brazil (Brasil)+55
    • British Indian Ocean Territory+246
    • British Virgin Islands+1
    • Brunei+673
    • Bulgaria (България)+359
    • Burkina Faso+226
    • Burundi (Uburundi)+257
    • Cambodia (កម្ពុជា)+855
    • Cameroon (Cameroun)+237
    • Canada+1
    • Cape Verde (Kabu Verdi)+238
    • Caribbean Netherlands+599
    • Cayman Islands+1
    • Central African Republic (République centrafricaine)+236
    • Chad (Tchad)+235
    • Chile+56
    • China (中国)+86
    • Christmas Island+61
    • Cocos (Keeling) Islands+61
    • Colombia+57
    • Comoros (‫جزر القمر‬‎)+269
    • Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)+243
    • Congo (Republic) (Congo-Brazzaville)+242
    • Cook Islands+682
    • Costa Rica+506
    • Côte d’Ivoire+225
    • Croatia (Hrvatska)+385
    • Cuba+53
    • Curaçao+599
    • Cyprus (Κύπρος)+357
    • Czech Republic (Česká republika)+420
    • Denmark (Danmark)+45
    • Djibouti+253
    • Dominica+1
    • Dominican Republic (República Dominicana)+1
    • Ecuador+593
    • Egypt (‫مصر‬‎)+20
    • El Salvador+503
    • Equatorial Guinea (Guinea Ecuatorial)+240
    • Eritrea+291
    • Estonia (Eesti)+372
    • Eswatini+268
    • Ethiopia+251
    • Falkland Islands (Islas Malvinas)+500
    • Faroe Islands (Føroyar)+298
    • Fiji+679
    • Finland (Suomi)+358
    • France+33
    • French Guiana (Guyane française)+594
    • French Polynesia (Polynésie française)+689
    • Gabon+241
    • Gambia+220
    • Georgia (საქართველო)+995
    • Germany (Deutschland)+49
    • Ghana (Gaana)+233
    • Gibraltar+350
    • Greece (Ελλάδα)+30
    • Greenland (Kalaallit Nunaat)+299
    • Grenada+1
    • Guadeloupe+590
    • Guam+1
    • Guatemala+502
    • Guernsey+44
    • Guinea (Guinée)+224
    • Guinea-Bissau (Guiné Bissau)+245
    • Guyana+592
    • Haiti+509
    • Honduras+504
    • Hong Kong (香港)+852
    • Hungary (Magyarország)+36
    • Iceland (Ísland)+354
    • India (भारत)+91
    • Indonesia+62
    • Iran (‫ایران‬‎)+98
    • Iraq (‫العراق‬‎)+964
    • Ireland+353
    • Isle of Man+44
    • Israel (‫ישראל‬‎)+972
    • Italy (Italia)+39
    • Jamaica+1
    • Japan (日本)+81
    • Jersey+44
    • Jordan (‫الأردن‬‎)+962
    • Kazakhstan (Казахстан)+7
    • Kenya+254
    • Kiribati+686
    • Kosovo+383
    • Kuwait (‫الكويت‬‎)+965
    • Kyrgyzstan (Кыргызстан)+996
    • Laos (ລາວ)+856
    • Latvia (Latvija)+371
    • Lebanon (‫لبنان‬‎)+961
    • Lesotho+266
    • Liberia+231
    • Libya (‫ليبيا‬‎)+218
    • Liechtenstein+423
    • Lithuania (Lietuva)+370
    • Luxembourg+352
    • Macau (澳門)+853
    • Macedonia (FYROM) (Македонија)+389
    • Madagascar (Madagasikara)+261
    • Malawi+265
    • Malaysia+60
    • Maldives+960
    • Mali+223
    • Malta+356
    • Marshall Islands+692
    • Martinique+596
    • Mauritania (‫موريتانيا‬‎)+222
    • Mauritius (Moris)+230
    • Mayotte+262
    • Mexico (México)+52
    • Micronesia+691
    • Moldova (Republica Moldova)+373
    • Monaco+377
    • Mongolia (Монгол)+976
    • Montenegro (Crna Gora)+382
    • Montserrat+1
    • Morocco (‫المغرب‬‎)+212
    • Mozambique (Moçambique)+258
    • Myanmar (Burma) (မြန်မာ)+95
    • Namibia (Namibië)+264
    • Nauru+674
    • Nepal (नेपाल)+977
    • Netherlands (Nederland)+31
    • New Caledonia (Nouvelle-Calédonie)+687
    • New Zealand+64
    • Nicaragua+505
    • Niger (Nijar)+227
    • Nigeria+234
    • Niue+683
    • Norfolk Island+672
    • North Korea (조선 민주주의 인민 공화국)+850
    • Northern Mariana Islands+1
    • Norway (Norge)+47
    • Oman (‫عُمان‬‎)+968
    • Pakistan (‫پاکستان‬‎)+92
    • Palau+680
    • Palestine (‫فلسطين‬‎)+970
    • Panama (Panamá)+507
    • Papua New Guinea+675
    • Paraguay+595
    • Peru (Perú)+51
    • Philippines+63
    • Poland (Polska)+48
    • Portugal+351
    • Puerto Rico+1
    • Qatar (‫قطر‬‎)+974
    • Réunion (La Réunion)+262
    • Romania (România)+40
    • Russia (Россия)+7
    • Rwanda+250
    • Saint Barthélemy+590
    • Saint Helena+290
    • Saint Kitts and Nevis+1
    • Saint Lucia+1
    • Saint Martin (Saint-Martin (partie française))+590
    • Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)+508
    • Saint Vincent and the Grenadines+1
    • Samoa+685
    • San Marino+378
    • São Tomé and Príncipe (São Tomé e Príncipe)+239
    • Saudi Arabia (‫المملكة العربية السعودية‬‎)+966
    • Senegal (Sénégal)+221
    • Serbia (Србија)+381
    • Seychelles+248
    • Sierra Leone+232
    • Singapore+65
    • Sint Maarten+1
    • Slovakia (Slovensko)+421
    • Slovenia (Slovenija)+386
    • Solomon Islands+677
    • Somalia (Soomaaliya)+252
    • South Africa+27
    • South Korea (대한민국)+82
    • South Sudan (‫جنوب السودان‬‎)+211
    • Spain (España)+34
    • Sri Lanka (ශ්‍රී ලංකාව)+94
    • Sudan (‫السودان‬‎)+249
    • Suriname+597
    • Svalbard and Jan Mayen+47
    • Sweden (Sverige)+46
    • Switzerland (Schweiz)+41
    • Syria (‫سوريا‬‎)+963
    • Taiwan (台灣)+886
    • Tajikistan+992
    • Tanzania+255
    • Thailand (ไทย)+66
    • Timor-Leste+670
    • Togo+228
    • Tokelau+690
    • Tonga+676
    • Trinidad and Tobago+1
    • Tunisia (‫تونس‬‎)+216
    • Turkey (Türkiye)+90
    • Turkmenistan+993
    • Turks and Caicos Islands+1
    • Tuvalu+688
    • U.S. Virgin Islands+1
    • Uganda+256
    • Ukraine (Україна)+380
    • United Arab Emirates (‫الإمارات العربية المتحدة‬‎)+971
    • United Kingdom+44
    • United States+1
    • Uruguay+598
    • Uzbekistan (Oʻzbekiston)+998
    • Vanuatu+678
    • Vatican City (Città del Vaticano)+39
    • Venezuela+58
    • Vietnam (Việt Nam)+84
    • Wallis and Futuna (Wallis-et-Futuna)+681
    • Western Sahara (‫الصحراء الغربية‬‎)+212
    • Yemen (‫اليمن‬‎)+967
    • Zambia+260
    • Zimbabwe+263
    • Åland Islands+358

    Insert math as
    Block
    Inline
    Additional settings
    Formula color
    Text color
    #333333
    Type math using LaTeX
    Preview
    {}
    Nothing to preview
    Insert