LINUX.ORG.RU

Посоветуйте ЯП для сетевого программирования

 ,


0

1

Работаю над моделированием специфичной сети в матлабе. Если все получится, то возможно придется писать протокол маршрутизации, который использует mac адреса. Чтобы не терять время зря начал почитывать C по Кернигану и упражнения делать. Оправдан ли выбор? По работе я не программер, а сетки и серваки админю, поэтому и основной skill только в этом.

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

придется писать протокол маршрутизации, который использует mac адреса

Ты имеешь в виду сделать самопальный демон для руления таблицей маршрутов? Тогда да, С хороший выбор. Взгляни на существующие решения, может их можно расширить, плагинами там например, и ещё что.

nanoolinux ★★★★
()

протокол маршрутизации, который использует mac адреса

подобие IPX?

про язык - С, все верно, можешь взять и любой другой, но биты кидать удобнее всего именно в С, исходя из моего небольшого опыта

RedPossum ★★★★★
()
Ответ на: комментарий от anonymous_sapiens

зачем такое безумие?

включение дополнительных возможностей (управление мощностью и др.)

andrew667 ★★★★★
() автор топика
Ответ на: комментарий от nanoolinux

может их можно расширить, плагинами там например, и ещё что.

Только свое. Иначе смысл теряется. Про аналоги в курсе. Хотя плагины может и вариант.

andrew667 ★★★★★
() автор топика
Ответ на: комментарий от RedPossum

подобие IPX?

Хз, IPX уже мало где остался и я с ним не знаком. IPX лежит выше mac уровня. Я пока не знаю что из этого получится и получится ли вообще. Сетка беспроводная и подвижная.

andrew667 ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Все почему-то советуют C. А почему не C++? или что-то другое. В чем киллер-фича? Ключевые слова linux, ядро?

andrew667 ★★★★★
() автор топика
Ответ на: комментарий от andrew667

IPX лежит выше mac уровня.

и твоя сетка лежит выше канального уровня, а у IPX, ЕМНИП, маршрутизация как раз по mac адресам. Я не специалист в этом, просто ГОСы недавно сдал и еще кое-чего помню. Удачи в начинаниях.

RedPossum ★★★★★
()
Ответ на: комментарий от andrew667

Байтами одинаково удобно ворочать как в С, так и в ++. С++ позволяет добиться большего уровня абстракции меньшим кодом. Но С++ гораздо сложнее, и хз, нужно ли тебе тут будет много абстракции.

staseg ★★★★★
()
Ответ на: комментарий от staseg

И я не понял, что именно ты будешь делать, имитационную модель или реальный маршрутизатор? Если второе, то наверное будет модулем ядра, там от С++ без stdlib вообще смысла почти не будет.

staseg ★★★★★
()
Ответ на: комментарий от RedPossum

и твоя сетка лежит выше канального уровня, а у IPX, ЕМНИП, маршрутизация как раз по mac адресам. Я не специалист в этом, просто ГОСы недавно сдал и еще кое-чего помню.

Тебе пора освежить память. У меня задача несколько иная, и там действительно может потребоваться модификация протокола канального уровня. Касательно IPX - именно выше МАС. Вот скрин из cisco ccna.

andrew667 ★★★★★
() автор топика
Ответ на: комментарий от staseg

Пока работаю над моделью (в основном в матлабе и немного на С). Все вроде неплохо. Просто если потом придется писать протокол, то понимаю, опыт в нужном ЯП будет ценен.

andrew667 ★★★★★
() автор топика

для быстрого создания прототипа можешь использовать python+scapy. Но оно тормозное сильно. Так что C - твой выбор.

anonymous
()

Работаю над моделированием специфичной сети в матлабе.

А что за задача моделирования? DES?

dave ★★★★★
()
Ответ на: комментарий от Deleted

А С++ тормозное уг.

О, кое-кто расписался в собственной убогости.

dmfd
()
Ответ на: комментарий от andrew667

Касательно IPX - именно выше МАС

У IPX адрес узла это MAC-адрес сетевухи. Речь шла об этом.

модификация протокола канального уровня.

Что ты подразумеваешь под этим? Я сомневаюсь что можно вот так взять и поменять формать эзернет фреймов.

true_admin ★★★★★
()
Ответ на: комментарий от RedPossum

а у IPX, ЕМНИП, маршрутизация как раз по mac адресам.

Начнем с того, что в протоколе IPX нет никакой маршрутизации по MAC-адресам. В нем вообще нет никакой маршрутизации – это протокол сетевого уровня. А для адресации хостов действительно используются MAC-адреса. А для маршрутизации в сетях IPX используется несколько другие протоколы: RIP, например.

Так что не стоит человека путать. А для реализации задачи лучше всего подходит именно C (про ассемблер не вспоминаем). Хотя реализовать такое на Go было бы интересно, я так думаю. )

sleepflint ★★★
()
Ответ на: комментарий от true_admin

У IPX адрес узла это MAC-адрес сетевухи. Речь шла об этом.

Цифры то могут совпадать. Но функции-то различны.

Я сомневаюсь что можно вот так взять и поменять формать эзернет фреймов.

А я и не говорил ни слова про ethernet. С ним часто работаешь, но не эзернетом единым сети делаются. Можно сделать и свой протокол под что-то на базе чего-то. У меня ячеистая беспроводная сетка - соответсвенно все делается на радионтерфейсах.

andrew667 ★★★★★
() автор топика
Ответ на: комментарий от dave

А что за задача моделирования? DES?

Не знаю что ты имеешь в виду под DES, но явно не алгоритм шифрования. Делаю модель сети подвижных точек в трехмерном пространстве.

andrew667 ★★★★★
() автор топика
Ответ на: комментарий от sleepflint

