Всичко за фърмуера на SOHO рутерите - Част I

В тази статия ще ви разкажем накратко за особеностите на вътрешното устройство на фърмуера на съвременните SOHO рутери, базирани на Linux.

В тази статия ще ви разкажем накратко за особеностите на вътрешното устройство на фърмуера на съвременните SOHO рутери, базирани на Linux.
Краткият списък на засегнатите в нея теми включва: зареждащ модул, ядро и коренна файлова система, комерсиален интерфейс и алтернативен софтуер, работа с USB устройства, особености при свързването с Интернет, използване на IPTV и VoIP, въпроси на безопасността, а също така и допълнителни възможности на фърмуера. 

router firmware

Забележки:
Мнението на читателите може да не съвпада с мнението на редакцията.
Мнението на редакцията може да не съвпада с мнението на автора.
Мнението на автора може да не съвпада с мнението на разработчиците.
Мнението на разработчиците може да не съвпада с мнението на читателите.
Предупреждение
В дадения материал ще бъдат дадени най-общи представи за това, как е устроен фърмуерът на съвременния рутер. По възможност ще бъдат изключени сложните термини. Обръщаме внимание, че някои моменти умишлено са представени в много опростен вариант или даже с групи допускания. Материалът е предназначен за неспециалисти и не претендира за пълнота, а цели само запознаване с основните IT понятия, които са необходими. 

ЧАСТ I
Увод
Изглежда няма особен смисъл да се разказва за това защо фърмуерът е толкова важен. Или има? Очевидно е, че от неговите качества много зависи работата на устройството.  Може рутерът да има великолепен хардуер и ужасен фърмуер, което не само че не позволява да се използват всички възможности на хардуера, но и води до липса на базова функционалност. А също така има и обратен вариант - качествен фърмуер дарява втори живот на вече застарял рутер. В края на краищата, фърмуерът може радикално да промени предназначението на рутера. 
Погледнете например Atlas RIPE - по-рано това беше малък мрежов модул на Lantronix, а сега е скъп рутер на TP-Link. И в двата случая в серийните устройства е заменен фърмуера.  Впрочем, даже и щатните фърмуери за едно и също устройство могат забележимо да се отличават в зависимост от това в коя страна ще се продават. В най-лошия случай (за потребителите), производителят може да се опита съзнателно да ореже функциите на даден рутер, за да не пречи на продажбите на по-скъпите модели.


Всичко за фърмуера на SOHO рутерите - Част I

© PCWorld България, pcworld

Apple Airport e ярък пример на съчетаване на прекрасен хардуер и много слаб фърмуер.
Съвременният фърмуер, даже този за най-простия рутер, е доста сложна система, състояща се от множество компоненти. Зад нея седят милиони редове код и десетки хиляди човекочасове труд на инженери и програмисти. Фърмуерите могат забележимо да се отличават един от друг, не само за различните устройства:  Даже за един и същ рутер програмното осигуряване може да бъде абсолютно различно.  За това  (в частност) при тестване на устройства, винаги се избира последната достъпна, стабилна версия на фърмуера и неговите компоненти. Версията е указана в описанието или явно се вижда на уеб интерфейса.
В дадения материал ще ви разкажем в общи черти, за вътрешното устройство и особеностите на работа  на Ethernet рутерите от  SOHO класа, тоест предназначени за  дома и малкия офис и получаващи достъп до Интернет, посредством Ethernet връзка с провайдъра на услугата.  Принципно, рутерите за xDSL, *PON или DOCSIS, в по-голямата си част  вътрешно са устроени по един и същ начин.  Мобилните рутери не сме ги включили в този материал, както и устройствата, формално  попадащи в сегмента SOHO, но фактически са по-близки към корпоративните и провайдърските решения. Материалът е общ и няма да се разглеждат конкретни марки.

Модул за зареждане (bootloader)
С какво започва всичко? Какво се случва с рутера, когато му се подаде захранване? На практика всичко е същото, като при стандартен PC компютър. След включването на рутера веднага се стартира зареждащата програма (bootloader), която инициализира хардуера. Това е нужно за зареждане на ядрото на операционната система, което пък е нужно за зареждане на ядрото на операционната система, а то подготвя обкръжението за стартиране на самата ОС, която пък стартира програми, нужни за основната работа, която изпълнява всички необходими функции в дома, който е построил ... Извинете.  Всъщност  на всеки един етап една малка програма прави всичко необходимо за да се изпълни следващата по-сложна програма. И така по веригата, няколко пъти подред. Независимо, че бутлоудърът се явява част от фърмуера, по същество той си е напълно функционално завършен, самостоятелно обособен блок. Това е и най-стабилният и отработен елемент на фърмуера.


Всичко за фърмуера на SOHO рутерите - Част I

© PCWorld България, pcworld

