Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Кто нибудь использовал MPTCP на gentoo ?
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Russian
View previous topic :: View next topic  
Author Message
orion777
n00b
n00b


Joined: 15 Mar 2017
Posts: 60
Location: Riga, Latvia

PostPosted: Fri Feb 09, 2018 11:12 am    Post subject: Кто нибудь использовал MPTCP на gentoo ? Reply with quote

ЗАдача - сделать надёжное сетевое соединение путём резервирования (или даже одновременной пересылки данных по двум сетевым картам). Решил попробовать использовать https://multipath-tcp.org/pmwiki.php/Users/HowToInstallMPTCP?
Применил патч к версии ядра 4.10, пересобрал ядро, вбил настройки как показано тут https://multipath-tcp.org/pmwiki.php/Users/ConfigureRouting
Никакого эффекта не заметил, работает как и раньше через eth0 и всё :( Не понимаю как им пользоваться..
Если кто использовал - отзовитесь пожалуйста!
Детально мои действия по настройке я описал здесь https://forums.gentoo.org/viewtopic-t-1076702.html ; но могу, если неободимо, перевести на русский и выложить тут.
Back to top
View user's profile Send private message
TigerJr
Guru
Guru


Joined: 19 Jun 2007
Posts: 410
Location: /dev/x0

PostPosted: Wed Feb 14, 2018 2:31 pm    Post subject: Reply with quote

Ну а что тут непонятного?

По-умолчанию в системе должен существовать только один маршрут до шлюза. Но после накатывания патчей у тебя получается два шлюза на разных интерфейсах.
Другой вопрос - как происходит механизм переключения?

В текущей твоей конфигурации, например если у тебя например упадет интерфейс eth0, будут ли ходить пакеты на адреса 0.0.0.0/0 через другой интерфейс? Или если соединение будет активно, а шлюз не будет доступен - то произойдёт ли что-то?
_________________

Do not update portage without hotdog!

Xenogentooway?
Back to top
View user's profile Send private message
orion777
n00b
n00b


Joined: 15 Mar 2017
Posts: 60
Location: Riga, Latvia

PostPosted: Thu Feb 15, 2018 11:03 am    Post subject: Reply with quote

В этом то и весь смысл! Я хочу чтобы: ЛИБО второй интерфейс подключался когда падает первый ЛИБО чтобы он вообще сдал через два интерфейса сразу (такое тоже меня устроит).
Но, после внесения настроек иптаблц, рекомендованных на ихнем сайте, ни одного ни другого не происходит
Code:
pi64 ~ # # This creates two different routing tables, that we use based on the source-address.
pi64 ~ # ip rule add from 192.168.1.118 table 1
pi64 ~ # ip rule add from 192.168.8.10 table 2
pi64 ~ # # Configure the two different routing tables
pi64 ~ # ip route add 192.168.1.0/24 dev eth0 scope link table 1
pi64 ~ # ip route add default via 192.168.1.1 dev eth0 table 1
pi64 ~ # ip route add 192.168.8.0/24 dev eth3 scope link table 2
pi64 ~ # ip route add default via 192.168.8.1 dev eth3 table 2
pi64 ~ # # default route for the selection process of normal internet-traffic
pi64 ~ # ip route add default scope global nexthop via 192.168.1.1 dev eth0
Back to top
View user's profile Send private message
TigerJr
Guru
Guru


Joined: 19 Jun 2007
Posts: 410
Location: /dev/x0

PostPosted: Thu Feb 15, 2018 2:17 pm    Post subject: Reply with quote

Code:
ip route add default scope global nexthop via 192.168.1.1 dev eth0


Так если через маршрут default всё ходит, посмотри меняется ли он при недоступности адреса или пропадании линка?


Если нет, то когда ты в ручную пропишешь

Quote:
ip route change default scope global nexthop via 192.168.8.1 dev eth3
- так будет ли что-то работать?
_________________

Do not update portage without hotdog!

Xenogentooway?
Back to top
View user's profile Send private message
orion777
n00b
n00b


Joined: 15 Mar 2017
Posts: 60
Location: Riga, Latvia

PostPosted: Sat Feb 17, 2018 8:00 am    Post subject: Reply with quote

Такс, у меня явные проблемы, связанные с незнанием линукса..
Обнаружил что в ip route назаданно уже много чего, а именно:
Code:
default via 192.168.1.1 dev eth0
default via 192.168.1.1 dev eth0 src 192.168.1.118 metric 202
default via 192.168.8.1 dev eth3 src 192.168.8.10 metric 204
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.118 metric 202
192.168.8.0/24 dev eth3 proto kernel scope link src 192.168.8.10 metric 204

В этой конфигурации он переходит на eth3 если eth0 падает (т.е. физически отключить), а вот если eth0 кабель оставить, но оборвать соединение где то дальше, то просто передача данных виснет и всё, на eth3 он не переходит.

Как это всё удалить? Команда clear ip route 192.168.8.0/24 не даёт никакого результата..

Так же стоит заметить, что оба интерфейса получают IP по dhcp; так же запущены NetworkManager, dhcpcd, dhclient.
Back to top
View user's profile Send private message
TigerJr
Guru
Guru


Joined: 19 Jun 2007
Posts: 410
Location: /dev/x0

PostPosted: Mon Feb 19, 2018 10:15 am    Post subject: Reply with quote

Code:
localhost /usr/src/linux # ip route help
Usage: ip route { list | flush } SELECTOR
       ip route save SELECTOR
       ip route restore
       ip route showdump
       ip route get ADDRESS [ from ADDRESS iif STRING ]
                            [ oif STRING ] [ tos TOS ]
                            [ mark NUMBER ]
       ip route { add | del | change | append | replace } ROUTE
SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ]
            [ table TABLE_ID ] [ proto RTPROTO ]
            [ type TYPE ] [ scope SCOPE ]
