РАСПРЕДЕЛЕННОЕ КЭШИРОВАНИЕ ФАЙЛОВ В СЕТИ
DISTRIBUTED FILE CACHING IN NETWORK

УРОВЕНЬ ТЕХНИКИ
Сетевое вычисление позволяет компьютерам запрашивать и принимать программное обеспечение и содержимое файла с серверов для установки и/или хранения на компьютерах. Содержимое файла может включать в себя, например, текстовые файлы, видеофайлы, файлы данных, файлы изображений и т.д. Программное обеспечение может запрашиваться и загружаться для нескольких целей, включая в себя обновление системного программного обеспечения, обновление прикладного программного обеспечения и обновление файлов данных. Например, обновления для системы безопасности могут быть загружены для того, чтобы обновить операционную систему, чтобы предотвратить или противодействовать атакам на компьютерную систему. Дополнительно, программное обеспечение может быть загружено для того, чтобы установить новые приложения на компьютере. В одной примерной системе программное обеспечение может быть загружено в фоновом режиме так, что программное обеспечение может быть загружено в то время, когда компьютер и компьютерный пользователь выполняют другие задания. Одной примерной услугой с такими функциональными возможностями является фоновая интеллектуальная служба передачи (BITS).
Часто, когда программное обеспечение опубликовано и доступно для загрузки с сервера, есть много компьютеров в сети, которые пытаются получить программное обеспечение одновременно или в пределах очень короткого промежутка времени. Например, когда программное обеспечение является обновлением для системы безопасности, есть желание поставить программное обеспечение многим компьютерам так быстро, насколько это возможно, для того чтобы предотвратить злонамеренные атаки на компьютеры или сеть. Когда программное обеспечение является новым приложением, предназначенным для систем, широко распространенных в корпоративном кампусе, может быть желание широко развернуть программную систему за короткий промежуток времени. Когда программное обеспечение является сильно ожидаемым релизом (выпуском), большое количество пользователей может попытаться загрузить программное обеспечение, чтобы быть среди первых, кто использует это программное обеспечение. Распространение программного обеспечения в широком масштабе может потребовать серверы больших величин и большой пропускной способности сети. Такие крупномасштабные загрузки могут быть особенно неприятными в сетевой среде, где множество филиалов соединяется с концентратором предприятия в корпоративной штаб-квартире. В этом примере, когда программное обеспечение распространяется от концентратора предприятия, сетевое подключение между концентратором предприятия и филиалом может ограничить количество компьютеров, которое может быть обновлено в определенное время, даже когда сервер в концентраторе предприятия имеет достаточные возможности для предоставления программного обеспечения многим или всем компьютерам в филиале.
Есть несколько способов, которые использовались, чтобы распределить рабочую нагрузку для крупномасштабных загрузок. Например, в корпоративной среде развертывание нового программного обеспечения может быть достигнуто только с помощью развертывания программного обеспечения на ограниченном числе компьютеров в сети в установленный срок. Альтернативно, кэширующие посредники (прокси-сервера) могут быть помещены в пределах сети для того, чтобы распределять программное обеспечение подмножеству компьютеров в сети. Для осуществления обоих этих решений требуется осторожное планирование. Кроме того, в случае кэширования прокси-серверов дополнительные компьютерные аппаратные средства добавляются к сети, увеличивая стоимость сети.
В то время как различные проблемы были идентифицированы в этом описании уровня техники, изобретение, определенное в формуле изобретения ниже, не обязательно обращается к любым из идентифицированных проблем. Это описание уровня техники служит просто для того, чтобы обеспечить фон для одной примерной среды, где варианты воплощения, описанные здесь, могут быть осуществлены.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Один вариант воплощения, описанный здесь, включает в себя способ кэширования и коллективного использования файлов. Способ может быть осуществлен, например, в компьютерной системе в компьютерной сети, включающей в себя один или более сетевых компьютеров. Способ включает в себя формирование списка одноранговых устройств, включая в себя список потенциальных одноранговых серверов из числа одного или более сетевых компьютеров. Список одноранговых устройств включает в себя не больше, чем предопределенное число потенциальных одноранговых серверов. Потенциальные одноранговые серверы в списке одноранговых устройств делают опрос о файле или части файла. Сообщение от однорангового сервера в списке одноранговых устройств, будучи полученным, указывает, что одноранговый сервер имеет файл или часть файла, доступные для загрузки. Компьютерная система загружает файл или часть файла с однорангового сервера.
Другой вариант воплощения, описанный здесь, включает в себя способ кэширования и коллективного использования файлов. Способ может быть осуществлен, например, в компьютерной системе в компьютерной сети, включающей в себя один или более сетевых компьютеров. Способ включает в себя посылку сообщения, что компьютерная система является доступной как одноранговое устройство. Компьютерная система принимает запрос для того, чтобы обнаружить, имеет ли компьютерная система файл или часть файла. Компьютерная система посылает сообщение, что компьютерная система имеет файл или часть файла. Посылка сообщения, что компьютерная система имеет файл или часть файла, выполняется, основываясь на динамических правилах opt-in/opt-out (принимать участие/отказываться от участия). Компьютерная система принимает запрос загрузить файл. Компьютерная система посылает файл запрашивающей системе.
Другой вариант воплощения, описанный здесь, включает в себя способ кэширования и коллективного использования файлов. Способ может быть осуществлен, например, в компьютерной системе в компьютерной сети, включающей в себя один или более сетевых компьютеров. Компьютерная система посылает циркулярно передаваемый сигнал компьютерным системам в подсети, чтобы обнаружить потенциальные одноранговые устройства. Компьютерная система принимает одноадресную передачу или, альтернативно, многоадресный сигнал от одной из компьютерных систем в подсети. Компьютерная система добавляет одну из компьютерных систем в подсети к списку одноранговых устройств. Список одноранговых устройств включает в себя не более чем предопределенное число одноранговых устройств. Компьютерная система посылает сигнал одноадресной передачи одной из компьютерных систем в подсети для того, чтобы обнаружить, имеет ли одна компьютерная система файл или часть файла, доступные для загрузки. Компьютерная система принимает сигнал одноадресной передачи от одной из компьютерных систем в подсети, указывающей на то, что эта одна из компьютерных систем в подсети имеет файл или часть файла, доступные для загрузки. Компьютерная система загружает файл или часть файла от этой одной из компьютерных систем в подсети.
Раскрытие изобретения предоставлено для того, чтобы ввести выбор понятий в упрощенной форме, которые далее описаны в подробном описании ниже. Это раскрытие изобретения не предназначено для того, чтобы идентифицировать главные признаки или основные признаки определенного в формуле изобретения, и при этом оно не предназначено для того, чтобы использоваться как помощь в определении объема притязаний, определенного в формуле изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Для того чтобы метод, в котором получены вышеупомянутые и другие признаки, в частности, описание будет предоставляться в отношении определенных вариантов воплощений, которые проиллюстрированы в приложенных чертежах. Понимая, что эти чертежи изображают только типичные варианты воплощения и поэтому не могут рассматриваться как ограничивающие объем притязаний изобретения, варианты воплощений будут описаны и объяснены с дополнительной спецификой и подробностями с помощью приложенных чертежей, в которых:
Фиг.1 иллюстрирует блок-схему примерной сети;
Фиг.2 иллюстрирует блок-схему алгоритма, иллюстрирующую способ для того, чтобы кэшировать и коллективно использовать файлы с точки зрения клиента; и
Фиг.3 иллюстрирует блок-схему алгоритма, иллюстрирующую способ для того, чтобы кэшировать и коллективно использовать файлы с точки зрения однорангового сервера.
Фиг.4 иллюстрирует блок-схему алгоритма для обнаружения одноранговых устройств и загрузки файла или части файла.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
Один вариант воплощения, описанный здесь, включает в себя улучшенную систему распределения файла, которая учитывает распределение файла, которое будет удаляться от централизованного файлового сервера. В этом примере распределение и кэширование файла перемещают на границы сети. Это помогает уменьшить нагрузку на централизованных файловых серверах и распределять сетевой трафик по сети в противоположность концентрации сетевого трафика на нескольких централизованных сетевых соединениях. Определенно, в одном варианте воплощения компьютеры кэшируют и коллективно используют файлы, используя равноправную систему. Компьютерная система будет сначала формировать список одноранговых устройств, включающий в себя список потенциальных одноранговых серверов из числа одного или более сетевых компьютеров. В этом варианте воплощения список одноранговых устройств ограничен предопределенным числом одноранговых устройств. Система может тогда аутентифицировать одноранговые устройства в списке одноранговых устройств. Система может тогда сделать опрос к одноранговым устройствам из списка одноранговых устройств, чтобы найти одноранговые устройства, которые содержат файл или часть файла, запрошенные компьютерной системой. Если одно из одноранговых устройств в списке одноранговых устройств отвечает, указывая, что оно имеет доступными файл или часть файла, файл или часть файла могут быть загружены с указывающего однорангового устройства. Если никакие одноранговые устройства не отвечают указаниям того, что они имеют файл или часть файла, система, запрашивающая файл, может загрузить файл с центрального файлового сервера и затем может указать другим компьютерным системам, что она имеет файл или часть файла, доступные для загрузки. В ответ на указание того, что она имеет файл или часть файла, доступные для загрузки, другие компьютерные системы могут добавить компьютерную систему к их списку одноранговых устройств, который включает в себя их список потенциальных одноранговых серверов, как будет описано более подробно ниже. Особенно, другие одноранговые системы могут добавить опрашивающую компьютерную систему к их списку одноранговых устройств в ответ на запрос о нахождении одноранговых устройств, которые содержат файл или часть файла.
Компьютерные системы, в одном примерном варианте воплощения, могут создать группы одноранговых устройств из компьютеров, которые не связаны с центральным сервером предприятия или концентратором. Например, группы одноранговых устройств могут быть сформированы в филиалах сети предприятия, в компьютерах на общем концентраторе или маршрутизаторе для того, чтобы избежать подключения одноранговых устройств через дорогие подключения типа кабельных модемных подключений и т.п. Таким образом, необходимы меньшие количества сетевого трафика и ресурсов сервера для того, чтобы распространить файлы группе одноранговых устройств, где файлы могут быть кэшированы и загружены. Этим способом возможности обработки и сети, требующиеся для того, чтобы распределять программное обеспечение и обновления, перемещаются от централизованного местоположения в сети к границам сети, чтобы более равномерно распространить вычислительные и сетевые требования.
Обратимся теперь к Фиг.1, где проиллюстрирована примерная топология 100. Топология 100 включает в себя множество компьютерных систем 102, 104, 106, 108, 110. Компьютерные системы 102-110 связаны через любое из множества средств взаимной связи. Например, компьютерные системы 102-110 могут быть связаны через сетевые подключения типа реализации сетей Ethernet IEEE 802.3, беспроводные подключения Ethernet типа тех, которые соответствуют IEEE 802.11, беспроводные сети Blue-Tooth, коммутируемые телефонные сетевые подключения, кабельные модемные подключения и т.п. В показанном варианте воплощения компьютерные системы 102-110 связаны для того, чтобы сформировать группу 112 одноранговых устройств. В этом примере группа 112 одноранговых устройств является одной группой потенциальных одноранговых серверов для компьютерной системы типа системы ноутбука 106. В одном варианте воплощения каждая компьютерная система поддерживает список одноранговых устройств, который включает в себя список потенциальных одноранговых серверов, с которых компьютерная система может загрузить файл. Формирование группы одноранговых устройств будет обсуждаться более подробно ниже.
Фиг.1 далее иллюстрирует, что группа 112 одноранговых устройств связана с центральным файловым сервером 114. В то время как подключение к центральному файловому серверу 114 показывают как единственное подключение, в альтернативных вариантах воплощения различные подключения могут использоваться так, что каждый из компьютеров 102-110 может иметь доступ к центральному файловому серверу 114 или в других конфигурациях. Например, группа одноранговых устройств может быть связана в филиале корпоративного предприятия, где филиал соединяется с центральным файловым сервером 114, который находится в концентраторе предприятия. Другие различные взаимосвязи могут также быть осуществлены.
В показанном примере файловый сервер может хранить файл 116 или часть файла. Файл 116 может быть, например, обновлением программного обеспечения, обновлением для системы безопасности для операционной системы, приложением, файлом данных или другим программным обеспечением. Файл 116 может быть загружен или помещен в один из компьютеров типа компьютерной системы 108. Компьютерная система 108 может тогда действовать как потенциальный одноранговый сервер с кэшируемой копией файла 116. Другие компьютерные системы 102, 104, 106, 110 могут тогда запросить файл 116 от потенциальной системы однорангового сервера 108. Этим способом сетевой трафик по подключению 118 между файловым сервером и группой 112 одноранговых устройств может быть уменьшен в некоторых вариантах воплощения. Далее обработка центральным файловым сервером 114 может быть уменьшена.
Как упомянуто ранее, Фиг.1 иллюстрирует одну из компьютерных систем - систему ноутбука 106 и то, что группа 112 одноранговых устройств находится в списке потенциальных одноранговых серверов, поддерживаемых системой ноутбука 106. Ноутбуки и другие портативные компьютеры, включающие в себя карманные устройства, персональные помощники, сотовые телефоны и т.п., по самой их природе портативны и могут оказаться в физически и логически различных частях сети. Ноутбук 106 может быть, например, перемещен в местоположение логическое или физическое, которое не является практичным для ноутбука 106 для того, чтобы загрузить файлы из группы 112 одноранговых устройств. Например, ноутбук 106 может быть перемещен логически в другую подсеть, отличную от группы 112 одноранговых устройств. Альтернативно, ноутбук 106 может быть перемещен физически в местоположение, которое требует чрезмерного количества сетевого трафика для ноутбука 106 для общения с другими членами группы 112 одноранговых устройств. В варианте воплощения, который показан на Фиг.1, ноутбук 106 создает другую группу одноранговых устройств типа группы 120 одноранговых устройств, которые показаны на Фиг.1. Ноутбук 106 может поддерживать информацию о первой группе 112 одноранговых устройств и о второй группе 120 одноранговых устройств так, что ноутбук 106 может получить файлы, когда он связан с первой группой 112 одноранговых устройств или второй группой 120 одноранговых устройств или любой другой группой одноранговых устройств, которую ноутбук 106 имеет в списке одноранговых устройств.
Когда компьютерная система в группе 112 одноранговых устройств получает файл 116, компьютерная система должна решить, что файл является правильным файлом и что он не поврежден. Определение того, что файл является правильным файлом и что он не поврежденен, может быть достигнуто, например, сравнивая имена файла, размеры файла, значения хэша и т.д. Например, компьютерная система, возможно, получила информацию о файле, включающую в себя имя файла, размер файла и значение хэша файла. Значение хэша является значением, вычисленным, используя данные в файле для генерации значения таким способом, что крайне маловероятно, что некоторые другие данные сгенерируют то же самое значение хэша. Компьютерная система может решить, что получен правильный файл, сравнивая имя файла, размер файла и/или значение хэша. Кроме того, значение хэша может использоваться для того, чтобы гарантировать, что файл не был разрушен или злонамеренно изменен.
Если компьютерная система обнаруживает то, что правильный файл недоступен, что файл был поврежден или что файл был злонамеренно изменен, компьютерная система может тогда запросить файл 116 непосредственно от центрального файлового сервера 114. Компьютерная система, непосредственно запрашивая файл 116 с центрального файлового сервера 114, может тогда оповещать себя как потенциальная система хранения, содержащая файл 116.
Особенно, в одном варианте воплощения, группа одноранговых устройств, как описано выше, поддерживается и является специфической для каждой компьютерной системы. Таким образом, управление группой одноранговых устройств перемещается от центрального местоположения, используя систему без центрального управления. Это устраняет единственную точку отказа для всей сети. Говоря по-другому, потеря одного списка одноранговых устройств или одной системы со списком одноранговых устройств не будет отключать всю систему распространения и кэширования файла, что может произойти, когда используется единственный централизованный сервер для управления группами одноранговых устройств.
Обратимся теперь к Фиг.2, где проиллюстрирован способ 200 кэширования и коллективного использования файлов. Способ может быть осуществлен в компьютерной системе, которая находится в компьютерной сети, которая включает в себя один или более сетевых компьютеров.
Фиг.2 иллюстрирует этап построения списка одноранговых устройств (этап 202). Список одноранговых устройств включает в себя список потенциальных одноранговых серверов из числа группы сетевых компьютеров типа компьютерных систем 102-110, иллюстрированных на Фиг.1. Список одноранговых устройств может быть таким, что он включает в себя не более чем предопределенное число потенциальных одноранговых серверов. Например, список одноранговых устройств может быть спроектирован так, что не более чем 100 потенциальных одноранговых серверов включены в список одноранговых устройств. Далее, также желательно, чтобы компьютерные системы 102-110 в группе одноранговых устройств были соседними с точки зрения сети. Например, может быть желательно, чтобы компьютерные системы 102-110 в группе 112 одноранговых устройств были расположенным в том же самом филиале сети предприятия. В альтернативном варианте воплощения может быть желательно, чтобы компьютерные системы 102-110 в группе 112 одноранговых устройств были расположены на общем концентраторе, маршрутизаторе или коммутаторе. В некоторых альтернативных вариантах воплощения может быть желательно, чтобы ни один из одноранговых устройств не был связан друг с другом через дорогие подключения такого типа, как межкабельные модемы или подключения с высоким трафиком. Другие логические соседние конфигурации могут также быть осуществлены. Например, в одном варианте воплощения компьютерная система может использовать способ синхронизации для того, чтобы определить близость компьютеров. Есть несколько способов, которые могут использоваться по одному или в комбинации, чтобы поформировать список (202) одноранговых устройств. Примеры этих способов будут теперь обсуждаться ниже.
Один способ построения списка (202) одноранговых устройств вовлекает в себя посылку запроса ходатайства и приема ответов от компьютеров. Чтобы ограничить число потенциально отвечающих одноранговых устройств, запрос ходатайства может быть, например, циркулярно передаваемой или групповой рассылкой подсети, чтобы получить ответы для отдельной подсети. Однако, даже если отвечают только компьютеры на отдельной подсети, число ответов все еще могло бы быть подавляющим. Таким образом, чтобы далее ограничить число ответов, компьютерная система, посылая запрос ходатайства, может включать в запрос ходатайства индикацию относительно желаемого числа одноранговых устройств. Потенциальные одноранговые устройства могут быть сконфигурированы так, чтобы отвечать, используя групповые ответы после случайного короткого интервала, и «слушать» (ожидать) групповые ответы других компьютеров. Потенциальное одноранговое устройство не будет отвечать, если оно обнаружило, что уже встречаются ответы от других потенциальных одноранговых устройств, содержащих индикацию относительно желаемого числа одноранговых устройств. Другими словами, потенциальное одноранговое устройство не будет отвечать, если уже ответило несколько желаемых одноранговых устройств.
Могут использоваться несколько способов для того, чтобы генерировать случайный короткий интервал. Например, в самом простом варианте воплощения однородное случайное распространение может использоваться каждым потенциальным одноранговым устройством, чтобы решить, как долго ждать ответа на ходатайство. Альтернативный способ включает в себя использование нелинейного распространения, где меньше потенциальных одноранговых устройств отвечает в начале и больше отвечает, когда задержка становится более длинной. Например, один способ объединения нелинейной задержки может включать в себя генерацию случайного числа между 0 и 1. Задержка может тогда быть определена следующим уравнением:
DELAY = MAX_DELAY*Log (C*X+1)/Log(C+1),
где DELAY - задержка перед ответом, MAX_DELAY - максимальное время, данное для того, чтобы получить ответы, X - случайное число и C - произвольное число типа 256. Другие нелинейные случайные задержки также могут использоваться.
В другом примере системы могут отвечать без задержки, и компьютерная система может добавить одноранговые устройства к списку одноранговых устройств, пока она не имеет достаточно много одноранговых устройств, чтобы заполнить список одноранговых устройств. В этом примере одноранговые устройства, отвечающие наиболее быстро, могут быть логически самыми близкими к компьютерной системе, посылающей запрос ходатайства. В этом примере компьютерная система может измерить время для потенциальных одноранговых устройств, чтобы увидеть, как быстро они отвечают на ходатайство. Только самые быстро ответившие потенциальные одноранговые устройства будут добавлены к списку одноранговых устройств. Таким образом, компьютерная система может быть в состоянии выбрать одноранговые устройства, которые лучше всего подходят для группы одноранговых устройств, принимая те, которые являются логически самыми близкими или способными ответить наиболее быстро.
Запрос ходатайства может также включать в себя группу типа доверительной группы. Потенциальные одноранговые устройства будут игнорировать запросы, связанные с другими доверительными группами. Даже когда доверительные группы используются в запросе ходатайства, все еще может быть потребность аутентифицировать одноранговые устройства, как описано более подробно ниже. Доверительная группа служит в качестве способа того, чтобы вычистить ответы от других доверительных групп в пределах той же самой подсети так, чтобы перекрытие ходатайств в пределах подсети не вызывало интерференции друг с другом. В одном варианте воплощения запрос ходатайства может включать в себя идентификацию содержания, желаемого компьютерной системой. Как описано ниже, потенциальные одноранговые устройства отвечают, если они имеют идентифицированное содержание и удовлетворяют другим ограничениям участия. Это делает поиск содержания более эффективным, потому что единственный запрос о содержании достигает всех потенциальных хостов. Этот вариант воплощения может быть менее частным, потому что неаутентифицированные хосты могут видеть, какое содержание требуется. Требование одностороннего хэша URL или хэша содержания может использоваться для того, чтобы расширить секретность в этом варианте воплощения.
В другом примере формирование списка одноранговых устройств может включать в себя компьютерную систему, получающую самооповещение с групповым пакетом от потенциального однорангового устройства. Самооповещение включает в себя индикацию, что потенциальное одноранговое устройство имеет файлы или части файлов, которые можно доставить компьютерам в сети. Когда такое оповещение получено, компьютерная система может добавить потенциальное одноранговое устройство к его списку одноранговых устройств. Самооповещение может делаться, в одном альтернативном варианте воплощения, на регулярной основе. В одном примере оповещение может быть сделано раз в час или несколько раз в течение дня.
Компьютерные системы могут самооповещаться, когда они имеют файлы для коллективного использования и когда характеристики их аппаратных средств, текущая загрузка обработки или другие характеристики позволяют им действовать как одноранговый сервер. Оповещаемые компьютерные системы могут получить файлы 116 от центрального файлового сервера 114 или от другого однорангового устройства в группе 112 одноранговых устройств. Компьютерные системы могут иметь определенные файлы, которые они не будут самооповещать. Это позволяет компьютерным системам защищать определенные файлы.
В альтернативном варианте воплощения потенциальное одноранговое устройство может оповещать себя, когда оно было добавлено к сети, например, через групповую рассылку. Компьютер может тогда добавить этот новый компьютер к своему списку одноранговых устройств, если есть потребность в одноранговых устройствах в списке одноранговых устройств. В подобном случае компьютерная система может добавить одноранговые устройства к списку одноранговых устройств, когда она получает другие типы групповых объявлений и ответов. Например, компьютерная система, прислушивающаяся к ответам, связанным с описанным выше вариантом воплощения, с ответом со случайным временем запаздывания, может добавить любые компьютерные системы, которые отвечают на первоначальное ходатайство, к своему списку одноранговых устройств. Аналогично, почти любой ответ или оповещение могут использоваться для того, чтобы определить, какие компьютеры являются доступными как потенциальные одноранговые устройства для списка одноранговых устройств.
Компьютеры в списке одноранговых устройств могут быть подтверждены или не подтверждены. Подтвержденные компьютерные системы - это те, которые передали аутентификацию, как выделено ниже. Одноранговые устройства в списке одноранговых устройств не должны быть подтверждены немедленно будучи добавленным к списку одноранговых устройств, а скорее они могут быть подтверждены приблизительно вместе с запросом однорангового устройства в списке одноранговых устройств для файла или части файла (этап 206), обсуждаемом более подробно ниже. Однако, как только одноранговое устройство в списке одноранговых устройств было подтверждено, компьютерная система и одноранговое устройство могут совместно использовать ключ так, что проверка правильности не должна быть выполнена для последующих запросов файла.
Часть процесса построения списка одноранговых устройств может включать в себя обновление списка одноранговых устройств, чтобы удалить устарелые записи или удалить записи, которые больше не являются действительными. Например, компьютерная система может удалить записи из списка одноранговых устройств после того, как записи были в списке одноранговых устройств предопределенный промежуток времени. Это гарантирует, что устаревшие записи имеют ограниченную продолжительность существования. В другом альтернативном варианте воплощения записи одноранговых устройств могут быть удалены в ответ на групповое сообщение, выданное одноранговым устройством, когда одноранговое устройство выходит из сети. Например, групповое одностороннее сообщение "Bye" посылают как лучшее уведомление другим одноранговым устройствам, когда одноранговое устройство готовится оставить сеть. Когда это сообщение "Bye" обнаружено компьютерной системой, одноранговое устройство, посылающее сообщение "Bye", может быть удалено из списка одноранговых устройств. Сообщения "Bye" могут быть менее предпочтительны, потому что злонамеренный компьютер может использовать запросы "Bye" для того, чтобы сделать так, чтобы другие компьютеры были удалены из списков одноранговых устройств, что станет причиной большего числа компьютеров, делающих запросы к центральному файловому серверу. В другом примере одноранговые устройства могут быть удалены из списка одноранговых устройств, когда сделана попытка сделать запрос однорангового устройства на предмет файлов и получена ошибка, указывающая, что одноранговое устройство больше не находится в сети. В одном варианте воплощения компьютерная система может отказаться от всех записей во всем списке одноранговых устройств, когда множество запросов другим одноранговым устройствам в списке одноранговых устройств приводит к сообщениям об ошибках. Это может быть индикацией того, что часть сети, к которой компьютерная система пробует обратиться, больше не доступна. В другом варианте воплощения одноранговое устройство может быть удалено из списка одноранговых устройств, если оно не проходит проверку подтверждения. Это обсуждается более подробно ниже, но, другими словами, когда одноранговое устройство не проходит проверку подтверждения, это является индикацией того, что одноранговому устройству нельзя доверять. В подобном случае одноранговое устройство может быть удалено из списка одноранговых устройств, если файлы, полученные от однорангового устройства, не проходят определенные проверки безопасности типа сравнений хэша. Это также обсуждается более подробно ниже.
Когда достаточное число одноранговых устройств было удалено из списка одноранговых устройств, действия для построения списка одноранговых устройств, описанные выше, могут быть повторены. Особенно действия, описанные выше, могут использоваться по одиночке или в комбинации.
Компьютерные системы могут поддерживать более чем один список одноранговых устройств. Например, на Фиг.1, иллюстрирован пример системы ноутбука 106. Как объяснено, система ноутбука 106 может быть физически или логически перемещена. В одном варианте воплощения ноутбук 106 может быть перемещен логически так, что он постоянно находится в другой подсети, отличной от первой группы 112 одноранговых устройств. Система ноутбука 106 может обнаружить это, двигаясь в новую подсеть, и в ответ на обнаружение этого перемещения в новую подсеть система ноутбука 106 может выполнить действия, описанные выше, чтобы поформировать список одноранговых устройств, чтобы поформировать новый список одноранговых устройств для новой подсети. Если система ноутбука 106 регулярно является членом определенных подсетей, она может поддерживать список одноранговых устройств для этих подсетей, чтобы избежать потребности выполнять действия для построения списка одноранговых устройств каждый раз, когда она соединяется с подсетями. Число различных списков одноранговых устройств, которые компьютерная система поддерживает, может быть статически определенным числом, или, альтернативно, число может быть конфигурируемо пользователем или сетевым администратором.
Особенно, могут быть ситуации, куда компьютерная система двигается в новую подсеть, но не формирует новую группу одноранговых устройств. Например, если ноутбук будет двигаться в Интернет-кафе, то оно, вероятно, не будет формировать новую группу одноранговых устройств. Коммуникация с доступными одноранговыми устройствами может быть слишком опасной для этой и других ситуаций.
Компьютерные системы могут также быть сконфигурированы, чтобы поформировать список одноранговых устройств, когда они сначала добавлены к сети. Это может быть сделано любой новой компьютерной системой и не ограничено системами ноутбука.
Обратимся еще раз к Фиг.2, где показан этап аутентификации компьютеров в списке одноранговых устройств (этап 204). Аутентификация включает в себя подтверждение того, что одноранговое устройство является доверительной машиной. В одном варианте воплощения компьютерная система может подтвердить, что одноранговое устройство является членом определенной группы безопасности. Подтверждение может быть выполнено, например, при использовании такого протокола, что и компьютерная система, и одноранговое устройство выполняют взаимную аутентификацию. Таким образом, идентичность и компьютерной системы, и одноранговых устройств подтверждена для того, чтобы предотвратить компьютерную систему или одноранговые устройства из списка одноранговых устройств от "имитации" других в том, что они находятся в той же самой группе безопасности. Одним протоколом для этой взаимной аутентификации может быть Kerberos. Если одноранговое устройство не проходит подтверждение правильности, одноранговое устройство может быть удалено из списка одноранговых устройств.
Как только одноранговое устройство было подтверждено, компьютерная система и одноранговое устройство могут совместно использовать ключ так, что последующие подтверждения правильности не должны быть выполнены до последующих опросов. Ключ может иметь период истечения, чтобы сделать доверительное подтверждение правильности эффективным. Таким периодом истечения может быть в одном примере один день.
Как только одноранговое устройство был подтверждено, Фиг.2 далее иллюстрирует этап запроса однорангового устройства в списке одноранговых устройств о файле или части файла (этап 204). Запрос однорангового устройства в списке одноранговых устройств, в одном примерном варианте воплощения, включает в себя отправку одноадресного сообщения к каждому из одноранговых устройств в списке одноранговых устройств, пока одно из одноранговых устройств не ответит, что оно имеет файл или часть файла, разыскиваемого компьютерной системой. Отметим, что, как это используется здесь, одноадресная передача является сетевым запросом на определенный компьютер. Одноадресные передачи, описанные здесь, не требуют обязательного использования датаграммного протокола и могут использовать другие протоколы типа TCP и другие. В одном альтернативном варианте воплощения компьютерная система может послать перекрывающийся набор одноадресных сообщений. Например, компьютерная система может послать одноадресные сообщения одноранговым устройствам в списке одноранговых устройств перед получением ответов от одноранговых устройств, которым предварительно послали одноадресные сообщения.
Сообщение, посланное в процессе запроса, может включать в себя различные параметры для того, чтобы идентифицировать файл, затребованный компьютерной системой. Например, сообщение может включать в себя один или более элементов из имени файла, размера файла, даты создания файла и/или хэша файла. В частности, при использовании хэша файла система может обнаружить, правильный ли файл доступен. Используя хэш, компьютерная система может быть в состоянии обнаружить, когда доступный файл является обновленным файлом, не дубликатом имени другого файла и т.п.
После того как компьютерная система сделала запрос однорангового устройства в списке одноранговых устройств для файла или части файла (этап 206), способ, иллюстрированный на Фиг.2, показывает этап приема сообщения от однорангового сервера в списке одноранговых устройств, что одноранговый сервер имеет файл или часть файла, доступные для загрузки (этап 208).
Решая, будет ли одноранговое устройство действовать как одноранговый сервер, одноранговое устройство может сослаться на различные правила политики. Дополнительно, даже когда одноранговое устройство имеет файл в наличии, это одноранговое устройство может не захотеть действовать как одноранговый сервер в соответствии с правилами политики. Такие правила политики могут принять во внимание мощность обработки компьютерной системы. Например, мощный настольный компьютер или компьютер класса сервера могут иметь правила политики, которые позволяют ему действовать как одноранговый сервер для большего числа одноранговых устройств и общаться, например, с ноутбуками типа системы ноутбука 106. Другие правила могут иметь отношение к объему доступных машинных ресурсов. Например, правила политики могут ограничить способность компьютерных систем действовать как одноранговый сервер, когда используются больше чем 10% ресурсов компьютерных систем. Системные ресурсы могут быть измерены как наибольшее из загрузки центрального процессора и загрузки дисковой системы ввода-вывода. Дополнительно, ноутбук может сослаться на политику, которая корректирует число одноранговых устройств, с которыми система ноутбука 106 может действовать как одноранговый сервер, основываясь на функциональном состоянии системы ноутбука 106. Например, когда система ноутбука 106 связана со стыковочным узлом (док-станция), она может быть сконфигурирована для того, чтобы служить большему количеству одноранговых устройств, чем тогда, когда она не связана со стыковочным узлом. Далее, когда система ноутбука 106 связана через проводное подключение, можно позволить ему служить большему количеству одноранговых устройств, чем тогда, когда система ноутбука 106 связана беспроводным способом с компьютерами одноранговых устройств. В еще одном примере число одноранговых устройств, которым позволено соединяться с системой ноутбука 106, может быть определено политикой, связанной с уровнем заряда батареи. Например, если ноутбук работает на батареях и имеет меньше чем 50%-ную мощность, система ноутбука 106 может следовать политике, которая отвергает дальнейшие подключения компьютеров как одноранговых устройств.
Когда одноранговое устройство решило действовать как одноранговый сервер, одноранговый сервер посылает сообщение назад компьютерной системе, которое будет получено (этап 208) компьютерной системой.
После того как компьютерная система получила сообщение от потенциального однорангового сервера в списке одноранговых устройств, указывающем, что потенциальный одноранговый сервер имеет файл или часть файла, доступные для загрузки, компьютерная система загружает файл или часть файла (этап 210). Загрузка может произойти любым соответствующим способом. Особенно, как ссылка на данное описание, компьютерная система может загрузить часть файла в противоположность всему файлу. Другие части файла могут быть получены от других одноранговых серверов. В небольшом количестве сред это может помочь увеличить норму, по которой могут быть загружены большие файлы.
В одном варианте воплощения способ 200 дополнительно включает в себя подтверждение файла или части файла (этап 212). Подтверждение правильности гарантирует, что файл является правильным файлом, что файл не был злонамеренно изменен и/или что файл не был поврежден. Это может быть достигнуто, например, вычисляя хэш файла или части файла. Если расчетное значение хэша не будет соответствовать ожидаемому значению хэша, то компьютерная система откажется от файла или части файла. Дополнительно, компьютерная система может поместить одноранговый сервер, который передал файл, в карантинный список, указывающий, что одноранговый сервер находится на подозрении. В альтернативном варианте воплощения одноранговый сервер может быть удален из списка одноранговых устройств полностью. Компьютерная система может тогда попытаться получить файл от другого однорангового устройства в списке одноранговых устройств или от центрального файлового сервера. Компьютерная система может также уведомить одноранговый сервер, который выдал файл, что есть проблема с файлом. Это позволит одноранговому серверу отказаться от файла. Другие компьютерные системы могут также быть уведомлены относительно природы подозреваемого файла.
Обратимся теперь к Фиг.3, где вариант воплощения иллюстрирует способ 300 кэширования и коллективного использования файлов с точки зрения потенциального однорангового сервера. Способ, иллюстрированный на Фиг.3, может быть осуществлен в компьютерной системе в сети, где сеть включает в себя один или более сетевых компьютеров.
Способ 300 включает в себя этап посылки сообщения о том, что компьютерная система является доступной как одноранговое устройство (этап 302). Отправка сообщения, что компьютерная система является доступной как одноранговое устройство (этап 302), может быть выполнена, используя групповую отправку в подсети, когда компьютерная система имеет файлы для коллективного использования. В альтернативном варианте воплощения отправка сообщения, что компьютерная система является доступной как одноранговое устройство, может быть выполнена, используя групповую или одноадресную передачу в ответ на получение запроса ходатайства от системы, ищущей одноранговые компьютеры. Отправку сообщения, что компьютерная система является доступной как одноранговое устройство (этап 302), выполняют в ответ на получение запроса ходатайства, компьютерная система может ответить, используя случайную задержку, используя процедуру, описанную выше вместе с описанием Фиг.2.
Способ 300 дополнительно включает в себя этап приема запроса для обнаружения того, имеет ли компьютерная система файл или часть файла (этап 304). Полученное сообщение может быть одноадресным запросом от системы, которая имеет компьютерную систему в списке одноранговых устройств. В альтернативных вариантах воплощения запрос может быть перекрывающейся одноадресной передачей, как описано выше. Групповые запросы также могут использоваться, когда не требуется защита для файла.
Способ 300 дополнительно включает в себя этап посылки сообщения о том, что компьютерная система имеет файл или часть файла (этап 304). Посылка сообщения о том, что компьютерная система имеет файл или часть файла (этап 304), выполнена на основании динамических правил opt-in/opt-out (принимать участие/отказываться от участия). Например, в одном варианте воплощения правила политики могут принять во внимание мощность обработки компьютерной системы. Мощный настольный компьютер или компьютер класса сервера могут иметь правила политики, которые позволяют ему действовать как одноранговый сервер для большего числа одноранговых устройств, чем другие менее мощные системы. Другие правила могут иметь отношение к количеству доступных машинных ресурсов. Например, правила политики могут ограничить способность компьютерных систем действовать как одноранговый сервер, когда используются более чем 10 % ресурсов компьютерных систем. Системные ресурсы могут быть измерены как наибольшее из загрузки центрального процессора и загрузки дисковой системы ввода-вывода. В альтернативном варианте воплощения, связанном с ноутбуками, ноутбук может сослаться на политику, которая корректирует число одноранговых устройств, для которых система ноутбука 106 может действовать как одноранговый сервер, основываясь на функциональном состоянии системы ноутбука 106. Например, когда система ноутбука 106 связана со стыковочным узлом, она может быть сконфигурирована для того, чтобы служить большему числу одноранговых устройств, чем тогда, когда она не связана со стыковочным узлом. Далее, когда система ноутбука 106 связана через проводное подключение, можно позволить ей служить большему числу одноранговых устройств в отличие от того, когда система ноутбука 106 связана беспроводным способом с одноранговыми компьютерами. В еще одном альтернативном варианте воплощения число одноранговых устройств, которым разрешено соединяться с системой ноутбука 106, может быть определено политикой, связанной с уровнем заряда батареи. Например, если ноутбук работает на батареях и имеет меньше, чем 50%-ную мощность, тогда система ноутбука 106 может следовать политике, которая запрещает дальнейшие подключения одноранговых компьютеров.
Способ 300 дополнительно включает в себя этап приема запроса для загрузки файла (этап 308). Способ 300 дополнительно включает в себя этап посылки файла к запрашивающей системе (310). Это может быть выполнено компьютерной системой, действующей как одноранговый сервер для других систем в сети.
Обратимся теперь к Фиг.4, где вариант воплощения является иллюстрацией, показывающей способ 400 кэширования и коллективного использования файлов, который включает в себя различные форматы передачи сообщений. Способ, иллюстрированный на Фиг.4, может быть осуществлен в компьютерной системе в сети, где сеть включает в себя один или более сетевых компьютеров.
Способ включает в себя этап компьютерной системы, посылающей циркулярно передаваемый сигнал компьютерным системам в подсети для того, чтобы обнаружить потенциальные одноранговые устройства (этап 402). Циркулярно передаваемый сигнал может указать желаемое число предопределенного числа ответов. В альтернативном варианте воплощения циркулярно передаваемый сигнал может включать в себя различные параметры, которые позволют компьютерной системе оценить любые ответы на циркулярно передаваемый сигнал. Например, параметры могут учесть время ответа, оценку характеристик аппаратных средств ответивших систем и т.п.
Компьютерная система тогда получит сигнал от одной из компьютерных систем в подсети (этап 404). Этот сигнал может включать в себя список файлов, которые могут быть доступны, характеристики системы, посылающей сигнал, и т.д. Сигнал может быть групповым сигналом или, в некоторых случаях, одноадресным сигналом.
Компьютерная система добавит одну из компьютерных систем в подсети к списку одноранговых устройств (этап 406). Список одноранговых устройств включает в себя не более, чем предопределенное число одноранговых устройств. Например, список одноранговых устройств может включать в себя не более чем 100 одноранговых устройств. Это позволяет компьютерной системе ограничивать количество ресурсов обработки и использования сети, требуемых для нахождения файла или части файла для загрузки.
Компьютерная система посылает одноадресный сигнал одной из компьютерных систем в подсети для того, чтобы обнаружить, имеет ли эта компьютерная система файл или часть файла, доступный для загрузки (этап 408). Компьютерная система может повторить этот процесс с другими компьютерными системами, чтобы обнаружить, где файл или часть файла могут быть расположены. Особенно, одноадресные сигналы могут перекрываться так, что одноадресные передачи могут произойти одновременно от одной и той же компьютерной системы.
Компьютерная система получает одноадресный сигнал от одной из компьютерных систем в подсети, указывающей, что одна из компьютерных систем в подсети имеет файл или часть файла, доступный для загрузки (этап 410).
Компьютерная система может тогда загрузить файл или часть файла от одной из компьютерных систем в подсети (этап 412).
Специалисты в данной области техники оценят, что изобретение может быть осуществлено в сетевой компьютерной среде со многими типами конфигураций компьютерной системы, включая в себя персональные компьютеры, карманные устройства, многопроцессорные системы или программируемую бытовую электронику на основе микропроцессора, сетевые PC, миникомпьютеры, универсальные компьютеры и т.п. Изобретение может также быть осуществлено в распределенных вычислительных средах, где задачи выполняются локальными и удаленными устройствами обработки, которые связаны (аппаратными связями, беспроводными связями или комбинацией аппаратных или беспроводных связей) через систему коммуникаций. В распределенной компьютерной среде модули программы могут быть расположены и в локальных, и в удаленных запоминающих устройствах памяти.
Варианты воплощения в рамках данного изобретения также включают в себя читаемые компьютером носители для того, чтобы нести или иметь компьютерные выполнимые команды или структуры данных, сохраненные на нем. Такие читаемые компьютером носители могут быть любыми доступными носителями, к которым можно обратиться универсальным или специализированным компьютером. В качестве примера, но не ограничения, такие считываемые компьютером носители могут включать в себя RAM, ROM, EEPROM, CD-ROM или другую оптическую дисковую память, магнитную память на диске или другие магнитные запоминающие устройства, или любой другой носитель, который может использоваться для того, чтобы нести или хранить желательные средства кода программы в форме компьютерных выполнимых команд или структур данных, к которым можно обратиться универсальным или специализированным компьютером. Когда информация передается или предоставляется по сети или другому коммуникационному подключению (аппаратной, беспроводной или комбинации аппаратных или беспроводных) к компьютеру, компьютер должным образом рассматривает подключение как читаемый компьютером носитель. Таким образом, любое такое подключение должным образом называют читаемый компьютером носитель. Комбинации вышеупомянутого должны также быть включены в рамки читаемых компьютером носителей. Компьютерные выполнимые команды включают в себя, например, команды и данные, которые заставляют универсальный компьютер, специализированный компьютер или специализированное устройство обработки выполнять определенную функцию или группу функций.
Хотя предмет был описан на языке, определенном для структурных особенностей и/или методологических действий, необходимо понимать, что предмет, определенный в приложенной формуле изобретения, не обязательно ограничен определенными особенностями или действиями, описанными выше. Скорее определенные признаки и действия, описанные выше, раскрыты как формы примера варианта осуществления формулы изобретения.
Данное изобретение может быть воплощено в других определенных формах, не отступая от его смысла или основных характеристик. Описанные варианты воплощения нужно счесть во всех отношениях только как иллюстративные и не ограничительные. Объем притязаний изобретения поэтому обозначен в соответствии с приложенной формулой изобретения, а не в соответствии с предшествующим описанием. Все изменения, которые находятся в пределах значения и диапазона эквивалентности формулы изобретения, должны быть охвачены в пределах их объема.