С червено на платката на TP-Link MR-3220v2 е оградена основната памет cFeon EN25Q32B-104HIP, където се намира фърмуера и бутлоудъра U-Boot.
Бутлоудърът по правило не е с голям обем – от порядъка на няколкостотин KB -  и се намира в самото начало на флаш паметта или по-рядко на отделен чип.  В съседство нерядко се разполагат служебни данни, от рода на MAC адреси, идентификатор на модела, настройките на самия бутлоудър и пр. 
В задачите на бутлоудъра влизат първоначалната проверка на хардуера, инициализация на SoC и RAM, зареждане на мини драйвери за работа с флаш паметта, Ethernet контролерите и допълнителните интерфейси UART или JTAG.  Обикновено в бутлоудъра е включен предварително настроен FTP клиент или FTP/HTTP сървър, минималистичен мрежов стек и проста командна обвивка, а понякога и допълнителен софтуер. Това все още не е операционната система,  а малка, "умна" и бърза програма. 
Защо е толкова трудно? С цел да се предпази при възникване на проблем с фърмуера - просто  копира в паметта по мрежата,  правилната версия. Ето така в болшинството си работят фирмените инструменти за възстановяване на фърмуера на рутерите.  Ако например при обновяване на фърмуера прекъсне захранването и не е записан до край в паметта, то при следващия старт, няма да се случи нищо и устройството ще бъде "безжизнено".  Именно поради тази причина се взимат тези мерки, за да може в такъв случай да се зареди по мрежата работоспособен фърмуер. Даже в някои случаи и в щатен режим на рутера е предвидено зареждане на операционната система по мрежата.


Всичко за фърмуера на SOHO рутерите - Част I

© PCWorld България, pcworld

В бутлоудъра на Broadcom CFE, даже е предвиден уеб интерфейс, който обикновено е забранен (източник OpenWRT.org) 

Най-общо, всичко зависи от разработчиците и  задачите, които трябва да изпълняват рутерите. Със създаването на бутлоудърите се занимават производителите на SoC чиповете, създателите на фърмуера и разработчиците на рутерите. Разнообразието от бутлоудъри не е чак толкова голямо, като най-популярен е отвореният проект Das U-Boot, който предоставя отличен набор от функции. Той лесно може да се персонализира за собствени нужди, заради което се използва от множество разработчици. Интересното е, че може напълно да се избегнат такива мастити бутлоудъри и да се използва миниатюрен код, който ще предаде управлението на ядрото на операционната система.    
Обърнете внимание, че по същество, бутлоудърът се обновява доста рядко, а в някои случай даже не се пипа. Ако бутлоудърът "умре" в резултат на грешка при записа в паметта или при проблем с нея, то и устройството "умира" с него. Спасението е единствено в смяна на чипа с такъв с работещ бутлоудър. В случая с евтините рутери по-добре да се купи цяло ново устройство. Поради оскъпяването загубват популярност и хардуерните модификации от типа на запояване на допълнителен обем памет, като по този начин в някои случаи може от едно устройство да се получи друго, по-скъпо. 
Ядро и основна файлова система
Бедата е в това, че често за инсталиране на неофициален  фърмуер е необходимо да се смени и бутлоудъра. Някои производители се борят с това и например лишават от гаранция продукта си, когато е с модифициран фърмуер. Това се прави не защото носи някаква вреда на устройството, а по чисто икономически причини - ниски разходи за техническа поддръжка. В краен случай, бутлоудърът може да бъде сменен посредством UART или JTAG, които отново може да не са запоени на платката. Малка неприятност се заключва и в това, че традиционни файлови системи не се използват за флаш паметта. Бутлоудърът "знае", че на еди кой си адрес се намира ядрото, което трябва да стартира. Ядрото също се намира в част от основния дял. По-нататък и драйверите, и останалия софтуер могат да се обръщат към необходими области с данни.
Защо искаме да откроим ядрото, след като то е част от някаква ОС? Нека условно да разделим фърмуера на Linux-базиран  и на друг. Под друг се подразбира цяло множество от вграждани ОС, част от които се отнасят и към операционните системи в реално време (RTOS) и се използват повсеместно - от микровълнови печки до космически спътници. Сред такива подобни системи при евтините рутери на очи се набива VxWork, операционната система . Linux-базираният фърмуер също може да се раздели на две категории - тези, които много приличат на традиционните GNU/Linux дистрибутиви и тези, които използват само ядрото, а цялото останало обкръжение се отличава от традиционното. Примери за последните са RouterOS и NDMS, а за първите - многочислените *WRT проекти и не многочислените официални фърмуери.   Разликата спрямо настолните дистрибутиви е максималната оптимизация на програмното осигуряване - всичко излишно е премахнато, часта с библиотеките и инструментите е заменена с техни микроверсии. Даже вградените справочни материали (тези, които се извеждат посредством ключовете /? или --help), могат да бъдат премахнати за икономия на място.


