NEO Автор темы 541 Опубликовано: 12 мая, 2014 О структуре ip-адреса и таблицах маршрутизации в сети rednet (продолжение) И всё бы хорошо, но область покрываемая одним роутером ограничена радиусом 64. Если нам нужно покрыть бОльшую область, одним роутером не обойтись. И те роутеры, которыми мы накрыли требуемую область должны быть связаны между собой [ATTACH=full]43[/ATTACH] На рисунке изображены четыре роутера (я их назвал first, second, third и fourth). К некоторым из них подключены хосты. Как теперь пакету от хоста 11 добраться до хоста, скажем, 14? Прямой связи роутера first с хостом 14 нет. Значит пакет нужно направить на один из роутеров 8 или 9. Прописываем таблицу маршрутизации v_pupkin 13 – Уже известный нам хост Васи Пупкина 14 9 – Пакеты на 14-й хост шлем через роутер third Но хостов, подключенных к роутерам second, third и fourth может быть очень много да и добавляться они могут слишком часто. Неужели их всех нужно руками прописывать в таблицу маршрутизации? Давайте пересмотрим структуру ip-адреса. Пусть теперь этот адрес состоит из двух составляющих: адреса роутера, к которому подключен хост и адреса самого хоста разделенных точкой. Пример fourth.14 Теперь роутеру first не нужно помнить адреса всех хостов сети. Нужно лишь знать пути к роутерам. Вот так выглядит новая таблица маршрутизации. First.self 10 – Это что бы отличать свои хосты от чужих First.v_pupkin 13 – Уже известный нам хост Васи Пупкина second 8 – Пакеты на роутер second third 9 – Пакеты на роутер third fourth 9 – Пакеты на роутер fourth шлем через роутер third Разумеется, похожие таблицы должны быть составлены и для остальных роутеров сети. Такую сеть будем называть двухуровневой. Каковы недостатки такой сети? При добавлении нового роутера (хоть это бывает и не часто) приходится корректировать таблицы маршрутизации всех остальных роутеров. Так же при отключении одного из ранее работавших роутеров будет наблюдаться потеря пакетов, проходящих через него. Как бороться с этими проблеммами? Мне видится динамическое построение таблиц маршрутизации с периодическим обновлением. Возможно со временем нам удастся решить и эту задачу. Продолжение следует... я уже решил . систему конкретно переделал заходи в RC или Skype обговорим.Обьяснять письмено тяжело Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 13 мая, 2014 я уже решил . систему конкретно переделал заходи в RC или Skype обговорим.Обьяснять письмено тяжелоА ты попробуй письменно. Может еще кому интересно будет. Я вон уже сколько букв написал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 13 мая, 2014 О структуре ip-адреса и таблицах маршрутизации в сети rednet (продолжение) А теперь предположим, что наши соседи из другой деревни построили сеть аналогичную нашей. И мы связали эти две сети в одну при помощи цепочки повторителей. На рисунке изображены все имеющиеся в наличии роутеры и только два из всех возможных хостов. Наша деревня отмечена буквой А, соседняя — буквой В. Как теперь должна должна выглядеть таблица маршрутизации роутера first, чтобы пакет, предназначенный для деревни В был направлен в нужном направлении? Как я говорил выше, роутер должен знать пути ко всем остальным роутерам сети. Значит ли это, что в таблице должны быть прописаны пути к роутерам 15, 16, 17 и 18 для каждого в отдельности? Но ведь они все лежат в одном направлении и есть смысл выделить их в одну группу — группу В. А роутеры first, second, third и fourth соответственно в группу А. Таким образом ip-адрес теперь будет состоять из трех составляющих: адрес группы, адрес роутера и адрес хоста. Такая сеть будет трехуровневой. Привожу пример таблицы маршрутизации роутера first: A.first.self 10 – Это что бы отличать свои хосты от чужих A.first.v_pupkin 13 – Уже извеcтный нам хост Васи Пупкина A.second 8 – Пакеты на роутер second A.third 9 – Пакеты на роутер third A.fourth 9 – Пакеты на роутер fourth шлем через роутер third B 8 – Пакеты для роутеров группы В шлем через роутер second Разбор адреса производится в следующем порядке. Анализируется первая составляющая ip-адреса. Если это В — отправляем пакет на id 8. Если нет, анализируем вторую составляющую. Если это second, third или fourth — отправляем пакет на соответствующий id. Если нет, анализируем третью составляющую. Если третья составляющая прописана в таблице — отправляем пакет на соответствующий id. Если нет, интерпритируем третью составляющую как число и отправляем пакет на этот id. Если составляющая адреса не обнаружена в таблице, то такой пакет считается ошибочным и игнорируется. В принципе, таким же образом можно построить четырех- и более уровневую сеть. Но я думаю, мы пока ограничимся тремя уровнями. Если не двумя. Окончание следует. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 13 мая, 2014 О структуре ip-адреса и таблицах маршрутизации в сети rednet (окончание) Чтобы все сказанное мной выше не казалось безжизненной теорией приведу пример работающих функций, которые могут помочь в нахождении роутером пути для передачи пакета. Первая из них loadTable(filename) предназначена для загрузки таблицы маршрутизации из файла. function loadTable(filename) local rTable={} local file=fs.open(filename,'r') if not file then error('Can not open file '..filename) end local line=file.readLine() while line do local path,id=line:match('^%s-([_%w%.]+)%s+(%d+)') if path then id=tonumber(id) local t=rTable for k in path:gmatch('([_%w]+)%.') do write(k..'.') if not t[k] then t[k]={} elseif type(t[k])=='number' then t[k]={[0]=t[k]} end t=t[k] end local k=path:match('([_%w]+)$') t[k]=id print(k,'=',id) end line=file.readLine() end file.close() return rTable endВ качестве параметра функция принимает строку, содержащую путь к файлу. Возвращает таблицу, в которой данные из файла упакованы в виде удобном для использования. Вызывается один раз в начале работы ПО роутера. Вторая функция trace(t,path) function trace(t,ip) ip=ip..'.' for k in ip:gmatch('([_%w]+)%.') do if not t[k] then return tonumber(k) end if type(t[k])=='table' then t=t[k] else return t[k] end end return t[0] endпринимает два параметра: t — таблица, полученная после вызова функции loadTable; ip – строка, содержащая ip-адрес хоста-приемника. Возвращает функция число — id компьютера (хоста или следующего роутера) на который следует передать пакет. Привожу скриншот работы этих функций для таблицы маршрутизации со следующим содержимым: A.first 7 A.first.self 7 A.first.v_pupkin 13 A.second 8 A.third 9 A.fourth 9 B 8 C 9 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 13 мая, 2014 Тему я закрываю и начинаю другую которая будет посвящена не только маршрутизатору , а всей технологии передачи пакетов.Кстати ты зайдешь в RC или скайп поговорить надоПропал интерес и угас огонь в глазах.А мне интересно почитать, как Зеро подходит к вопросу. Тут есть и топология сети, уровни, шлюзы по умолчанию и прочее. Темы закрывают модераторы, кстати. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 14 мая, 2014 Пропал интерес и угас огонь в глазах. А мне интересно почитать, как Зеро подходит к вопросу. Тут есть и топология сети, уровни, шлюзы по умолчанию и прочее. Темы закрывают модераторы, кстати. Нет я решил чу-чуть глобальней подойти к теме и создал тему под названием Ethernet (я подумал если создавать сеть то уже полностью , а не только маршрутизатор). Сегодня с Zero мы будем на моём сервере с плоским миром (что бы клиент у зеро не лагал ) тестить и писать ПО для сети , писать документацию и создавать точную модель что бы другой человек мог понять. И извини что нагнал на тебя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Гость Nick_Alps Опубликовано: 14 мая, 2014 Нет я решил чу-чуть глобальней подойти к теме и создал тему под названием Ethernet (я подумал если создавать сеть то уже полностью , а не только маршрутизатор). Сегодня с Zero мы будем на моём сервере с плоским миром (что бы клиент у зеро не лагал ) тестить и писать ПО для сети , писать документацию и создавать точную модель что бы другой человек мог понять. И извини что нагнал на тебя.Neo, можно присоединится в качестве наблюдателя? Хочу посмотреть как работают знающие люди. Могу выполнять рутинную часть работы и тестировать, а при написании документации указывать на непонятные мало знающим моменты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 14 мая, 2014 Neo, можно присоединится в качестве наблюдателя? Хочу посмотреть как работают знающие люди. Могу выполнять рутинную часть работы и тестировать, а при написании документации указывать на непонятные мало знающим моменты.Хорошо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Semoro 37 Опубликовано: 19 мая, 2014 Могу присоединится в качестве программиста, могу выполнять задачи по шифрованию связи, теоретические вопросы ко мне. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 19 мая, 2014 Могу присоединится в качестве программистаДля начала нужно поселиться на сервере недалеко друг от друга и создать небольшую сеть из 3-4 роутеров. По мере необходимости наращивать.К сожалению, я не смогу в ближайшее время появляться на игровом сервере и буду участвовать только из оффлайна. Часто бываю в РК, все вопросы можно туда. Вот ПО роутера, которое должно запускаться из стартапа http://pastebin.com/5T0suSif Таблица маршрутизации - статическая. Ее нужно поместить в файл rtable в корне диска. Пример таблицы first self second 8 third 9 fourth 9Первая колонка - имя подсети, вторая - id по которому будет переправляться пакет на данную подсеть. Если во второй колонке self - значит это собственное имя роутера.Набор функций для хоста http://pastebin.com/FJqsDgZP У Neo есть задумка динамической маршрутизации, но я пока не видел достаточно эффективной реализации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 19 мая, 2014 Для начала нужно поселиться на сервере недалеко друг от друга и создать небольшую сеть из 3-4 роутеров. По мере необходимости наращивать. К сожалению, я не смогу в ближайшее время появляться на игровом сервере и буду участвовать только из оффлайна. Часто бываю в РК, все вопросы можно туда. Вот ПО роутера, которое должно запускаться из стартапа http://pastebin.com/5T0suSif Таблица маршрутизации - статическая. Ее нужно поместить в файл rtable в корне диска. Пример таблицы first self second 8 third 9 fourth 9Первая колонка - имя подсети, вторая - id по которому будет переправляться пакет на данную подсеть. Если во второй колонке self - значит это собственное имя роутера.Набор функций для хоста http://pastebin.com/FJqsDgZP У Neo есть задумка динамической маршрутизации, но я пока не видел достаточно эффективной реализации.[/qu . Хорошо , что люди собираются Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 20 мая, 2014 Semoro, что тебе известно о русификации СС? Если много, давай тему создадим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 27 мая, 2014 Zer,ты куда пропал?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 28 мая, 2014 Zer,ты куда пропал??Никуда не пропадал. В РК регулярно бываю Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 7 июня, 2014 реализована статическая маршрутизация(идет тестирование и доработка) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 9 июня, 2014 Реализовал Статическую сеть , которая подобна на описание Zer0 , скоро будет реализована динамическая версия кто хочет потестить пишите Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 9 июля, 2014 Портируем OpenWrt на Lua?)))))))))))))))))))))))))))))))))))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 9 июля, 2014 Портируем OpenWrt на Lua?))))))))))))))))))))))))))))))))))))зачем?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах