Low-Bandwidth X X (LBX) существует для тех, кто работает с X-приложениями на машинах, находящихся далеко от сервера.
подтвердить, что открытие новых X-окон может идти ужасно долго.
LBX вообще - это схема компрессирования и кэширования, предназначенная для уменьшения X-трафика между двумя системами.
наоборот), LBX также поможет, если вы работаете очень далеко от этих машин (например, в разных странах) или на других медленных соединениях.
LBX конечно бесполезен, если вы запускаете Х на одной машине, или вообще не используете Х.
ваша цель - уменьшить трафик в сети. Но если вам необходимо ускорение работы, то, в этом случае, LBX вам вряд ли поможет. LBX включает в себя кэширование и компрессирование, для этого расходуются ресурсы на обоих концах сети (дополнительная память на кэш, дополнительное время процессора на декомпрессирование). Применение LBX на быстром соединении может привести к общему замедлению.
LBX работает как прокси-сервер на клиентской стороне, выполняющий кэширование и компрессирование. X-сервер знает, что клиент использует прокси-сервер, и также занимается компрессией.
Ниже приведена обычная настройка для удаленных Х-клиентов. В этом тексте мы будем придерживаться следующих терминов: ЛОКАЛЬНАЯ рабочая станция - это та, непосредственно на которой вы работаете, а УДАЛЕННАЯ - это та машина, на которой работает приложение.
УДАЛЕННАЯ ЛОКАЛЬНАЯ +-----+ +-----+ |Прил.|-\ Сеть +----------+ | |\ +-----+ \--------------------------->| X Сервер |=>| || +-----+ / (X-протокол) +----------+ +-----+\ |Прил.|-/ /_____// +-----+
Для использования LBX на удаленной машине используется прокси-сервер (lbxproxy), и приложения общаются с этим процессом, вместо прямой передачи данных на ЛОКАЛЬНУЮ машину. Этот процесс затем производит кэширование и компрессирование X-запросов, и направляет их серверу. Выглядит это примерно так:
УДАЛЕННАЯ ЛОКАЛЬНАЯ
+-----+
+-----+ +-------+ Сеть +----------+ | |\
|Прил.|->|Прокси.|----------------------------->| X Сервер |=>| ||
+-----+ +-------+ (LBX/X-протокол) +----------+ +-----+\
+-----+ / /_____//
|Прил.|--/
+-----+
Описание конкретных протоколов и деталей кэширования и компрессирования LBX не входят в этот документ.
На ЛОКАЛЬНОЙ машине вам понадобится X-сервер со встроенной поддержкой LBX. В серверах X11R6.3 автоматически разрешен LBX, если только его специально не отключили при сборке. Во всех серверах XFree86 3.3 LBX также по умолчанию разрешен.
Вы можете узнать, встроен ли в ваш сервер LBX, при помощи команды xdpyinfo: запустите xdpyinfo и взгляните на список прямо под надписью "number of extensions" (количество расширений); вы должны увидеть "LBX" в этом списке.
На УДАЛЕННОЙ машине вам понадобится программа lbxproxy. Это достаточно хитрая часть настройки - если удаленная машина использует систему, отличную от вашей, то ваш lbxproxy ей особенно не поможет.
К сожалению, пока не существует "выковырянной" версии исходных текстов lbxproxy, поэтому придется либо (а) найти и собрать почти полностью, если не полностью X11R6.3 для удаленной системы, или (б) найти где-нибудь собранную версию lbxproxy для вашей удаленной системы. Второй вариант, естественно, значительно проще.
lbxproxy - это простая одиночная программа. Никаких конфигурационных файлов, файлов ресурсов и т.п. к ней не прилагается.
На УДАЛЕННОЙ системе не требуется нового X-сервера (УДАЛЕННОЙ системе вообще не требуется никакого X-сервера).
Приложение, которое вы хотите запустить, не должно быть обязательно предназначено для вашей версии X, или для каких-то библиотек; Я без особых трудностей использую коммерческие программы для X11R5 поверх LBX.
Вам не обязательно быть root-ом или другим привилегированным пользователем на УДАЛЕННОЙ системе; lbxproxy запускается под любыми разрешениями. Более того, вы можете запускать его прямо из вашего каталога: его не надо никуда устанавливать.
Теперь перейдем к самому главному. Замените в нижеприведенных примерах слова ЛОКАЛЬНЫЙ и УДАЛЕННЫЙ на имена соответствующих хостов (не перепутайте!)
На ЛОКАЛЬНОЙ машине:
Запустите X-сервер.
Разрешите на своей системе доступ к X-серверу извне. Используйте метод "список машин", наберите команду xhost +REMOTE. Если вы используете xauth, то вам, по-видимому, придется сделать немного больше; смотрите xauth(1) для дополнительной информации. Также вы можете прочитать Мини-HOWTO: Удаленные приложения в X, если вы не знакомы с настройкой разрешений удаленного доступа к X.
На УДАЛЕННОЙ машине:
Запустите lbxproxy и укажите ему перенаправление на ЛОКАЛЬНЫЙ X-сервер, например:
$ lbxproxy -display LOCAL:0 :1Таким образом вы заставляете lbxproxy использовать display :1 на УДАЛЕННОЙ системе; если в системе уже больше 1 дисплея, то используйте :2, или то, что вам необходимо.
Установите переменную окружения DISPLAY так, чтобы она указывала на дисплей, предоставляемый lbxproxy, вместо обычного:
$ DISPLAY=:1 $ export DISPLAYИли, если вы используете csh или нечто подобное:
% setenv DISPLAY :1
Если вы используете xauth, то вам надо убедиться, что ваш cookie доступен. Смотрите Мини-HOWTO: Удаленные приложения в X в поисках дополнительной информации.
Запускайте свои X-приложения!
И все; все X-приложения, запущенные с указанием на дисплей :1 будут использовать LBX. Конечно, не существует никаких препятствий к одновременному запуску X-приложений, работающих с LOCAL:0 и :1.
Ниже приведены различные проблемы и методы их решения:
lbxproxy выходит с ошибкой "access denied" (отказано в доступе).
Это означает, что ЛОКАЛЬНАЯ система не разрешает соединения с УДАЛЕННОЙ системы из-за ошибок, связанных с разрешениями. Еще раз внимательно прочтите Мини-HOWTO: Удаленные приложения в X.
Способ проверки - попробуйте запустить простое X-приложение типа xclock на УДАЛЕННОЙ системе с дисплеем на ЛОКАЛЬНОЙ без использования lbxproxy:
$ xclock -display LOCAL:0
Если это не сработало, то проблема в xhost, или, вообще, с X, а не с LBX.
Единственная документация по этому вопросу в стандартной поставке X - это man lbxproxy(1).
Если у вас есть доступ к исходным текстам X, то информация по LBX доступна в следующих каталогах:
xc/doc/specs/Xext/lbx.mif (Framemaker MIF)
xc/doc/hardcopy/Xext/lbx.PS.Z (Compressed Postscript)
xc/doc/hardcopy/Xext/lbxTOC.html (HTML)
Более подробное объяснение специфических алгоритмов LBX можно найти в:
xc/doc/specs/Xext/lbxalg.mif (Framemaker MIF)
xc/doc/specs/Xext/lbxalg.PS.Z (Compressed Postscript)
Если у вас нет исходных текстов X11, то этот файл можно найти на сайте X-консорциума.
Если вам по какой-то причине не понравился lbxproxy еще один пакет для компрессирования X-протокола (у кого-нибудь есть, что-нибудь еще?)
Исходный автор: Brian Pane <brianp@cnet.com>
Текущий сопроводитель: Zachary Vonler <lightborn@mail.utexas.edu>
dxpc работает почти также, как LBX. Однако, вместо включения дополнения в X и изменения кода X-сервера, dxpc использует два прокси: один работает на УДАЛЕННОМ хосте, а второй на ЛОКАЛЬНОМ.
Прокси на УДАЛЕННОМ хосте работает между X-клиентами и прокси ЛОКАЛЬНОГО хоста, а прокси на ЛОКАЛЬНОМ хосте работает между X-сервером и прокси УДАЛЕННОГО хоста.
Таким образом, и X-клиенты, и X-сервер видят друг друга, будто работают на обычном X-протоколе.
Его значительно проще собирать и устанавливать, т.к это полностью независимое приложение, не требующее никаких изменений внутри X.
Оно поддерживается отдельно, поэтому вам не придется ждать, пока OSF выпустит новую версию X с дополнениями или исправлениями.
В нем присутствует значительно более полная и понятная статистическая информации о компрессировании, в отличие от lbxproxy.
Эта программа не является стандартной частью X - вам придется находить и устанавливать ее отдельно.
Эту систему немного сложнее настроить, так как в ней требуются 2 прокси: на ЛОКАЛЬНОЙ и УДАЛЕННОЙ машинах.
Ken Chase <lbxhowto@sizone.org> замечает, что для компрессирования можно использовать ssh. Несмотря на то, что основной его задачей является безопасность, он к тому же компрессирует передаваемые данные.
Таким образом, вы можете запустить X поверх ssh-соединения, получив сразу некоторое сжатие.
Я не знаю. И LBX, и dxpc значительно лучше компрессируют, чем ssh. С другой стороны, у ssh все значительно лучше с безопасностью. И, конечно, ничто не мешает использовать и ssh и субъективное, и статистическое измерения. Но я этого не делал и не знаю никого, кто бы это пробовал.
Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.
ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.
обратитесь к координатору проекта Linux HOWTO по электронной почте: <linux-howto@metalab.unc.edu> или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу <linux-howto@asplinux.ru>
| Главная |