Всичко за фърмуера на SOHO рутерите - Част I

© PCWorld България, pcworld

Собствената командна обвивка на ZyXel

Ние ще говорим за Linux-базираните  фърмуери, тъй като сега те са най-популярни. Цялата прелест на ядрото на Linux е в това, че то е безплатно, с отворен код и достатъчно функционално. Освен това, с разработката на ядрото се занимават всякакви специалисти, като разработчиците на софтуер за рутери и производителите на чипове активно го допълват. За това и сдобиването на пълната му документация и справянето с кода не е трудна задача. В общия случай, за произволна стартираща млада компания или просто група ентусиасти, е много по-удобно да вземе и да използва готово "мощно" ядро. Даже те и да не го модифицират, напълно могат да разчитат на поправяне на грешки, повишаване на производителността и други подобрения в бъдеще, които така или иначе ще бъдат направени в ядрото от други разработчици. Налице е изгода и като пари, и като време. В края на краищата, сред всички платформи с отворен код, именно Linux се развива най-много активно.
Образът на ядрото и основния раздел практически винаги са компресирани по един или друг начин. Ядрото се разкомпресира в оперативната памет и работи изключително там, а ако фърмуерът е Linux-базиран, с основния дял се осъществява каскадно-обединено монтиране.  В паметта се създават още и виртуални раздели с възможност за запис, след което всичко това се "събира" в една файлова система. Освен това се създават виртуални файлови системи, които помагат за взаимодействието на програмите с ядрото и останалото обкръжение. Отново ще обърнем внимание на това, че  основният дял не е просто свит, а е достъпен само в режим на четене. От това следва едно важно свойство на фърмуера - той нищо не "знае" за своето предишно състояние, освен потребителските настройки, които се съхраняват в отделен раздел на флаш паметта. Това е свързано с факта, че флаш паметта има ограничено число цикли на презапис, така че е по-лесно всеки път при стартиране да се "събира" OC от такива парчета.


Всичко за фърмуера на SOHO рутерите - Част I

© PCWorld България, pcworld

Тук имаме Linux 

Би било много добре, ако във всеки нов фърмуер се използва обновено ядро - повишава се производителността, появяват се нови възможности, поправят се проблемните неща. В реалността всичко изглежда по-различно - в някакъв момент се избира подходящата версия на ядрото, около което ще се строи по-нататъшната разработка. Освен това, крупните компании, като правило, кодовата база е еднаква за линията им от устройства. При събирането на фърмуера за конкретен модел, в нея се включват само необходимите компоненти. Затова, в частност, всички услуги се появяват в цялата линия от устройства в не голям интервал от време, зависещ от необходимото време за тестване на всеки един модел. През няколко години се преминава на нова база с код, като по този начин, стари модели от преди 1-2 години, могат и да не попаднат в нея. 
Грубо казано, има четири участника в процеса на създаване на мрежовото оборудване - разработчиците на хардуерната част, завода производител, създателите на фърмуера и притежателите на марката, под която готовият продукт ще се продава. Далеч не винаги всички тези елементи са обединени под крилото на една компания. Съвсем не са редки случаите, когато едно и също устройство се продава под различни марки, като те разполагат със съвсем различни, но лесно взаимно заменяеми фърмуери. Има фирми, които съществуват за сметка на създаване и адаптиране на софтуер за конкретен клиент - или провайдър или някаква марка. За да не стоят далеч от това, производителите на SoC, не само създават SDK за своите чипсети, но и предоставят референтни платформи на тяхна база.  SDK често се предоставят само на компании, които са подписали обемни договори за покупка на чипове. За свободен достъп попадат вече стари набори и те не са пълни. На основата на SDK се създават фърмуерите.

Комерсиален софтуер и алтернативни фърмуери
 Принципно всичко тук е такова, каквото е било винаги.  Има случаи на кражба на труд на други хора, нарушения на лицензи, съдебни спорове, патентни войни и други "радости" на живота. Когато използвате софтуер със същия GPL лиценз (повечето Linux фърмуери се разпространяват със същия лиценз), можете поне да посочите това и да споделите своя опит с останалите, за предпочитане, чрез предоставяне на изходния код. Достойните компании правят именно това. Като цяло това е нормалната ситуация, когато разработчиците обменят по между си различни усъвършенствания. Естествено това не засяга кога, който поначало е бил затворен и се охранява като интелектуална собственост.  Съвременният софтуер с отворен код, практически може да работи с всеки един SoC, за който производителят е заявил съвместимост с Linux. При това той ще бъде доста функционален, но доволно стандартен, а по този начин трудно ще се  конкурира на пазара.