ROUTE := NODE_SPEC [ INFO_SPEC ]
NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]
             [ table TABLE_ID ] [ proto RTPROTO ]
             [ scope SCOPE ] [ metric METRIC ]
INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...
NH := [ encap ENCAPTYPE ENCAPHDR ] [ via [ FAMILY ] ADDRESS ]
       [ dev STRING ] [ weight NUMBER ] NHFLAGS
FAMILY := [ inet | inet6 | ipx | dnet | mpls | bridge | link ]
OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ] [ as [ to ] ADDRESS ]
           [ rtt TIME ] [ rttvar TIME ] [ reordering NUMBER ]
           [ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]
           [ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]
           [ rto_min TIME ] [ hoplimit NUMBER ] [ initrwnd NUMBER ]
           [ features FEATURES ] [ quickack BOOL ] [ congctl NAME ]
           [ pref PREF ]
TYPE := [ unicast | local | broadcast | multicast | throw |
          unreachable | prohibit | blackhole | nat ]
TABLE_ID := [ local | main | default | all | NUMBER ]
SCOPE := [ host | link | global | NUMBER ]
NHFLAGS := [ onlink | pervasive ]
RTPROTO := [ kernel | boot | static | NUMBER ]
PREF := [ low | medium | high ]
TIME := NUMBER[s|ms]
BOOL := [1|0]
FEATURES := ecn
ENCAPTYPE := [ mpls | ip | ip6 ]
ENCAPHDR := [ MPLSLABEL ]

думаю достаточно такой строчки:

ip route del default via 192.168.8.1 dev eth3 src 192.168.8.10

PS

Code:
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.118 metric 202
 192.168.8.0/24 dev eth3 proto kernel scope link src 192.168.8.10 metric 204


Эти маршруты на сети которые работают напрямую(без шлюза), их удалять не стоит. Ну а src значит то, с каким адресом будут уходить пакеты. Советую это всё проверять tcpdump и мониторить что происходит с пакетами когда они уходят с интерфейсов. Иначе в слепую как-то не так разбираться...

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

Code:

tcpdump -vvni eth0
tcpdump -vvni eth3


ну и поле src даст нам ясное понимание откуда уходит пакет и что и где нужно изменить чтобы всё работало как надо...


PS\2

Ещё вспомнил что NetworkManager скорее всего не знает о конфигурациях с двумя маршрутами default, рекомендую конфигурировать маршруты без него)
_________________

Do not update portage without hotdog!

Xenogentooway?
Back to top
View user's profile Send private message
orion777
n00b
n00b


Joined: 15 Mar 2017
Posts: 60
Location: Riga, Latvia

PostPosted: Thu Feb 22, 2018 8:00 am    Post subject: Reply with quote

Итак, eth3 и eth4 получают IP посредством dhcpcd; NetworkManager удалён из rc (хотя с ним, вроде как, всё работало так же).

Cначала удаляем все дефалтные роуты:
Code:
ip route del default via 192.168.8.1 dev eth3 src 192.168.8.10
ip route del default via 192.168.9.2 dev eth4 src 192.168.9.20

затем вносим настойки, рекомендованные здесь https://multipath-tcp.org/pmwiki.php/Users/ConfigureRouting
Code:

# This creates two different routing tables, that we use based on the source-address.
ip rule add from 192.168.8.10 table 1
ip rule add from 192.168.9.20 table 2

# Configure the two different routing tables
ip route add 192.168.8.0/24 dev eth3 scope link table 1
ip route add default via 192.168.8.1 dev eth3 table 1

ip route add 192.168.9.0/24 dev eth4 scope link table 2
ip route add default via 192.168.9.2 dev eth4 table 2

# default route for the selection process of normal internet-traffic
ip route add default scope global nexthop via 192.168.8.1 dev eth3

Стоит отметить, что поскольку я баловался с http://lartc.org/howto/lartc.rpdb.multiple-links.html , то у меня уже созданы таблицы T1 и T2 с номерами 1 и 2 соответственно. Тоесть, все вышеперечисленные настройкисохранились в таблицы с названиями Т1 и Т2, а НЕ table 1, 2 как показано в примере настройки https://multipath-tcp.org/pmwiki.php/Users/ConfigureRouting

Далее запускаю пинг 8.8.8.8. Он идёт только через eth3. Вынимаем сим-карту чтобы упала связь на eth3 (сам линк с гентоо НЕ падает) и получаем просто Destination Network Unreachable. На работу с eth4 он переходит только если физически уронить eth3 (например командой ifconfig eth3 down или физически вынуть eth3).
Вот логи dcpdump:
eth3
https://paste.pound-python.org/show/UCvXDWhDtXiqhZT4wYuR/
eth4
https://paste.pound-python.org/show/QyfMCgkUos6l6jsNrhbt/
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Russian All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum