Мутант-переросток, часть II
Я, конечно, маханул вчера, когда сказал, что ASIC, делающий MPLS
forwarding, так же прост, как ASIC, делающий ethernet forwarding.
MPLS'ный LSR (label switching router) умеет делать три операции:
* label push - добавить одну или несколько меток к пакету, который уже имеет какие-то метки или нет;
* label swap - заменить верхнюю метку стека на другую
* label pop - убрать метку или несколько сверху стека.
Ну и после этого уменьшить TTL и перекинуть пакет в нужный интерфейс.
Ethernet'ный switch, особенно в рамках архитектуры PBT, туп необычайно. Он умеет только сделать lookup в своих таблицах и выплюнуть фрейм в нужный провод, ничего во фрейме не меняя. Lookup там 60-битный: VID (Vlan Id) - 12 бит, DA (Destination Address) - 48 бит.
На границах PBT домена должна происходить инкапсуляция и декапсуляция клиентского фрейма (или Q-in-Q фрейма - без разницы) в MAC-in-MAC фрейм, что добавляет требований к интеллекту граничных свитчей.
К слову, поскольку промежуточные свитчи в PBT-домене не добавляют и не убавляют заголовков, и декапсуляцию MAC-in-MAC выполняет именно конечный свитч, то этот свитч обязан посмотреть на фрейм дважды: когда он пришел в виде MAC-in-MAC виде, а потом еще раз на декапсулированный клиентский фрейм, чтобы понять в какой из клиентских портов его передавать. Это означает, что там должен быть реализован либо честный двойной lookup, либо двойной lookup через рециркуляцию. Что либо усложняет логику, либо бьет по производительности.
Но сказанное не меняет моего тезиса. MPLS форвардинг несколько сложнее, но основная сложность не в нем, а в control/maganement plane. И даже на forwarding plane принятие решения о выходящем интерфейсе - не самое трудное, тот же queueing, например, - штука тонкая и сложная, а реализовывать его придется все равно.
Часть III будет после обеда.
This entry was originally posted in my livejournal
MPLS'ный LSR (label switching router) умеет делать три операции:
* label push - добавить одну или несколько меток к пакету, который уже имеет какие-то метки или нет;
* label swap - заменить верхнюю метку стека на другую
* label pop - убрать метку или несколько сверху стека.
Ну и после этого уменьшить TTL и перекинуть пакет в нужный интерфейс.
Ethernet'ный switch, особенно в рамках архитектуры PBT, туп необычайно. Он умеет только сделать lookup в своих таблицах и выплюнуть фрейм в нужный провод, ничего во фрейме не меняя. Lookup там 60-битный: VID (Vlan Id) - 12 бит, DA (Destination Address) - 48 бит.
На границах PBT домена должна происходить инкапсуляция и декапсуляция клиентского фрейма (или Q-in-Q фрейма - без разницы) в MAC-in-MAC фрейм, что добавляет требований к интеллекту граничных свитчей.
К слову, поскольку промежуточные свитчи в PBT-домене не добавляют и не убавляют заголовков, и декапсуляцию MAC-in-MAC выполняет именно конечный свитч, то этот свитч обязан посмотреть на фрейм дважды: когда он пришел в виде MAC-in-MAC виде, а потом еще раз на декапсулированный клиентский фрейм, чтобы понять в какой из клиентских портов его передавать. Это означает, что там должен быть реализован либо честный двойной lookup, либо двойной lookup через рециркуляцию. Что либо усложняет логику, либо бьет по производительности.
Но сказанное не меняет моего тезиса. MPLS форвардинг несколько сложнее, но основная сложность не в нем, а в control/maganement plane. И даже на forwarding plane принятие решения о выходящем интерфейсе - не самое трудное, тот же queueing, например, - штука тонкая и сложная, а реализовывать его придется все равно.
Часть III будет после обеда.
This entry was originally posted in my livejournal
0 TrackBacks
Listed below are links to blogs that reference this entry: Мутант-переросток, часть II.
TrackBack URL for this entry: http://net-geek.org/cgi-bin/mt/mt-tb.cgi/50