В реалността, разбира се, всичко е малко по-сложно. Производителите и ентусиастите не съществуват в някакви, не пресичащи се паралелни реалности. Нови проекти и там и там се създават, живеят и умират. Понякога те силно се разклоняват и продължават да живеят с нови качества, а понякога изчезват за винаги. Най-общо може да се каже, че  без производителите на рутери не могат да съществуват добри отворени проекти, а без тях не могат да съществуват качествени официални фърмуери.  Понякога е много трудно да се разбере кога и от кого е въведена тази или онази функция, но това не е и необходимо. Един и същи код се използва многократно, усъвършенства се и броди между различни проекти. Впрочем въпросът не е само в достъпността на изходния код, но и в неговата пълнота, в наличието на необходимите помощни инструменти, библиотеки и още много други неща. Няма да се спираме подробно на развитието на програмното осигуряване, тъй като това е доста дълга история.  Не можем да кажем, че всичко в този свят е розово и разработчиците са обхванати от една взаимна проникваща любов. Независимо от това, напредъка в създаването на фърмуера продължава и той придобива нови и нови функции.
Но тук ние отново сме принудени да се върнем на вечната тема за разкоша и мизерията на отворения код (open source). Отвореният код е прекрасен, но не винаги актуален (съвременен), надежден, производителен, икономичен, функционален и компактен, което е важно за всички системи в които се вгражда. Не ви харесва уеб сървърът? Вземете GoAhead. Нужни са нормални драйвъри за NTFS и HFS+, а не само за нативната при Linux файлова система ext2/3/4? Хайде тогава погледнете за Paragon или Tuxera. Искате сертифициран DLNA сървър? TwonkyMedia ще го направи. Само не забравяйте да платите за всичко това. Списъкът на комерсиалните решения, можем да го продължим още доста дълго. Трябва ли да споменаваме, че софтуера е доста важен за работа на рутера. Комерсиалният софтуер внася също не малка част в себестойността на крайното устройство. Стратегията " Ще спестя, като купя този модел, защото той има същия хардуер, като на по-скъпото", не винаги е уместна.


Всичко за фърмуера на SOHO рутерите - Част I

© PCWorld България, pcworld


Всичко за фърмуера на SOHO рутерите - Част I

© PCWorld България, pcworld

Горният скрийншот е екрана на стандартния фърмуер на ASUS, а долният - уеб интерфейса на фърмуера Padavan
Естествено, никакъв платен софтуер няма да намерите във фърмуера с отворен код от типа на OpenWRT. Но няма да намерите там и голямо количество важни неща - нормални драйвери за съвременния хардуер. SDK, драйверите и документацията често много ревниво се пази от някои производители на чипсети.  Пълният комплект може да се получи само при покупка на определено число чипове или да се плати заплати определена сума. Затова и масовият им достъп идва със закъснение. Може разбира се, да се пробва да се "реверсира" бинарната версия на драйвера и да се създаде собствен аналог, но такъв подход не винаги сработва и в този случай не всичко е толкова просто, защото на чипа може да са му необходими, допълнителни данни за инициализация (например лицензен ключ), калибровъчни данни и какво ли още не. Най-общо, всички възможности могат да се реализират само от производителите. Добър пример за това са хардуерно реализираните NAT, TurboQAM и други фирмени функции на чиповете на тази или онази фирма. Екстремният вариант е собствен пълноценен фърмуер за който и да е компонент с бутлоудър, ядро и обкръжение.
Всичко това във фърмуера изповядващ "чист"  open source няма да работи. Приятно изключение са чипсетите на Ralink, но след покупката им от MediaTek, още не е известно как ще се развиве ситуацията в бъдеще. Така наречените фърмуери от ентусиасти са лишени от такъв проблем. Лишени, защото са построени на същата кодова база като официалното програмно осигуряване, ако е достъпно. Общата част остава без изменения, а всички останали компоненти могат да се тунинговат. Да, и това се прави не без успех. Пример - фърмуерът за ASUS от Padavan и Merlin. За рутерите Netgear също има собствено общество, което създава фърмуер. За всички останали рутери най-подходящи са *WRT проектите. Със Zixel ситуацията е интересна. Първото поколение NDMS официално не се поддържа, но все още е достъпно. За този фърмуер също има проект за разширяване на функционалността му.
Това мое би е най-добрият вариант - стартиране на приложение от USB устройство, при изключването на което, рутерът продължава да работи в стандартен режим. При инсталиране на допълнителен софтуер на евтин рутер, вие ще опрете не толкова до ограничението на процесора, но и в малкото количество RAM, така, че без файл/раздел, качването няма да се осъществи.
Като цяло фърмуерът за различните страни и региони може съществено да се отличава, независимо че хардуера е еднакъв.

Следва продължение....

Twitter icon Facebook icon
Този сайт използва бисквитки (cookies). Ако желаете можете да научите повече тук.