В нем вообще нет никакой маршрутизации – это протокол сетевого уровня.

А какая тогда маршрутизация есть в IP сетях? Я может сам туплю, но, по-моему, ты запутался. Как и IP есть таблицы маршрутизации. Как эти таблицы обновляются это другой вопрос.

А для маршрутизации в сетях IPX используется несколько другие протоколы: RIP

это просто сервис который правит таблицу маршрутизации.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

А какая тогда маршрутизация есть в IP сетях?

В таблицах маршрутизации содержатся IP-адреса - это маршрутизация на 3-м уровне. Есть маршрутизация на уровне 2.5 (batman-adv). Кроме того трафик можно заворачивать и нетрадиционным способом (forward-policy по определенным критериям - выше 3-го уровня).

andrew667 ★★★★★
() автор топика
Ответ на: комментарий от true_admin

L2 - это коммутация. Кстати ее у тебя может и не быть вовсе (например serial интерфейсы в cisco). Кроме того MAC ставится в соответствие строго определенному уникальному ip-адресу. А в таблице маршрутизации у тебя может быть несколько путей на нужное направление.

andrew667 ★★★★★
() автор топика
Ответ на: комментарий от andrew667

L2 - это коммутация

да, но именно на этом уровне работает маршрутизация в ethernet-свитчах.

ее у тебя может и не быть вовсе

да модель OSI вообще весьма спорна :)

MAC ставится в соответствие строго определенному уникальному ip-адресу

Это тут ни при чём. Кстати, не обязательно, carp же :).

в таблице маршрутизации у тебя может быть несколько путей на нужное направление.

Есть такое в ethernet. Начиная от bounding и заканчивая stp и carp. Так же ты можешь дать сетевухе несколько MAC. А ещё есть протокол openflow который позваляет делать любые извращения. Если интересует multipath то есть и такое. Это типа stp, только позволяет задействовать все линки. К сожалению забыл ключевое слово, спроси в admin, если интересно.

true_admin ★★★★★
()

протокол маршрутизации, который использует mac адреса

IPv6 / EUI64 ? :D

vasily_pupkin ★★★★★
()
Ответ на: комментарий от true_admin

да, но именно на этом уровне работает маршрутизация в ethernet-свитчах.

Да нет же. В свитчах есть и маршрутизация, но не за 20$. Она работает и в свитчах на уровне IP, а интерфейсы могут быть ethernet, rpr и другие. Когда железка нормальная, то там сам выбираешь, в каком режиме порт работает - роутинг или свитчинг. Идея то одна - передать данные, только уровни абстракции разные. Ты к этому ведешь, но нужно называть вещи своими именами. ;)

andrew667 ★★★★★
() автор топика
Ответ на: комментарий от true_admin

Если интересует multipath то есть и такое. Это типа stp, только позволяет задействовать все линки. К сожалению забыл ключевое слово, спроси в admin, если интересно.

Пометку сделал - как-нить посмотрю что к чему. Я так много линков загоняю в LAG- и там выбираешь нужный уровень. Но эта зараза почему-то не всегда поровну трафик раскидывает. 2 порта по 10 - на одном прет 9,5, а на втором 7,5 - и производитель классный, а не китайское говно. На zte через 10g вообще 6,5 пролазит.

andrew667 ★★★★★
() автор топика
Ответ на: комментарий от andrew667

В свитчах есть и маршрутизация, но не за 20$.

Не-не-не. Вот откуда свитч знает на каком порту какой IP? И чем отличается свитч от хаба? Это l2-маршрутизация http://en.wikipedia.org/wiki/LAN_switching

Это примитивная маршрутизация, но маршрутизация.

true_admin ★★★★★
()
Ответ на: комментарий от andrew667

Но эта зараза почему-то не всегда поровну трафик раскидывает

Возможно, я тебя не понял, но ты про это? http://www.cisco.com/en/US/tech/tk389/tk213/technologies_tech_note09186a00800...

Если да то эта штука может неравномерно распределять траффик т.к. решение в какой канал запихивать пакет принимается на основе хэша от IP. Этот метод не свободен от недостатков.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Вот откуда свитч знает на каком порту какой IP?

никак. это ему и не надо для работы

И чем отличается свитч от хаба?

тем, что свитч бьет коллизионные домены (не транслит инфу по всем портам, а передает только на нужный, за исключением случая переполнения своей таблицы соответствия порту mac-адреса)

Это примитивная маршрутизация, но маршрутизация.

Отдохни немного. Это коммутация.

andrew667 ★★★★★
() автор топика
Ответ на: комментарий от true_admin

Возможно, я тебя не понял, но ты про это?

да. тут есть разные способы разделения, но нагрузку надо как-то распределить равномерно между физическими интерфейсами одной группы. надо репу чесать в общем

andrew667 ★★★★★
() автор топика
Ответ на: комментарий от andrew667

А, ну тогда это другое. DES - discrete event simulation.

dave ★★★★★
()
Ответ на: комментарий от andrew667

Хотя, может быть, и DES. Там бывают разные приемы: событийно-ориентированное моделирование, процесс-ориентированное и с постоянным шагом по времени. Задача одной размерности: все эволюционирует во времени.

Быть может, для матлаба есть пакеты. А так, есть библиотеки для разных языков программирования, облегчающие моделирование через DES. Такие могут быть и для си и си++.

Но может статься, что такие библиотеки нафиг не нужны, даже если окажется у тебя DES :) Можешь все писать сам - пиши.

dave ★★★★★
()
Ответ на: комментарий от dave

Теперь-то понятно) Не буду терять времени

andrew667 ★★★★★
() автор топика

На Erlang можно посмотреть. У него хороший bit-syntax, ворочать битиками удобнее, чем в C.

Miguel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.