Мое почтение всем! Не подскажет ли кто направление копания в такой задаче? Имеется: 1) 2 сервера на linux c 2 x ethernet 2) 2 управляемых свича с поддержкой link aggregation 802.3ad Нужно организовать "шибко надежный" ethernet для парочки серверов. Чтобы как при вылете порта, так и при вылете одного из свичей сетка продолжала работать, пускай и с меньшей скоростью. Можно ли link aggregation организовать на портах в разных свичах? Или нужно на уровне IP это разруливать (чего не хочется)? Заранее спасибо :) -- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
On Sun, Oct 03, 2010 at 11:52:12PM +0300, Michael Bochkaryov wrote: [dd]
Нужно организовать "шибко надежный" ethernet для парочки серверов. Чтобы как при вылете порта, так и при вылете одного из свичей сетка продолжала работать, пускай и с меньшей скоростью.
hint: У Cisco есть технология vPC (Virtual Port Channel). Думаю у конкуретнов есть аналоги.
Можно ли link aggregation организовать на портах в разных свичах? Или нужно на уровне IP это разруливать (чего не хочется)?
Если подходить к вопросу основательно - почитай про SCTP. В нем есть реализация резервирования на уровне транспортрного протокола.
Заранее спасибо :)
На самом деле вводных даных недостаточно. Если тебе нужна надежность и адекватное время изоляции неисправности - необходим heartbeat на уровне приложения. В любом другом случае слишком велика верхняя оценка для ситуации в которой проблема не обнаружена своевременно. -- ZA-RIPE||ZA1-UANIC
Как-то не видел просто так сгорающих портов - обычно это происходит из-за проблем с питанием, всякие умные вещи это конечно хорошо, но чем меньше умностей - тем надежней. Надо позаботиться о качественном питании, а в сервере может сгореть не только сетевуха. On Sun, Oct 03, 2010 at 11:52:12PM +0300, Michael Bochkaryov wrote:
Мое почтение всем!
Не подскажет ли кто направление копания в такой задаче?
Имеется: 1) 2 сервера на linux c 2 x ethernet 2) 2 управляемых свича с поддержкой link aggregation 802.3ad
Нужно организовать "шибко надежный" ethernet для парочки серверов. Чтобы как при вылете порта, так и при вылете одного из свичей сетка продолжала работать, пускай и с меньшей скоростью.
Можно ли link aggregation организовать на портах в разных свичах? Или нужно на уровне IP это разруливать (чего не хочется)?
Заранее спасибо :)
-- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
-- ------------------------------------------------------------------------------- Vasiliy P. Melnik VPM-RIPE, VPM-UANIC
Хм, bonding.txt из линуксведра вполне раскрывает эту тему
2) HA on two or more switches (or a single switch without trunking support)
---------------------------------------------------------------------------
This mode is more problematic because it relies on the fact that there
are multiple ports and the host's MAC address should be visible on one
port only to avoid confusing the switches.
If you need to know which interface is the active one, and which ones are
backup, use ifconfig. All backup interfaces have the NOARP flag set.
To use this mode, pass "mode=1" to the module at load time :
# modprobe bonding miimon=100 mode=1
Or, put in your /etc/modules.conf :
alias bond0 bonding
options bond0 miimon=100 mode=1
Example 1: Using multiple host and multiple switches to build a "no single
point of failure" solution.
| |
|port3 port3|
+-----+----+ +-----+----+
| |port7 ISL port7| |
| switch A +--------------------------+ switch B |
| +--------------------------+ |
| |port8 port8| |
+----++----+ +-----++---+
port2||port1 port1||port2
|| +-------+ ||
|+-------------+ host1 +---------------+|
| eth0 +-------+ eth1 |
| |
| +-------+ |
+--------------+ host2 +----------------+
eth0 +-------+ eth1
In this configuration, there are an ISL - Inter Switch Link (could be a trunk),
several servers (host1, host2 ...) attached to both switches each, and one or
more ports to the outside world (port3...). One an only one slave on each host
is active at a time, while all links are still monitored (the system can
detect a failure of active and backup links).
Each time a host changes its active interface, it sticks to the new one until
it goes down. In this example, the hosts are not too much affected by the
expiration time of the switches' forwarding tables.
If host1 and host2 have the same functionality and are used in load balancing
by another external mechanism, it is good to have host1's active interface
connected to one switch and host2's to the other. Such system will survive
a failure of a single host, cable, or switch. The worst thing that may happen
in the case of a switch failure is that half of the hosts will be temporarily
unreachable until the other switch expires its tables.
Example 2: Using multiple ethernet cards connected to a switch to configure
NIC failover (switch is not required to support trunking).
+----------+ +----------+
| |eth0 port1| |
| Host A +--------------------------+ switch |
| +--------------------------+ |
| |eth1 port2| |
+----------+ +----------+
On host A : On the switch :
# modprobe bonding miimon=100 mode=1 # (optional) minimize the time
# ifconfig bond0 addr # for table expiration
# ifenslave bond0 eth0 eth1
Each time the host changes its active interface, it sticks to the new one until
it goes down. In this example, the host is strongly affected by the expiration
time of the switch forwarding table.
3 октября 2010 г. 23:52 пользователь Michael Bochkaryov
Мое почтение всем!
Не подскажет ли кто направление копания в такой задаче?
Имеется: 1) 2 сервера на linux c 2 x ethernet 2) 2 управляемых свича с поддержкой link aggregation 802.3ad
Нужно организовать "шибко надежный" ethernet для парочки серверов. Чтобы как при вылете порта, так и при вылете одного из свичей сетка продолжала работать, пускай и с меньшей скоростью.
Можно ли link aggregation организовать на портах в разных свичах? Или нужно на уровне IP это разруливать (чего не хочется)?
Заранее спасибо :)
-- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
-- Yours, Max
2010/10/4 Andrey Zarechansky
On Sun, Oct 03, 2010 at 11:52:12PM +0300, Michael Bochkaryov wrote:
[dd]
Нужно организовать "шибко надежный" ethernet для парочки серверов. Чтобы как при вылете порта, так и при вылете одного из свичей сетка продолжала работать, пускай и с меньшей скоростью.
hint: У Cisco есть технология vPC (Virtual Port Channel). Думаю у конкуретнов есть аналоги.
Тут страшный зверь D-Link DGS-1210-24 (не стекируемый)
Можно ли link aggregation организовать на портах в разных свичах? Или нужно на уровне IP это разруливать (чего не хочется)?
Если подходить к вопросу основательно - почитай про SCTP. В нем есть реализация резервирования на уровне транспортрного протокола.
SCTP хорош, но мне не подходит - большая часть софта у меня про SCTP вообще не в курсе и масштаб проекта не тот.
Заранее спасибо :)
На самом деле вводных даных недостаточно. Если тебе нужна надежность и адекватное время изоляции неисправности - необходим heartbeat на уровне приложения. В любом другом случае слишком велика верхняя оценка для ситуации в которой проблема не обнаружена своевременно.
Собственно, по серверам heartbeat работает. Контролирует контейнеры OpenVZ, которые на DRBD сидят. Но остается риск сбоя сети, поверх которой это все живет. Link aggregation позволит вылет порта/кабеля пережить. А вот вылет свича приведет к split brain, который лечить обычно вручную приходится. -- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
Макисм, спасибо - bonding.txt я читал, как и LARTC.
А вот с современными свичами я знаком куда хуже
Как реализовать failover only - вроде бы достаточно понятно.
А вот что нужно, чтобы в нормальной ситуации были и HA,
и load balancing - пока не уверен, что знаю.
2010/10/4 Max Speransky
Хм, bonding.txt из линуксведра вполне раскрывает эту тему
2) HA on two or more switches (or a single switch without trunking support) --------------------------------------------------------------------------- This mode is more problematic because it relies on the fact that there are multiple ports and the host's MAC address should be visible on one port only to avoid confusing the switches.
If you need to know which interface is the active one, and which ones are backup, use ifconfig. All backup interfaces have the NOARP flag set.
To use this mode, pass "mode=1" to the module at load time :
# modprobe bonding miimon=100 mode=1
Or, put in your /etc/modules.conf :
alias bond0 bonding options bond0 miimon=100 mode=1
Example 1: Using multiple host and multiple switches to build a "no single point of failure" solution.
| | |port3 port3| +-----+----+ +-----+----+ | |port7 ISL port7| | | switch A +--------------------------+ switch B | | +--------------------------+ | | |port8 port8| | +----++----+ +-----++---+ port2||port1 port1||port2 || +-------+ || |+-------------+ host1 +---------------+| | eth0 +-------+ eth1 | | | | +-------+ | +--------------+ host2 +----------------+ eth0 +-------+ eth1
In this configuration, there are an ISL - Inter Switch Link (could be a trunk), several servers (host1, host2 ...) attached to both switches each, and one or more ports to the outside world (port3...). One an only one slave on each host is active at a time, while all links are still monitored (the system can detect a failure of active and backup links).
Each time a host changes its active interface, it sticks to the new one until it goes down. In this example, the hosts are not too much affected by the expiration time of the switches' forwarding tables.
If host1 and host2 have the same functionality and are used in load balancing by another external mechanism, it is good to have host1's active interface connected to one switch and host2's to the other. Such system will survive a failure of a single host, cable, or switch. The worst thing that may happen in the case of a switch failure is that half of the hosts will be temporarily unreachable until the other switch expires its tables.
Example 2: Using multiple ethernet cards connected to a switch to configure NIC failover (switch is not required to support trunking).
+----------+ +----------+ | |eth0 port1| | | Host A +--------------------------+ switch | | +--------------------------+ | | |eth1 port2| | +----------+ +----------+
On host A : On the switch : # modprobe bonding miimon=100 mode=1 # (optional) minimize the time # ifconfig bond0 addr # for table expiration # ifenslave bond0 eth0 eth1
Each time the host changes its active interface, it sticks to the new one until it goes down. In this example, the host is strongly affected by the expiration time of the switch forwarding table.
3 октября 2010 г. 23:52 пользователь Michael Bochkaryov
написал: Мое почтение всем!
Не подскажет ли кто направление копания в такой задаче?
Имеется: 1) 2 сервера на linux c 2 x ethernet 2) 2 управляемых свича с поддержкой link aggregation 802.3ad
Нужно организовать "шибко надежный" ethernet для парочки серверов. Чтобы как при вылете порта, так и при вылете одного из свичей сетка продолжала работать, пускай и с меньшей скоростью.
Можно ли link aggregation организовать на портах в разных свичах? Или нужно на уровне IP это разруливать (чего не хочется)?
Заранее спасибо :)
-- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
-- Yours, Max
-- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
привет
а сервера работают в режиме hot-standby или hot-hot? Для первого случая
простое решение - включить каждый сервер в свой свич (то есть не делать
перекрестных линков - это усложняет топологию) и failure detection делать на
уровне приложения. Если обнаруживается failure, то уцелевший сервер посылает
gratuitous ARP, вызывая немедленное обновление ARP/MAC таблиц на
ethernet-сегменте и IP-шлюзе. То есть время восстановления в основном
определяется временем failure detection между приложениями.
2010/10/3 Michael Bochkaryov
Мое почтение всем!
Не подскажет ли кто направление копания в такой задаче?
Имеется: 1) 2 сервера на linux c 2 x ethernet 2) 2 управляемых свича с поддержкой link aggregation 802.3ad
Нужно организовать "шибко надежный" ethernet для парочки серверов. Чтобы как при вылете порта, так и при вылете одного из свичей сетка продолжала работать, пускай и с меньшей скоростью.
Можно ли link aggregation организовать на портах в разных свичах? Или нужно на уровне IP это разруливать (чего не хочется)?
Заранее спасибо :)
-- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
-- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
On Mon, Oct 04, 2010 at 11:30:03AM +0300, Michael Bochkaryov wrote:
Макисм, спасибо - bonding.txt я читал, как и LARTC. А вот с современными свичами я знаком куда хуже
Как реализовать failover only - вроде бы достаточно понятно. А вот что нужно, чтобы в нормальной ситуации были и HA, и load balancing - пока не уверен, что знаю.
Одновременно и HA и load-balancing на разных свитчах не бывает (разве что свитчи шибко умные, понимающие всякий кластеринг и так далее, но это не твой случай). Так что сделай failover only и не мучайся :)
2010/10/4 Max Speransky
Хм, bonding.txt из линуксведра вполне раскрывает эту тему
2) HA on two or more switches (or a single switch without trunking support) --------------------------------------------------------------------------- This mode is more problematic because it relies on the fact that there are multiple ports and the host's MAC address should be visible on one port only to avoid confusing the switches.
If you need to know which interface is the active one, and which ones are backup, use ifconfig. All backup interfaces have the NOARP flag set.
To use this mode, pass "mode=1" to the module at load time :
# modprobe bonding miimon=100 mode=1
Or, put in your /etc/modules.conf :
alias bond0 bonding options bond0 miimon=100 mode=1
Example 1: Using multiple host and multiple switches to build a "no single point of failure" solution.
| | |port3 port3| +-----+----+ +-----+----+ | |port7 ISL port7| | | switch A +--------------------------+ switch B | | +--------------------------+ | | |port8 port8| | +----++----+ +-----++---+ port2||port1 port1||port2 || +-------+ || |+-------------+ host1 +---------------+| | eth0 +-------+ eth1 | | | | +-------+ | +--------------+ host2 +----------------+ eth0 +-------+ eth1
In this configuration, there are an ISL - Inter Switch Link (could be a trunk), several servers (host1, host2 ...) attached to both switches each, and one or more ports to the outside world (port3...). One an only one slave on each host is active at a time, while all links are still monitored (the system can detect a failure of active and backup links).
Each time a host changes its active interface, it sticks to the new one until it goes down. In this example, the hosts are not too much affected by the expiration time of the switches' forwarding tables.
If host1 and host2 have the same functionality and are used in load balancing by another external mechanism, it is good to have host1's active interface connected to one switch and host2's to the other. Such system will survive a failure of a single host, cable, or switch. The worst thing that may happen in the case of a switch failure is that half of the hosts will be temporarily unreachable until the other switch expires its tables.
Example 2: Using multiple ethernet cards connected to a switch to configure NIC failover (switch is not required to support trunking).
+----------+ +----------+ | |eth0 port1| | | Host A +--------------------------+ switch | | +--------------------------+ | | |eth1 port2| | +----------+ +----------+
On host A : On the switch : # modprobe bonding miimon=100 mode=1 # (optional) minimize the time # ifconfig bond0 addr # for table expiration # ifenslave bond0 eth0 eth1
Each time the host changes its active interface, it sticks to the new one until it goes down. In this example, the host is strongly affected by the expiration time of the switch forwarding table.
3 октября 2010 г. 23:52 пользователь Michael Bochkaryov
написал: > Мое почтение всем! > > Не подскажет ли кто направление копания в такой задаче? > > Имеется: > 1) 2 сервера на linux c 2 x ethernet > 2) 2 управляемых свича с поддержкой link aggregation 802.3ad > > Нужно организовать "шибко надежный" ethernet для парочки серверов. > Чтобы как при вылете порта, так и при вылете одного из свичей сетка > продолжала работать, пускай и с меньшей скоростью. > > Можно ли link aggregation организовать на портах в разных свичах? > Или нужно на уровне IP это разруливать (чего не хочется)? > > Заранее спасибо :) > > -- > Regards, > Michael Bochkaryov > Net.Style - VoIP and VAS development > www.netstyle.com.ua > > -- Yours, Max
-- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
-- In theory, there is no difference between theory and practice. But, in practice, there is.
Нет, на уровне приложений схема несколько отличается.
На серверах живут контейнеры OpenVZ с корнями на DRBD-шных разделах.
Это все (контейнеры и DRBD) контролирует heartbeat.
По дефолту контейнеры разбросаны между нодами.
Ежели одна нода вылетает - все переезжает на другую.
Проблема возникает, если вылетает не нода, а сетка между ними.
В результате возникает split brain, т.к. каждая нода считает, что
именно она является ведущей.
2010/10/4 Vladimir Litovka
привет
а сервера работают в режиме hot-standby или hot-hot? Для первого случая простое решение - включить каждый сервер в свой свич (то есть не делать перекрестных линков - это усложняет топологию) и failure detection делать на уровне приложения. Если обнаруживается failure, то уцелевший сервер посылает gratuitous ARP, вызывая немедленное обновление ARP/MAC таблиц на ethernet-сегменте и IP-шлюзе. То есть время восстановления в основном определяется временем failure detection между приложениями.
2010/10/3 Michael Bochkaryov
Мое почтение всем!
Не подскажет ли кто направление копания в такой задаче?
Имеется: 1) 2 сервера на linux c 2 x ethernet 2) 2 управляемых свича с поддержкой link aggregation 802.3ad
Нужно организовать "шибко надежный" ethernet для парочки серверов. Чтобы как при вылете порта, так и при вылете одного из свичей сетка продолжала работать, пускай и с меньшей скоростью.
Можно ли link aggregation организовать на портах в разных свичах? Или нужно на уровне IP это разруливать (чего не хочется)?
Заранее спасибо :)
-- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
-- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
-- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
2010/10/4 Alexandre Snarskii
On Mon, Oct 04, 2010 at 11:30:03AM +0300, Michael Bochkaryov wrote:
Макисм, спасибо - bonding.txt я читал, как и LARTC. А вот с современными свичами я знаком куда хуже
Как реализовать failover only - вроде бы достаточно понятно. А вот что нужно, чтобы в нормальной ситуации были и HA, и load balancing - пока не уверен, что знаю.
Одновременно и HA и load-balancing на разных свитчах не бывает (разве что свитчи шибко умные, понимающие всякий кластеринг и так далее, но это не твой случай).
А не подскажешь на будущее, куда посмотреть стоит? Слишком уж чайником себя с этой задачкой почувствовал :)
Так что сделай failover only и не мучайся :)
Убедил :)
2010/10/4 Max Speransky
Хм, bonding.txt из линуксведра вполне раскрывает эту тему
2) HA on two or more switches (or a single switch without trunking support)
---------------------------------------------------------------------------
This mode is more problematic because it relies on the fact that
there
are multiple ports and the host's MAC address should be visible on
one
port only to avoid confusing the switches.
If you need to know which interface is the active one, and which ones
are
backup, use ifconfig. All backup interfaces have the NOARP flag set.
To use this mode, pass "mode=1" to the module at load time :
# modprobe bonding miimon=100 mode=1
Or, put in your /etc/modules.conf :
alias bond0 bonding options bond0 miimon=100 mode=1
Example 1: Using multiple host and multiple switches to build a "no
single
point of failure" solution.
| | |port3 port3| +-----+----+ +-----+----+ | |port7 ISL port7| | | switch A +--------------------------+ switch B | | +--------------------------+ | | |port8 port8| | +----++----+ +-----++---+ port2||port1 port1||port2 || +-------+ || |+-------------+ host1 +---------------+| | eth0 +-------+ eth1 | | | | +-------+ | +--------------+ host2 +----------------+ eth0 +-------+ eth1
In this configuration, there are an ISL - Inter Switch Link (could be
a
trunk), several servers (host1, host2 ...) attached to both switches each,
and one
or more ports to the outside world (port3...). One an only one slave on
each
host is active at a time, while all links are still monitored (the system
can
detect a failure of active and backup links).
Each time a host changes its active interface, it sticks to the new
one
until it goes down. In this example, the hosts are not too much affected by
the
expiration time of the switches' forwarding tables.
If host1 and host2 have the same functionality and are used in load balancing by another external mechanism, it is good to have host1's active
interface
connected to one switch and host2's to the other. Such system will
survive
a failure of a single host, cable, or switch. The worst thing that
may
happen in the case of a switch failure is that half of the hosts will be temporarily unreachable until the other switch expires its tables.
Example 2: Using multiple ethernet cards connected to a switch to
configure
NIC failover (switch is not required to support trunking).
+----------+ +----------+ | |eth0 port1| | | Host A +--------------------------+ switch | | +--------------------------+ | | |eth1 port2| | +----------+ +----------+
On host A : On the switch : # modprobe bonding miimon=100 mode=1 # (optional) minimize
the time
# ifconfig bond0 addr # for table expiration # ifenslave bond0 eth0 eth1
Each time the host changes its active interface, it sticks to the new
one
until it goes down. In this example, the host is strongly affected by the expiration time of the switch forwarding table.
3 октября 2010 г. 23:52 пользователь Michael Bochkaryov
написал: > Мое почтение всем! > > Не подскажет ли кто направление копания в такой задаче? > > Имеется: > 1) 2 сервера на linux c 2 x ethernet > 2) 2 управляемых свича с поддержкой link aggregation 802.3ad > > Нужно организовать "шибко надежный" ethernet для парочки серверов. > Чтобы как при вылете порта, так и при вылете одного из свичей сетка > продолжала работать, пускай и с меньшей скоростью. > > Можно ли link aggregation организовать на портах в разных свичах? > Или нужно на уровне IP это разруливать (чего не хочется)? > > Заранее спасибо :) > > -- > Regards, > Michael Bochkaryov > Net.Style - VoIP and VAS development > www.netstyle.com.ua > > -- Yours, Max
-- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
-- In theory, there is no difference between theory and practice. But, in practice, there is.
-- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
Mon, Oct 04, 2010 at 14:08:49, misha wrote about "[uanog] Re: [uanog] [Q] Отказоустойчивость для LAN":
По дефолту контейнеры разбросаны между нодами. Ежели одна нода вылетает - все переезжает на другую.
Проблема возникает, если вылетает не нода, а сетка между ними. В результате возникает split brain, т.к. каждая нода считает, что именно она является ведущей.
Да, это неизбежно. http://en.wikipedia.org/wiki/CAP_theorem ты хочешь и C (нет дублей типа split brain) и A (от падения одной остальные живут) => значит, если P, то фигушки. Значит, дублировать и квадралировать:) связи, ибо другого выхода нет. P.S. Если бы ты знал, какими изуверскими извращениями мы в своём проекте пытаемся обеспечить, что при CA есть хоть какой-то смысл по P... Уже думали базы в darcs/аналог загонять и мержить коммиты по объединению... -netch-
On Mon, Oct 04, 2010 at 02:11:56PM +0300, Michael Bochkaryov wrote:
On Mon, Oct 04, 2010 at 11:30:03AM +0300, Michael Bochkaryov wrote: > Макисм, спасибо - bonding.txt я читал, как и LARTC. > А вот с современными свичами я знаком куда хуже > > Как реализовать failover only - вроде бы достаточно понятно. > А вот что нужно, чтобы в нормальной ситуации были и HA, > и load balancing - пока не уверен, что знаю.
Одновременно и HA и load-balancing на разных свитчах не бывает (разве что свитчи шибко умные, понимающие всякий кластеринг и так далее, но это не твой случай).
А не подскажешь на будущее, куда посмотреть стоит? Слишком уж чайником себя с этой задачкой почувствовал :)
Миш, тут нужно не столько читать, сколько помнить одну простую вещь - свитч, принявший пакет с некоего порта, "запоминает", что "этот src-mac живет здесь", и использует эту память для свитчинга следующих пакетов (в случае агрегата со стороны свитча запоминается, разумеется, не физический порт, а агрегат, которому он принадлежит)... В результате, если с одной стороны у тебя агрегат, а с другой - нет - получается веселая чехарда класса: linux посылает пакеты с одним и тем же src-mac'ом (ибо с его стороны это агрегат) то в один линк то в другой. И свитчи никак не могут понять - так куда же нужно пакеты для твоего linux'а отправлять - "напрямую" или "через соседа". Некоторые (которые поумнее) такой mac через какое-то время просто зануляют в Null0, другие просто начинают терять пакеты... -- In theory, there is no difference between theory and practice. But, in practice, there is.
2010/10/4 Valentin Nechayev
По дефолту контейнеры разбросаны между нодами. Ежели одна нода вылетает - все переезжает на другую.
Проблема возникает, если вылетает не нода, а сетка между ними. В результате возникает split brain, т.к. каждая нода считает, что именно она является ведущей.
Да, это неизбежно.
http://en.wikipedia.org/wiki/CAP_theorem
ты хочешь и C (нет дублей типа split brain) и A (от падения одной остальные живут) => значит, если P, то фигушки.
Значит, дублировать и квадралировать:) связи, ибо другого выхода нет.
Именно это я и хочу сделать. Т.к. в связях участвуют не только патч-корды, но и свичи, то их выход из строя также нужно предусмотреть. У меня в голове вот такая схемка нарисовалась (PNG в аттаче). [image: network-design-hw.png] Как уже подсказали, для решения с динамической агрегацией линков нужна поддержка стекирования свичей. В моем случае это не так, посему буду юзать failover bonding и один из портов на каждой физической ноде будет простаивать в ожидании трындеца. P.S. Если бы ты знал, какими изуверскими извращениями мы в своём проекте
пытаемся обеспечить, что при CA есть хоть какой-то смысл по P... Уже думали базы в darcs/аналог загонять и мержить коммиты по объединению...
У вас проект шибко страшного масштаба, так что извращения - ему под стать :-) -- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
2010/10/4 Michael Bochkaryov
[image: network-design-hw.png]
Как уже подсказали, для решения с динамической агрегацией линков нужна поддержка стекирования свичей.
В моем случае это не так, посему буду юзать failover bonding и один из портов на каждой физической ноде будет простаивать в ожидании трындеца.
а еще бывает так, что порт светит, но пакеты не свитчит. Шо тогда будешь делать? Вообще говоря, самое лучшее решение, которое можно применить - сделать IP-based failover. Поднять OSPF, можно даже закрутить таймеры и раутить/раутиться по состоянию сессии. Все остальное - костыли и обязательно найдется ситуация, при которой они не сработают. -- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
Вообще говоря, самое лучшее решение, которое можно применить - сделать IP-based failover. Поднять OSPF,
По правде говоря, я внимательно слежу за дискуссией, и чем-то она мне напоминает обсуждение вопроса о том, какую и как лучше взять отвертку, чтобы использовать её в качестве стамески ;) при том, что использовать просто стамеску и проще, и эффективнее, и не вступает в конфликт с техникой безопасности (в отличие от долбания дерева отверткой ;) Честно говоря, я сильно отстал от жизни, и лет 10 как не интересовался тонкими аспектами multipath routing в современных линуксах/бсд/солярисах. Знаю в цисках было. Но я собственно к чему. Аналогичные конструкции лет когда-то строить доводилось; делалось просто, яко железный лом: 2 свича это 2 независимых сегмента эзернет - итого "две шины" условно "правая" и "левая", сокр. R & L. У роутера 2 интерфейса тоже R и L. У каждого из ящиков тоже два - R & L. Мало одного роутера? ставим два, и у второго тоже R и L. Что происходит на уровне L2 эзернет-кадров - а неважно. Я для таких вещей только STP понимаю, чтобы кольца, ну и все его осмысленное применение имхо. А поверх конструкции с двумя "шинами" - R & L - напяливаем тривиальный OSPF (тогда еще был v.2). И все превосходнейше работало. Единственно что, multipath в *nix не было тогда, посему никаких load balancing - просто путем правки OSPF costs +\- 1 делалось так, что у первого ящика любимый маршрут - плечо R, у второго - плечо L. Ну и ниче, bandwidth хватало (а что сильно 100 Mbps не хватает кому? для чего?), и что характерно - даже на деревянных копеечных свичехабах работало. Важная оговорка: приложение на обоих ящиках биндится *исключительно* к ихним lo0 которые оба stub hosts иначе щастья не будет ;) а OSPF hello таймер ставится как угодно коротко, помнится при таймере 10 сек время от обрыва плеча до полного разворота составляло секунд 15 типа того. Что приятно - можно добавить третий параллельный сегмент (а хоть и четвертый) и тоже будет работать.
2010/10/4 Vladimir Litovka
2010/10/4 Michael Bochkaryov
[image: network-design-hw.png]
Как уже подсказали, для решения с динамической агрегацией линков нужна поддержка стекирования свичей.
В моем случае это не так, посему буду юзать failover bonding и один из портов на каждой физической ноде будет простаивать в ожидании трындеца.
а еще бывает так, что порт светит, но пакеты не свитчит. Шо тогда будешь делать?
Свич менять :-) Но, насколько я помню, при failover bonding не только состояние линка проверяется.
Вообще говоря, самое лучшее решение, которое можно применить - сделать IP-based failover. Поднять OSPF, можно даже закрутить таймеры и раутить/раутиться по состоянию сессии. Все остальное - костыли и обязательно найдется ситуация, при которой они не сработают.
А это не слишком ли сложно для одного сегмента IP-сети в одном VLAN? -- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
2010/10/5 Michael Bochkaryov
делать?
Свич менять :-)
А, то есть полчасика на замену свича - это допустимое время простоя? :)
Но, насколько я помню, при failover bonding не только состояние линка проверяется.
А что еще?
Вообще говоря, самое лучшее решение, которое можно применить - сделать IP-based failover. Поднять OSPF, можно даже закрутить таймеры и раутить/раутиться по состоянию сессии. Все остальное - костыли и обязательно найдется ситуация, при которой они не сработают.
А это не слишком ли сложно для одного сегмента IP-сети в одном VLAN?
А что в этом сложного? поставить кваггу и поднять раутинг? делов на 20 минут - мы уже дольше дискутируем вопрос :-) зато гарантированно будет работать. IMHO проверка целостности на уровне IP всегда надежнее и качественнее любой хоботни на эзернете. -- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
2010/10/5 Vladimir Litovka
2010/10/5 Michael Bochkaryov
а еще бывает так, что порт светит, но пакеты не свитчит. Шо тогда будешь
делать?
Свич менять :-)
А, то есть полчасика на замену свича - это допустимое время простоя? :)
Нет, но тем временем будет работать другой свич. А если они оба такие - тогда бить морду поставщику :-)
Но, насколько я помню, при failover bonding не только состояние линка проверяется.
А что еще?
Например, ARP - если свич не свитчит, то это будет заметно.
Вообще говоря, самое лучшее решение, которое можно применить - сделать IP-based failover. Поднять OSPF, можно даже закрутить таймеры и раутить/раутиться по состоянию сессии. Все остальное - костыли и обязательно найдется ситуация, при которой они не сработают.
А это не слишком ли сложно для одного сегмента IP-сети в одном VLAN?
А что в этом сложного? поставить кваггу и поднять раутинг? делов на 20 минут - мы уже дольше дискутируем вопрос :-) зато гарантированно будет работать. IMHO проверка целостности на уровне IP всегда надежнее и качественнее любой хоботни на эзернете.
Ну, пока жду появления второго свича, хотя бы возможные варианты выясню :-) -- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
Согласен ! Ф топку STP и прочий REP, делаем сходимость на ip :)
5 октября 2010 г. 11:25 пользователь Vladimir Litovka
2010/10/5 Michael Bochkaryov
а еще бывает так, что порт светит, но пакеты не свитчит. Шо тогда будешь делать?
Свич менять :-)
А, то есть полчасика на замену свича - это допустимое время простоя? :)
Но, насколько я помню, при failover bonding не только состояние линка проверяется.
А что еще?
Вообще говоря, самое лучшее решение, которое можно применить - сделать IP-based failover. Поднять OSPF, можно даже закрутить таймеры и раутить/раутиться по состоянию сессии. Все остальное - костыли и обязательно найдется ситуация, при которой они не сработают.
А это не слишком ли сложно для одного сегмента IP-сети в одном VLAN?
А что в этом сложного? поставить кваггу и поднять раутинг? делов на 20 минут - мы уже дольше дискутируем вопрос :-) зато гарантированно будет работать. IMHO проверка целостности на уровне IP всегда надежнее и качественнее любой хоботни на эзернете.
-- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
-- Yours, Max
2010/10/5 Michael Bochkaryov
Если своя к тому моменту уцелеет ;-)
Но, насколько я помню, при failover bonding не только состояние линка
проверяется.
А что еще?
Например, ARP - если свич не свитчит, то это будет заметно.
если свитчит, если не свитчит... а если у него лег порт в сторону шлюза? мы тут, конечно, мальчики умные и что-нибудь и придумаем в любом случае - можем VRRP поднять, можем сделать кластер свичей, можем ARP'ы посылать... :) потом - вылезет еще что-нибудь и опять что-нибудь придумаем :) только вот - а зачем? моё имхо остается прежним - нельзя на ethernet'е сделать end-to-end надежное решение. Сервис у тебя работает на каком уровне? IP? ну так и механизмы failover ему делай на этом же уровне -- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
2010/10/5 Vladimir Litovka
2010/10/5 Michael Bochkaryov
Но, насколько я помню, при failover bonding не только состояние линка
проверяется.
А что еще?
Например, ARP - если свич не свитчит, то это будет заметно.
если свитчит, если не свитчит... а если у него лег порт в сторону шлюза? мы тут, конечно, мальчики умные и что-нибудь и придумаем в любом случае - можем VRRP поднять, можем сделать кластер свичей, можем ARP'ы посылать... :) потом - вылезет еще что-нибудь и опять что-нибудь придумаем :) только вот - а зачем?
Меня доступность шлюза в этом случае волнует несколько меньше, чем отсутствие split brain'ов на DRBD, который в пределах одного сегмента ethernet живет. моё имхо остается прежним - нельзя на ethernet'е сделать end-to-end надежное
решение. Сервис у тебя работает на каком уровне? IP? ну так и механизмы failover ему делай на этом же уровне
Ну, усложнение схемы в общем случае надежность только понижает. Потому что появляются новые сущности, которые тоже могут сбоить :-) Но про возможность использования OSPF в моей схеме (2 хоста + 2 свича) я таки посмотрю... -- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
2010/10/5 Michael Bochkaryov
Потому что появляются новые сущности, которые тоже могут сбоить :-)
Тут такой момент - включая OSPF, ты можешь отказаться от сложных схем на L2. Так что непонятно, что окажется проще в конце-концов. -- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
2010/10/5 Vladimir Litovka
Ну, усложнение схемы в общем случае надежность только понижает.
Потому что появляются новые сущности, которые тоже могут сбоить :-)
Тут такой момент - включая OSPF, ты можешь отказаться от сложных схем на L2. Так что непонятно, что окажется проще в конце-концов.
/* Зато я добавляю сложную схему на L3 в очень простой сетке. Причем, ограничиваюсь строго IP и какой-нибудь AoE мне не светит. */ Если в моей схеме оставить только два свича и два сервера, где сплит брейны возможны и опасны, то получается такое: +------+ +------+ | |- eth0 ----- [Sw1] ----- eth0 -| | | HN-1 | | HN-2 | | |- eth1 ----- [Sw2] ----- eth1 -| | +------+ +------+ Я правильно понимаю, что нужно на обоих нодах ставить по квагге? Причем, инт-сы eth0 и eth1 посадить в разные подсетки (A и B), через которые раздавать маршруты к адресам (C и D), на которых собственно сервисы висят? -- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
Я бы попробовал так:
1) на обоих сетевых картах прописывает одинаковые MAC и IP
2) на свитчах и серверах включаем RSTP
Из необходимого, чтобы сервер умел одинаковые адреса и rstp.
Best wishes,
Maxim
2010/10/4 Michael Bochkaryov
2010/10/4 Valentin Nechayev
По дефолту контейнеры разбросаны между нодами. Ежели одна нода вылетает - все переезжает на другую.
Проблема возникает, если вылетает не нода, а сетка между ними. В результате возникает split brain, т.к. каждая нода считает, что именно она является ведущей.
Да, это неизбежно.
http://en.wikipedia.org/wiki/CAP_theorem
ты хочешь и C (нет дублей типа split brain) и A (от падения одной остальные живут) => значит, если P, то фигушки.
Значит, дублировать и квадралировать:) связи, ибо другого выхода нет.
Именно это я и хочу сделать. Т.к. в связях участвуют не только патч-корды, но и свичи, то их выход из строя также нужно предусмотреть.
У меня в голове вот такая схемка нарисовалась (PNG в аттаче).
[image: network-design-hw.png]
Как уже подсказали, для решения с динамической агрегацией линков нужна поддержка стекирования свичей.
В моем случае это не так, посему буду юзать failover bonding и один из портов на каждой физической ноде будет простаивать в ожидании трындеца.
P.S. Если бы ты знал, какими изуверскими извращениями мы в своём проекте
пытаемся обеспечить, что при CA есть хоть какой-то смысл по P... Уже думали базы в darcs/аналог загонять и мержить коммиты по объединению...
У вас проект шибко страшного масштаба, так что извращения - ему под стать :-)
-- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
Я правильно понимаю, что нужно на обоих нодах ставить по квагге?
или какой-либо другой routing agent почему непременно квагга
Причем, инт-сы eth0 и eth1 посадить в разные подсетки (A и B), через
да
которые раздавать маршруты к адресам (C и D), на которых собственно сервисы висят?
да
On Tue, Oct 05, 2010 at 12:47:37PM +0300, Michael Bochkaryov wrote:
моё имхо остается прежним - нельзя на ethernet'е сделать end-to-end надежное решение. Сервис у тебя работает на каком уровне? IP? ну так и механизмы failover ему делай на этом же уровне Ну, усложнение схемы в общем случае надежность только понижает. Потому что появляются новые сущности, которые тоже могут сбоить :-)
Ну так задублируй эти сущности ;) Например, поставь в параллель к quagga/ospf еще и openbgpd/bird и анонсируй loopback еще и через iBGP :) Или протяни между машинами третий линк - нульмодем между ком-портами, который сетевые проблемы не потревожат. Или держи данные не на DRBD а на супер-пупер-задублированном storage. Но в любом случае помни про такое золотое правило: дополнительная девятка в надежности - это, как правило, два дополнительных нуля в стоимости решения. -- In theory, there is no difference between theory and practice. But, in practice, there is.
2010/10/5 Michael Bochkaryov
Ну, усложнение схемы в общем случае надежность только понижает. Потому что появляются новые сущности, которые тоже могут сбоить :-)
Но про возможность использования OSPF в моей схеме (2 хоста + 2 свича) я таки посмотрю...
OSPF в квагге глючной. :-( -- VEL-[RIPE|UANIC]
2010/10/5 Michael Bochkaryov
где сплит брейны возможны и опасны, то получается такое:
+------+ +------+ | |- eth0 ----- [Sw1] ----- eth0 -| | | HN-1 | | HN-2 | | |- eth1 ----- [Sw2] ----- eth1 -| | +------+ +------+
Я правильно понимаю, что нужно на обоих нодах ставить по квагге? Причем, инт-сы eth0 и eth1 посадить в разные подсетки (A и B), через которые раздавать маршруты к адресам (C и D), на которых собственно сервисы висят?
Угу. В этом случае тебе совершенно по барабану, где именно себя плохо чувствуют свичи, как они настроены и на месте-ли их мозги. Что до глючной квагги - то есть еще Bird, вовсю тут обсуждаемый :) -- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
2010/10/5 Vladimir Velychko
2010/10/5 Michael Bochkaryov
: Ну, усложнение схемы в общем случае надежность только понижает. Потому что появляются новые сущности, которые тоже могут сбоить :-)
Но про возможность использования OSPF в моей схеме (2 хоста + 2 свича) я таки посмотрю...
OSPF в квагге глючной. :-(
На каждой машине BIRD или OpenBGPd с [e|i]BGP в сторону gateway L3 свитчей с поддержкой multipath. Получаеш per-flow load-balancing + state-less switchover. Схема легко масштабируется с 2-х серверов до N, где N - количество path, поддерживаемых ECMP и [i|e]BGP реализациями на gateway L3 свитчах. -- Regards, Volodymyr.
Привет
если время failover'а критично, то лучше OSPF или ISIS
2010/10/6 Volodymyr Yakovenko
2010/10/5 Vladimir Velychko
: 2010/10/5 Michael Bochkaryov
: Ну, усложнение схемы в общем случае надежность только понижает. Потому что появляются новые сущности, которые тоже могут сбоить :-)
Но про возможность использования OSPF в моей схеме (2 хоста + 2 свича) я таки посмотрю...
OSPF в квагге глючной. :-(
На каждой машине BIRD или OpenBGPd с [e|i]BGP в сторону gateway L3 свитчей с поддержкой multipath.
Получаеш per-flow load-balancing + state-less switchover.
Схема легко масштабируется с 2-х серверов до N, где N - количество path, поддерживаемых ECMP и [i|e]BGP реализациями на gateway L3 свитчах.
-- Regards, Volodymyr.
-- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
Володя, коллеги, ну какой BGP? BGP мееееедленный, он пока заметит, что линк упал, пока отреагирует... Тут именно OSPF оптимален by design да еще и с "поджатыми" таймерами (чтобы *быстро* реагировал на глюки сети). Да хоть и раз в 2 секунды поставь hello и пусть арбайтен себе, чай не 486-е процессоры нонче в тазиках, так и те справлялись ;) Глючный в квагге? да мало ли вменяемых реализаций. Помню на древних gated-ах OSPF превосходно работал. К слову гойворя, OSPF прекрасно справится и в варианте с предложенной выше "подпоркой" в виде PPP по RS-232 нуль-модему между компортами двух коробок. И ему сугубо все равно, что за свичи и что у них в мозгах и есть ли что-то вообще.
На каждой машине BIRD или OpenBGPd с [e|i]BGP в сторону gateway L3 свитчей с поддержкой multipath.
Получаеш per-flow load-balancing + state-less switchover.
Схема легко масштабируется с 2-х серверов до N, где N - количество path, поддерживаемых ECMP и [i|e]BGP реализациями на gateway L3 свитчах.
Вот это да, это красиво, но имхо для ситуации с N серверами в соседних стойках на 2 сегментах эзернета - это явный overkill aka из пушки по птичкам. С наилучшими, я
2010/10/5 Andrew Stesin
Володя, коллеги,
ну какой BGP? BGP мееееедленный, он пока заметит, что линк упал, пока отреагирует... Тут именно OSPF оптимален by design да еще и с "поджатыми" таймерами (чтобы *быстро* реагировал на глюки сети). Да хоть и раз в 2 секунды поставь hello и пусть арбайтен себе, чай не 486-е процессоры нонче в тазиках, так и те справлялись ;)
А что мешает в BGP подкрутить таймеры окромя религии? :-)
Глючный в квагге? да мало ли вменяемых реализаций. Помню на древних gated-ах OSPF превосходно работал.
Вменяемых - мало. Как это ни странно с вменяемыми бесплатными реализациями BGP сейчас проще чем с IGP. Ну и еще вопрос есть ли в наличии OSPF multipath или BGP multipath.
К слову гойворя, OSPF прекрасно справится и в варианте с предложенной выше "подпоркой" в виде PPP по RS-232 нуль-модему между компортами двух коробок. И ему сугубо все равно, что за свичи и что у них в мозгах и есть ли что-то вообще.
:-)
На каждой машине BIRD или OpenBGPd с [e|i]BGP в сторону gateway L3 свитчей с поддержкой multipath.
Получаеш per-flow load-balancing + state-less switchover.
Схема легко масштабируется с 2-х серверов до N, где N - количество path, поддерживаемых ECMP и [i|e]BGP реализациями на gateway L3 свитчах.
Вот это да, это красиво, но имхо для ситуации с N серверами в соседних стойках на 2 сегментах эзернета - это явный overkill aka из пушки по птичкам.
Ты знаеш, судя по тенденциям в индустрии BGP как метод анонсирования доступности shared IP сейчас любят поболее IGP. -- Regards, Volodymyr.
2010/10/6 Volodymyr Yakovenko
В BGP они, имхо, так не подкручиваются, до сабсеконд. -- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
2010/10/6 Vladimir Litovka
2010/10/6 Volodymyr Yakovenko
А что мешает в BGP подкрутить таймеры окромя религии? :-) В BGP они, имхо, так не подкручиваются, до сабсеконд.
Поправьте меня, если я ошибаюсь, но раз уж BGP работает поверх TCP/IP то в результате этого таймеры BGP не получится "закрутить" больше, чем позволяют настройки таймеров TCP/IP стека, а их трогать ээээ нежелательно.
2010/10/6 Volodymyr Yakovenko
Вменяемых - мало. Как это ни странно с вменяемыми бесплатными реализациями BGP сейчас проще чем с IGP.
Ну черт с ним, пусть мало, но есть же они.
Ну и еще вопрос есть ли в наличии OSPF multipath или BGP multipath.
Это существенно, но, смею предположить, не суть критично. Крайне маловероятно, что к этой конструкции будет столько обращений, чтобы даже один 100-мегабитный эзернет загрузить на 80%.
Вот это да, это красиво, но имхо для ситуации с N серверами в соседних стойках на 2 сегментах эзернета - это явный overkill aka из пушки по птичкам. Ты знаеш, судя по тенденциям в индустрии BGP как метод анонсирования доступности shared IP сейчас любят поболее IGP.
IMHO вопрос в скорости отработки failover, и рискну предположить, что нормальные IGP (RIP-у RIP! ;) отрабатывают раз в 10 оперативнее чем EGP. С наилучшими, я
On Wed, Oct 06, 2010 at 09:49:19AM +0300, Andrew Stesin wrote:
К слову гойворя, OSPF прекрасно справится и в варианте с предложенной выше "подпоркой" в виде PPP по RS-232 нуль-модему между компортами двух коробок. И ему сугубо все равно, что за свичи и что у них в мозгах и есть ли что-то вообще.
just comment: nullmodem предлагался вовсе не для ppp и даже не для ip-траффика. По нему умеет работать heartbeat с heartbeat'ом, в результате даже в случае проблем с ethernet-сетью split-brain не наступает. -- In theory, there is no difference between theory and practice. But, in practice, there is.
2010/10/6 Alexandre Snarskii
On Wed, Oct 06, 2010 at 09:49:19AM +0300, Andrew Stesin wrote:
К слову гойворя, OSPF прекрасно справится и в варианте с предложенной выше "подпоркой" в виде PPP по RS-232 нуль-модему между компортами двух коробок. И ему сугубо все равно, что за свичи и что у них в мозгах и есть ли что-то вообще.
just comment: nullmodem предлагался вовсе не для ppp и даже не для ip-траффика. По нему умеет работать heartbeat с heartbeat'ом, в результате даже в случае проблем с ethernet-сетью split-brain не наступает.
Саш, от такого количества компонент у меня уж split-brain наступил :-) Впрочем, твой комментарий насчет девяток в надежности и нулей в стоимости уже натолкнул меня на мысль, что проще свичи на стекируемые поменять. Для своей задачи я таки решил остановиться на linux bonding в failover режиме. Судя по отзывам, DRBD с обитанием на loopback интерфейсе не очень дружит. Да и стремно, сидя у черта на рогах, использовать технологии, знакомые только в теории. -- Regards, Michael Bochkaryov Net.Style - VoIP and VAS development www.netstyle.com.ua
RFCs и для BGP, и для OSPF задают значения таймеров в _секундах_ и
переопределить их на миллисекунды без изменений/дополнений к существующих
протоколам нельзя.
Если нужно определение падения линка "как в SDH", то я бы смотрел на BFD -
на него пару месяцев назад RFC вышел; правда авторы RFC из компании J и,
скорее всего, компания C умеет более "правильную" версию BFD ;)
Best wishes,
Maxim
2010/10/6 Vladimir Litovka
2010/10/6 Volodymyr Yakovenko
А что мешает в BGP подкрутить таймеры окромя религии? :-)
В BGP они, имхо, так не подкручиваются, до сабсеконд.
-- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
2010/10/6 Maxim Tuliuk
переопределить их на миллисекунды без изменений/дополнений к существующих протоколам нельзя.
У компании "С" реализованы милисекундные значения таймера. Например, Hello можно слать раз в 250мс. Также тюнятся таймеры обработки SPF database. Я игрался с этими вещами - у меня OSPF сходился за ~300ms. Вроде бы, у "J" это тоже можно сделать. Интересно, а можно на *nix _гарантировать_ такую дискретность? Если нужно определение падения линка "как в SDH", то я бы смотрел на BFD -
на него пару месяцев назад RFC вышел; правда авторы RFC из компании J и, скорее всего, компания C умеет более "правильную" версию BFD ;)
Та же проблема - можно на *nix гарантировать, что определенный процесс или thread будет получать управление с частотой, достаточной для посылки hello каждые 50ms? -- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
On Wed, Oct 06, 2010 at 05:08:20PM +0300, Vladimir Litovka wrote: [dd]
Та же проблема - можно на *nix гарантировать, что определенный процесс или thread будет получать управление с частотой, достаточной для посылки hello каждые 50ms?
Вендор J как раз и реализовал одним процессом: 1322 ?? S 55:51.90 /usr/sbin/ppmd -N -- ZA-RIPE||ZA1-UANIC
2010/10/6 Vladimir Litovka
2010/10/6 Maxim Tuliuk
RFCs и для BGP, и для OSPF задают значения таймеров в _секундах_ и переопределить их на миллисекунды без изменений/дополнений к существующих протоколам нельзя.
У компании "С" реализованы милисекундные значения таймера. Например, Hello можно слать раз в 250мс. Также тюнятся таймеры обработки SPF database. Я игрался с этими вещами - у меня OSPF сходился за ~300ms.
Время сходимости SPF зависит от размера и топологии сети. Обычно проблема не во времени сходимости IGP а во времени, которое уходит у control plane на обновление forwarding plane.
Вроде бы, у "J" это тоже можно сделать. Интересно, а можно на *nix _гарантировать_ такую дискретность?
JunOS суть по своей FreeBSD :-)
Если нужно определение падения линка "как в SDH", то я бы смотрел на BFD - на него пару месяцев назад RFC вышел; правда авторы RFC из компании J и, скорее всего, компания C умеет более "правильную" версию BFD ;)
Та же проблема - можно на *nix гарантировать, что определенный процесс или thread будет получать управление с частотой, достаточной для посылки hello каждые 50ms?
Упомянутый Зориком pmmd реализует в JunOS все hello-like heartbeats. Реализация - отдельная scheduling discipline процесса и приоритетная очередь для pmmd-originated траффика от RE к PFE. -- Regards, Volodymyr.
On Wed, Oct 06, 2010 at 05:33:30PM +0300, Andrey Zarechansky wrote:
On Wed, Oct 06, 2010 at 05:08:20PM +0300, Vladimir Litovka wrote: [dd]
Та же проблема - можно на *nix гарантировать, что определенный процесс или thread будет получать управление с частотой, достаточной для посылки hello каждые 50ms?
Вендор J как раз и реализовал одним процессом:
1322 ?? S 55:51.90 /usr/sbin/ppmd -N
Реализовать и гарантировать - всё же разные вещи. Банальный read retry SATA HDD/DVD, например, поставит раком половину ОС (Solaris с raidz2, в котором диск с 1400 ремапов порой конкретно тупит - похоже, диск в PIO mode слетает, хотя zpool status ничего плохого не показывает). Т.е. гарантировать "почти можно" на определённом наборе железа и софта - реализуемо в очень ограниченных масштабах. -- Best regards, Paul Arakelyan.
На рутере можно выставить все, что хочешь, но КАК один рутер C сообщит
другому рутеру С, что hello пакеты идут каждые 250 ms???
RFC 2328. A.3.2 The Hello packet
...
HelloInterval
The number of seconds between this router's Hello packets.
...
RouterDeadInterval
The number of seconds before declaring a silent router down.
...
Best wishes,
Maxim
2010/10/6 Vladimir Litovka
2010/10/6 Maxim Tuliuk
RFCs и для BGP, и для OSPF задают значения таймеров в _секундах_ и
переопределить их на миллисекунды без изменений/дополнений к существующих протоколам нельзя.
У компании "С" реализованы милисекундные значения таймера. Например, Hello можно слать раз в 250мс. Также тюнятся таймеры обработки SPF database. Я игрался с этими вещами - у меня OSPF сходился за ~300ms. Вроде бы, у "J" это тоже можно сделать. Интересно, а можно на *nix _гарантировать_ такую дискретность?
Если нужно определение падения линка "как в SDH", то я бы смотрел на BFD -
на него пару месяцев назад RFC вышел; правда авторы RFC из компании J и, скорее всего, компания C умеет более "правильную" версию BFD ;)
Та же проблема - можно на *nix гарантировать, что определенный процесс или thread будет получать управление с частотой, достаточной для посылки hello каждые 50ms?
-- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
2010/10/7 Paul Arakelyan
Вендор J как раз и реализовал одним процессом:
1322 ?? S 55:51.90 /usr/sbin/ppmd -N
JunOS суть по своей FreeBSD :-)
Реализовать и гарантировать - всё же разные вещи. Банальный read retry
SATA HDD/DVD, например, поставит раком половину ОС (Solaris с raidz2, в котором диск с 1400 ремапов порой конкретно тупит - похоже, диск в PIO mode слетает, хотя zpool status ничего плохого не показывает).
Т.е. гарантировать "почти можно" на определённом наборе железа и софта - реализуемо в очень ограниченных масштабах.
Паша, спасибо, исчерпывающий ответ. То есть можно сказать, что если сервер не укомплектован периферией (вплоть до netboot в RAM), то шансы успешно реализовать на нем OSPF fast convergence существенно возрастают - это так? -- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
2010/10/7 Maxim Tuliuk
другому рутеру С, что hello пакеты идут каждые 250 ms???
ручная настройка hello interval на обоих сторонах -- /doka ~~~~~~~~ http://doka-ua.blogspot.com/ http://omar-ha-em.blogspot.com/
On Thu, Oct 07, 2010 at 09:33:04AM +0300, Vladimir Litovka wrote:
2010/10/7 Paul Arakelyan
Реализовать и гарантировать - всё же разные вещи. Банальный read retry SATA HDD/DVD, например, поставит раком половину ОС (Solaris с raidz2, в котором диск с 1400 ремапов порой конкретно тупит - похоже, диск в PIO mode слетает, хотя zpool status ничего плохого не показывает).
Т.е. гарантировать "почти можно" на определённом наборе железа и софта - реализуемо в очень ограниченных масштабах.
Паша, спасибо, исчерпывающий ответ.
То есть можно сказать, что если сервер не укомплектован периферией (вплоть до netboot в RAM), то шансы успешно реализовать на нем OSPF fast convergence существенно возрастают - это так?
Да, если на нём ещё и не исполняется "хз что" впридачу. (Можно надеяться на шедулер, но в том же солярисе - чтение-запись с gzip'ed ZFS вгоняет в ступор 2 ядра запросто, с пингами как на луну, 4 - не помню, но тоже вполне загружаемо кажется. Мультимедиа при этом ваще лесом идёт). У меня есть "ХЗ что" - графики mrtg/rrdtool ;). Ещё "втуляние маршрутов в таблицы маршрутизации" - тоже процесс... И VPN там же, с компрессией :).Короче, нужен "controlled environment". Или костыли всякие, типа "проверим не пришло ли чего посреди пересчёта таблицы" (потоки наверно не совсем хорошо - ими шедулер рулит же). -- Best regards, Paul Arakelyan.
participants (12)
-
Alexandre Snarskii
-
Andrew Stesin
-
Andrey Zarechansky
-
Max Speransky
-
Maxim Tuliuk
-
Michael Bochkaryov
-
Paul Arakelyan
-
Valentin Nechayev
-
Vasiliy P. Melnik
-
Vladimir Litovka
-
Vladimir Velychko
-
Volodymyr Yakovenko