В даному документі представлено опис передумов для розвитку технології NX, а також розглядаються проектні рішення, що застосовуються в ході цього розвитку. Пояснюється відміну NX від інших подібних технологій, описуються цілі, переслідувані даною технологією.
Мережева обчислювальна система - це старий «розумний» термін, яким називався Інтернет. Це задумка, яка була покликана звільнити користувачів від залежності від своїх персональних комп'ютерів і операційних систем і зробити крок в напрямку використання програмних додатків і серверів для обробки даних. До теперішнього часу відсутність універсального, визнаного всіма протоколу (зразок HTML і XML для Web), ускладнює реалізацію і підтримку мережевої обробки даних в широких масштабах.
Чому саме система X-Window?
Розподілена обчислювальна архітектура NX - це пакет комерційних засобів і технологій з відкритими «кодами», створених, щоб зробити мережеву обробку даних такою ж легкою, як подорож по Web. Він складається з тонкого шару серверного програмного забезпечення, яке дозволяє будь-якого комп'ютера під керуванням операційної системи Unix функціонувати як термінальний сервер, а також клієнтів для широкого ряду платформ і операційних систем. Для реалізації основ розподіленої обчислювальної архітектури NX «NoMachine» зробила свій вибір на користь відомої і широко поширеною системи X-Window - системи вікон, яка стоїть за графічним призначеним для користувача інтерфейсом Linux і операційною системою Unix.
Мабуть, більшість рішень в області мережевої обробки даних призначені для використання в якості засобу-замінника. Виявилося, що розробники при проектуванні цих коштів не передбачали, що для користувачів вони будуть основним способом доступу до робочого столу. Дана проблема стосується, наприклад, VNC і RDP. Обидва ці протоколу набагато простіше, ніж X (і тому дуже добре підходять для малофункціональних клієнтів), проте їх простота не компенсує недолік продуктивності і відсутність деяких функцій. Наприклад, дані протоколи формують зображення на віддаленому екрані, передаючи по мережі величезні обсяги графічної інформації. Навіть якщо RDP - протокол набагато більш високого рівня і є набагато більш ефективним протоколом, ніж RFB, він не був створений для щоденного використання обчислювальних ресурсів, а є доповненням до базової операційній системі.
X-Window - це не розширення підсистеми операційної системи на головній обчислювальній машині, а її графічна підсистема. Програмні додатки X повідомляються з X-Window з використанням протоколу X таким чином, щоб операційній системі не треба було додавати шар до мережевого протоколу для передачі оновлень на екран.
Труднощі системи X-Window
Система X-Window - це відкритий і розширюваний клієнт-серверний протокол, покликаний реалізувати розділовий шар між логікою програми (запускається на серверах додатків) і поданням (з яким мають справу клієнти). Іншими словами, він був створений для мережевої обробки даних. Для ефективної роботи справжній протокол X вимагає високої пропускної здатності мережі і низький рівень запізнень. Хоча, на протязі декількох років розвиток графічних користувальницьких інтерфейсів підвищило вимоги до мережевих і обчислювальних ресурсів. Замість створення шарів для програмних додатків X для адаптації їх роботи з наявними мережевими ресурсами, розробники клієнта X і інструментальних засобів X зробили ставку на відмову користувачів від мережевих можливостей X-Window з метою полегшення доступу до додатків, запущеним на їх власних комп'ютерах. За останні кілька років система X-Window повністю втратила свої первинні характеристики протоколу мережевої обробки даних, і навіть найобізнаніші і просунуті користувачі стали сприймати її як свого роду драйвер монітора.
З самого початку головною метою проекту NX був розвиток технології стиснення X, яка дозволила б користувачу запускати немодифіковані версії найбільш поширених середовищ з реалізацією концепції робочого столу X на стандартних серверах X з використанням мережевого підключення будь-якого типу. Це в першу чергу потрібно для того, щоб система X-Window знову знайшла свою функцію мережевого протоколу.
Технологія з використанням протоколу стиснення X від «NoMachine» «NoMachine» розробила особливу технологію X з використанням протоколу стиснення, а також інтегрований набір проксі-агентів, які дозволяють запускати повноцінні сесії з використанням вилученої робочої середовища навіть в повноекранному режимі і при наявності низької Інтернет- підключення - аж до тієї швидкості, яку забезпечує модем з смугою частот 9600.
Стиснення NX працює на трьох рівнях по протоколу X:
Виконується стиснення мережевого трафіку за допомогою деякого набору засобів, включаючи диференціальні алгоритми «по кожному повідомленням», просунуті способи кешування, стиснення зображень з втратами і без.
Циклічна передача інформація знижена майже до нуля, при цьому пропускна здатність доводиться до максимуму. Пропускна здатність налаштовується в реальному часі, відповідно до умов в мережі.
Коефіцієнт стиснення по протоколу X варіюється від 10 до 1 до 100 до 1 і більше, в залежності від виконуваного програмного додатка. Такий результат досягається без втрат продуктивності на швидких локальних мережах, тому віддалені сесії можуть виконуватися на швидкості, що не помітна для локального комп'ютера.
Основна ідея - відкриті «вихідні»
Для підтримки розподіленої обчислювальної архітектури NX «NoMachine» випустила всі базові бібліотеки і низькорівневі компоненти програмного забезпечення з відкритими «кодами». Сюди входять агенти X, проксі клієнта і всі бібліотеки, що реалізують передачу стислих даних по протоколу X. «NoMachine» зробив вибір у бік ліцензії GNU - тієї ж ліцензії, по якій йде розробка операційної системи Linux. «NoMachine» має на меті підтримку широких мас розробників шляхом спільної роботи зі створення інтерактивного програмного забезпечення для сервера і клієнта, що зробить можливою революцію в області мережевої обробки даних.
Операційна система Linux як сервер і як платформа робочого середовища
Серверні додатки NX запускаються під операційною системою Linux. Linux - це операційна система на основі Unix, що має на увазі високий рівень розширюваності, хороші показники надійності і продуктивності, які вимагає сучасна корпоративне середовище. У той же час, гнучкість Linux дозволяє їй управляти розміщеної, децентралізованою мережею, що об'єднує мільйони комп'ютерів, надаючи служби та програмні додатки, на яких буде будуватися обчислювальна мережа майбутнього.
Займаючи тверді позиції на ринку серверних операційних систем, Linux також виступає в якості реалістичною середовища робочого столу. Середовища, що реалізують концепцію робочого столу, на зразок KDE або GNOME, а також StarOffice. використовують протокол X-Window. NX підтримує такі середовища з нульовими витратами, і в цілому забезпечує найвищу продуктивність.
Зовнішні протоколи RDP і RFB
Хоча стиснення NX забезпечує найвищу продуктивність при запуску «рідних» програмних додатків X, сесії RDP і RFB можуть стискатися з коефіцієнтом від 2 до 10. Підтримка NX зовнішніх протоколів дає і інші переваги. По-перше, в межах досяжності виявляється практично будь-який комп'ютер, а по-друге, NX пропонує користувачеві загальний огляд всіх програмних ресурсів, доступних через Інтернет.
Розподілена обчислювальна архітектура NX
Розподілена обчислювальна архітектура NX спроектована «з нуля» і служить для розподілу робочого навантаження між вузлами широкомасштабної мережі. Сервери NX призначені для виконання високорівневих функцій підвищення керованості в мережі NX. Вони відповідальні, наприклад, за аутентифікацію і активацію сесії користувачів, а також за те, що вузли передають користувачам властиву їм середу обробки даних (наприклад, такі ж файлові системи і такі ж додатка). Сесії запускаються на вузлі NX у віртуальній групі. Сотні вузлів NX можуть приєднуватися до одного або кількох керуючим серверів для підтримки тисяч поточних сесій.
Розподіл навантаження між вузлами
Не тільки сервери можуть розподіляти навантаження на мережу шляхом розподілу сесій між вузлами. Вузли можуть також розподіляти програмні додатки, запущені в межах сесії між різними серверами додатків. Таке може відбуватися, якщо ресурс або додаток не доступно на вихідному вузлі, або ж якщо ресурс «ближче» до користувача. Більш короткий мережевий шлях гарантує більш високу продуктивність.
Сесія може бути ідентифікована агентом, запущеним на вузлі. Агенти доступні для мережевих протоколів X, RDP і RFB. Агенти запускаються на серверах додатків і приймають підключення від клієнтів NX. Клієнти, згідно з правилами іменування NX, - це комп'ютери користувачів, на яких запущено сервер X. Кожному агенту потрібно тільки одне з'єднання з сервером X через сокет.
Випадок з протоколами RDP і RFB - самий звичайний. Дані протоколи емулюють повне зображення на екрані і не вимагають взаємодії між різними програмними додатками, підключеними до одного й того ж сервера. Вузол може підключити будь-яку сесію по протоколам RDP і RFB до іншого комп'ютера з системою Windows Terminal Server або іншого сервера VNC, розподіляючи навантаження сесій між доступними мережевими ресурсами. У випадку з протоколом X доступні два режими роботи: коли користувач запускає сесію на новому віртуальному робочому столі, агент сам по собі функціонує як сервер X. Він об'єднує підключення клієнтів X в одне підключення до реального сервера X.
Програмні додатки X можуть запускатися на різних вузлах, виступаючи в ролі серверів додатків. Взаємодія між програмними додатками X здійснюється локально, на стороні агента. Оскільки обмін інформацією при такій взаємодії може бути дуже інтенсивним, загальна продуктивність значно збільшується. У той момент, коли додатки X запускаються на агента X, вони «гніздяться» всередині вікна агента. «Незалежний» агент, тобто агент, який перевершує дане обмеження, в даний час знаходиться в розробці. Коли користувач запускає програми всередині існуючої сесії X, вікна «плавають» на робочому столі і повністю поєднуються з локальними програмними додатками. В даному випадку NX функціонує в якості прозорого проксі, стискаючи трафік X і тунелюючи додаткові мережеві служби (наприклад, протокол SMB і мультимедіа), але при цьому не визначаючи локальне дозвіл кругового обходу мережі по протоколу X, що можливо завдяки агенту NX.
Розробка для простоти
Незважаючи на очевидну складність, вбудовані мережеві можливості системи Unix і внутрішні характеристики мережевих служб системи Unix і X-Window в плані можливості модульного нарощування виводять цю розробку на перший план. NX використовує кошти віддаленого запуску SSH для отримання доступу до функцій вузла. Вся передана інформація шифрується згідно промисловому стандарту криптографії з відкритим ключем SSL. На уздах не потрібно встановлювати будь-які нові мережеві сервери, за винятком демона SSH - сервера, який виступає в якості стандарту для сучасних систем Unix.