WEBVTT 1 00:00:00.570 --> 00:00:01.660 Добро пожаловать. 2 00:00:01.660 --> 00:00:05.080 Мы продолжаем изучение истории программно-конфигурируемых сетей. 3 00:00:05.080 --> 00:00:08.000 На этом уроке мы поговорим про активные сети (Active Networks, AN). 4 00:00:08.000 --> 00:00:10.940 Мы поговорим о том, что такое активные сети, о причинах возникновения активных сетей, 5 00:00:10.940 --> 00:00:15.150 и о технологиях стоящих за ними 6 00:00:15.150 --> 00:00:19.290 Мы также поговорим о том, как связаны активные сети с программно-конфигурируемыми сетями (SDN). 7 00:00:19.290 --> 00:00:22.410 А также о том, что унаследовали SDN от AN. 8 00:00:23.770 --> 00:00:28.117 Напомню вам, что мы только что закончили урок по истории централизованного управления сетью, 9 00:00:28.117 --> 00:00:30.700 которое использовалось по крайней мере в 1980-х 10 00:00:30.700 --> 00:00:34.650 в пункте управления сетью компании АТ&Т 11 00:00:34.650 --> 00:00:38.300 Сегодны мы собираемся изучить причины появления программно-конфигуриремых сетей 12 00:00:38.300 --> 00:00:43.260 В частности, их истоки в проектах активных сетей в 1990-х 13 00:00:43.260 --> 00:00:45.670 И так, во-первых, что такое активные сети? 14 00:00:45.670 --> 00:00:48.600 Проще говоря, активные сети - это сети в которых коммутаторы выполняют 15 00:00:48.600 --> 00:00:52.700 определенные вычисления над сетевыми пакетами при их пересылке 16 00:00:53.750 --> 00:00:56.090 Несколько примеров, представьте, что один маршрутизатор 17 00:00:56.090 --> 00:00:58.625 или каждый маршрутизатор в сети совершает некоторые действия, 18 00:00:58.625 --> 00:01:00.510 обусловленные программой, 19 00:01:00.510 --> 00:01:03.780 с пакетами, которые проходят через маршрутизатор. 20 00:01:03.780 --> 00:01:07.290 Промежуточные устройства (middleboxes) - так же пример активных сетей. 21 00:01:07.290 --> 00:01:10.700 Устройства в сети, которые осуществляют функции межсетевого экрана, 22 00:01:10.700 --> 00:01:14.430 проксирования, прикладные функции и т.п. 23 00:01:14.430 --> 00:01:19.130 Это все вычислительные задачи, которые осуществляются над сетевыми данными в сети. 24 00:01:19.130 --> 00:01:22.890 И можно считать, что промежуточные устройства в нынешнее время и формируют активные сети 25 00:01:23.910 --> 00:01:25.290 Откуда появились активные сети? 26 00:01:25.290 --> 00:01:28.740 Ну, в середине 1990х годов, в исследовательском сообществе DARPA 27 00:01:28.740 --> 00:01:32.990 обсуждали различные проблемы, которые стояли перед сетями того времени 28 00:01:32.990 --> 00:01:35.566 В частности, они определили, что существует сложность 29 00:01:35.566 --> 00:01:38.610 с интеграцией новых технологий в сети. 30 00:01:38.610 --> 00:01:42.650 К тому же, иногда сети демонстрировали плохую производительность. 31 00:01:42.650 --> 00:01:46.200 Поэтому решено было переделать подходы к работе сети 32 00:01:46.200 --> 00:01:49.680 сразу на разных уровнях протокольного стека 33 00:01:49.680 --> 00:01:51.826 Так же было замечено, что сложно 34 00:01:51.826 --> 00:01:55.430 внедрять новые сетевые услуги по мере из разработки. 35 00:01:57.070 --> 00:02:00.820 Короче говоря, мотивацией для развития активных сетей было желание ускорить инновации. 36 00:02:00.820 --> 00:02:05.080 Замечено, что инновации требуют консенсуса 37 00:02:05.080 --> 00:02:09.553 И время, которое потребуется пройти от работающего прототипа, 38 00:02:09.553 --> 00:02:11.896 до окончательного внедрения технологии 39 00:02:11.896 --> 00:02:14.807 внедрения в реальных сетях 40 00:02:14.807 --> 00:02:16.582 может занимать десятиления, потому что требуется 41 00:02:16.582 --> 00:02:20.840 стандартизовать, организовать производство нового оборудования. 42 00:02:20.840 --> 00:02:22.640 И дальнейшая отладка и внедрение 43 00:02:22.640 --> 00:02:24.810 в работающих сетях может длиться буквально бесконечно. 44 00:02:26.380 --> 00:02:29.229 И если подобная мотивация кажется вам знакомой, 45 00:02:29.229 --> 00:02:32.780 Это потому, что развитие SDN имеет такюще мотивацию. 46 00:02:32.780 --> 00:02:38.084 Ускорение инноваций в существующих сетях, так что бы новые технологии могли 47 00:02:38.084 --> 00:02:44.170 внедрятся гораздо быстрее, без согласований, стандартизации и т.п. 48 00:02:44.170 --> 00:02:47.842 Итак, активные сети имеют такующе мотивацию и можно заметить, 49 00:02:47.842 --> 00:02:50.866 если вы можете поместить активные узлы в сеть, 50 00:02:50.866 --> 00:02:54.610 где маршрутизаторы могут скачать и реализовать новые услуги 51 00:02:54.610 --> 00:02:59.678 в существующей инфраструктуре - это позволяет внедрять инновации пользователям. 52 00:02:59.678 --> 00:03:03.620 Итак, основная идея в том, что сообщение или пакет могли бы нести 53 00:03:03.620 --> 00:03:08.480 не только данные, но и инструкции, что делать с этими данными. 54 00:03:08.480 --> 00:03:12.968 И эти активные маршрутизаторы, которые могут выполнять произвольные операции, 55 00:03:12.968 --> 00:03:16.860 могуть сосуществовать с традиционными, которые могут только пересылать пакеты. 56 00:03:18.410 --> 00:03:21.154 Каждый из этих программируемых коммутаторов, мог бы 57 00:03:21.154 --> 00:03:24.479 осуществлять дополнительную обработку, в дополнению к пересылке пакетов. 58 00:03:26.430 --> 00:03:29.052 Таким образом есть как потребность, так и производители, 59 00:03:29.052 --> 00:03:32.660 которые вместе делают активные сети востребованными в данный момент. 60 00:03:32.660 --> 00:03:34.431 С одной стороны, стороны спроса, 61 00:03:34.431 --> 00:03:39.282 распространение МСЭ, прокси, транскодеров и т.п. 62 00:03:39.282 --> 00:03:41.284 приводит к большому количеству специализированных решений, 63 00:03:41.284 --> 00:03:46.426 которые решают потребности пользователей в обработке пакетов. 64 00:03:46.426 --> 00:03:49.882 Проблематика или цель активных сетей 65 00:03:49.882 --> 00:03:53.790 заменить множество специфичных решений более универсальным. 66 00:03:55.140 --> 00:03:58.380 С другой стороны предложение от производителей. 67 00:03:58.380 --> 00:04:01.980 В свое время, было множество исследований 68 00:04:01.980 --> 00:04:05.650 и разработок для поддержки безопасного исполнения переносимого кода. 69 00:04:05.650 --> 00:04:10.720 В частности, появились Java апплеты и обеспечили возможность 70 00:04:11.738 --> 00:04:15.410 разрабатывать переносимый код, который бы работал в любом месте. 71 00:04:15.410 --> 00:04:18.538 И это позволило переносить ПО, 72 00:04:18.538 --> 00:04:23.400 что оказало поддержку для некоторых типов активных сетей. 73 00:04:24.850 --> 00:04:28.410 Так же разрабатывалась поддержка со стороны ОС. 74 00:04:28.410 --> 00:04:34.340 Scout OS созданная для подержки сетевых коммуникация. 75 00:04:34.340 --> 00:04:37.818 При создании были созданы новые технологии, 76 00:04:37.818 --> 00:04:41.444 позволяющие безопасный доступ к низкоуровневым ресурсам, и SPIN 77 00:04:41.444 --> 00:04:44.478 обеспечивающая доверенный код, или предоставляющая 78 00:04:44.478 --> 00:04:48.770 технологии, позволяющие создать доверенный код. 79 00:04:50.790 --> 00:04:53.140 Итак, есть два разных подхода к активным сетям. 80 00:04:53.140 --> 00:04:55.345 Первый несколько экстремальный, 81 00:04:55.345 --> 00:04:58.650 по сути, каждое сообщение или пакет фактически несет программу. 82 00:04:59.720 --> 00:05:03.100 И активные узлы сети, по пути следования 83 00:05:03.100 --> 00:05:05.770 исполняют код, которых находится в пакете. 84 00:05:05.770 --> 00:05:08.330 Т.е. код находящийся в пакете, 85 00:05:08.330 --> 00:05:10.962 будет запущен в среде исполнения, 86 00:05:10.962 --> 00:05:13.510 которая работотает на программируемом коммутаторе или маршрутизаторе. 87 00:05:14.620 --> 00:05:16.040 Чуть позже мы расмотрим капсулы 88 00:05:16.040 --> 00:05:18.156 более детально. 89 00:05:18.156 --> 00:05:24.930 Но есть другой подход, который выглядит более знакомым для нас. 90 00:05:24.930 --> 00:05:28.410 И он выглядит именно как подход CDN, вот в чем идея: 91 00:05:28.410 --> 00:05:32.870 Есть программируемые коммутаторы, которые при наличии установленных инструкций 92 00:05:32.870 --> 00:05:37.769 буду осуществлять операции по обработке пакетов 93 00:05:37.769 --> 00:05:42.210 в зависимости от содержимого заголовков пакетов. 94 00:05:42.210 --> 00:05:45.915 Т.е. по сути, пакет будет передан определенному коду, 95 00:05:45.915 --> 00:05:49.410 в зависимости от заголовка пакета. 96 00:05:49.410 --> 00:05:53.930 Да, это звучит гораздо более похоже на SDN, вы не ошибаетесь. 97 00:05:53.930 --> 00:05:57.310 Теперь давайте посмотрим на капсулы. 98 00:05:57.310 --> 00:06:03.110 Итак, капсулы фактически расширают существующий заголовок пакета. 99 00:06:03.110 --> 00:06:08.840 В добавок к обычному заголовку IP пакета с вашими данными, 100 00:06:08.840 --> 00:06:11.640 Есть еще заголовок AN, в данном случае заголовок ANTS. 101 00:06:11.640 --> 00:06:13.944 Он был разработан в МТИ 102 00:06:13.944 --> 00:06:16.930 и этот заголовок фаткически имел несколько дополнительных полей. 103 00:06:16.930 --> 00:06:19.860 Одно было поле типа, которое определяло инструкцию 104 00:06:19.860 --> 00:06:23.120 для исполнения в конкретном коде, 105 00:06:23.120 --> 00:06:26.565 Предыдущий адрес, он обозначал узел, где взять инструкцию, 106 00:06:26.565 --> 00:06:31.050 если ее нет на текущем узле. 107 00:06:31.050 --> 00:06:33.750 Поля с аргументами позволяют пакету передать параметры 108 00:06:33.750 --> 00:06:36.290 в исполняемый код, и в конце, конечно, собственно сами полезные данные. 109 00:06:38.150 --> 00:06:40.580 Итак, некоторые наиболее заметные проекты в области AN 110 00:06:40.580 --> 00:06:42.600 Один из них был ANTS, который мы рассмотрели только что 111 00:06:42.600 --> 00:06:44.560 И он фактически использовал подход капсул в пакете, 112 00:06:44.560 --> 00:06:47.950 которые должны были содержать фактически Java программы 113 00:06:47.950 --> 00:06:49.800 внутри пакетов. 114 00:06:49.800 --> 00:06:54.280 Естественно, это создало ограничения для обеспечения QoS 115 00:06:54.280 --> 00:06:57.570 и для решения этого университет Аризоны 116 00:06:57.570 --> 00:07:01.420 создал нечто названое Joust JVM, 117 00:07:01.420 --> 00:07:07.140 которая обеспечивала лучшую производительность для сценариев AN. 118 00:07:07.140 --> 00:07:09.028 Еще была программа Switchware 119 00:07:09.028 --> 00:07:11.447 в университете Пенсильвании, по разработке программируемого коммутатора 120 00:07:11.447 --> 00:07:16.170 и скриптового языка, поддерживающего вызовы свитчлетов. 121 00:07:16.170 --> 00:07:19.590 Проект Smart Packets в BBN, нацеленный 122 00:07:19.590 --> 00:07:23.810 на применении подхода AN к проблемам eghfdktybz ctnzvb/ 123 00:07:23.810 --> 00:07:29.064 Open Signalling в Колумбийском университете разработали язык NetScript 124 00:07:29.064 --> 00:07:32.394 который позволял разработчикам создавать процедуры обработки данных 125 00:07:32.394 --> 00:07:36.370 и описывать конвееры для обратоки потоков данных. 126 00:07:36.370 --> 00:07:40.144 Позже в курсе мы рассмотрим некоторые современные программируемые 127 00:07:40.144 --> 00:07:43.890 плоскости коммутации, которые похожи на Open Signalling 128 00:07:45.230 --> 00:07:48.080 И наконец проект Tempest из Кембриджа, где изобрели нечто 129 00:07:48.080 --> 00:07:52.720 названное свитчлеты, являвшимися программируемыми виртуальными коммутаторами 130 00:07:52.720 --> 00:07:56.250 И мы рассмотрим их подробнее на следующей лекции. 131 00:07:57.400 --> 00:07:59.180 Итак, что же случилось с активными сетями? 132 00:07:59.180 --> 00:08:03.870 Эта тезнология появилась почти 20 лет назад. 133 00:08:03.870 --> 00:08:06.890 Почему хотя бы некоторые из этих идей до сих пор не реализованы? 134 00:08:07.890 --> 00:08:10.420 Ну, во-первых - они появились не вовремя. 135 00:08:10.420 --> 00:08:11.638 В то время не было 136 00:08:11.638 --> 00:08:14.950 понятного применения для этого типа программирования. 137 00:08:14.950 --> 00:08:19.108 Как оказалось, и мы увидим это в рамках курса, 138 00:08:19.108 --> 00:08:23.670 одно из самых востребованных применений для SDN это ЦОД и облака. 139 00:08:23.670 --> 00:08:25.210 Но в то время 140 00:08:25.210 --> 00:08:27.030 ЦОД и облаков просто не было. 141 00:08:27.030 --> 00:08:32.610 Таким образом не было понятного применения для активных сетей. 142 00:08:32.610 --> 00:08:34.990 Как минимум не было ближайшей перспективе. 143 00:08:34.990 --> 00:08:37.130 В добавок, аппаратная поддержка не дешева, 144 00:08:37.130 --> 00:08:39.890 Все используют специальные интегральные схемы (ASIC) для поддержки таких технологий. 145 00:08:39.890 --> 00:08:45.430 Сейчас есть больший выбор для реализации программируемой плоскости коммутации, 146 00:08:45.430 --> 00:08:49.830 такой как TCAM, ПЛИС. Но есть и ложные шаги. 147 00:08:49.830 --> 00:08:53.834 Например, много внимания уделяется безопасности, создаются специальные языки 148 00:08:53.834 --> 00:08:59.250 для генерации безпасного кода, обсуждаются пакеты, которые содержат код и т.п. 149 00:08:59.250 --> 00:09:02.631 И может быть длишком фокусируются на этом, вместо общей концепции 150 00:09:02.631 --> 00:09:08.210 или главной цели - как мы сделаем сеть программируемой? 151 00:09:08.210 --> 00:09:11.632 Будет ли это сделано за счет капсул или наоборот, 152 00:09:11.632 --> 00:09:14.523 за счет программируемого коммутатора, это менее важно, чем 153 00:09:14.523 --> 00:09:19.450 Просто обеспечение программируемости, гибкости в инфраструктуре. 154 00:09:19.450 --> 00:09:22.390 Так же слишком много внимание уделяется 155 00:09:22.390 --> 00:09:25.501 пользователям, как вы и я, сидящими за своими компьютерами, 156 00:09:25.501 --> 00:09:29.010 или домашними компютерами, как программистам. 157 00:09:30.188 --> 00:09:33.114 в отличии от этого в идее SDN программистом видится администратор сети, 158 00:09:33.114 --> 00:09:37.870 или администратор сетевой услуги. 159 00:09:37.870 --> 00:09:42.240 Те люди, которые внедряют новые техзнологии в сети. 160 00:09:43.740 --> 00:09:44.940 И наконец, очень много внимания уделяется 161 00:09:44.940 --> 00:09:49.830 совместимости с нынешними реализациями и внедрениями. 162 00:09:49.830 --> 00:09:53.670 В отличии от этого OpenFlow отбросил это. 163 00:09:53.670 --> 00:09:55.439 Они проделали отличную работу 164 00:09:55.439 --> 00:10:00.020 по обеспечению обратной совместимости с железом имеющихся коммутаторов. 165 00:10:00.020 --> 00:10:03.125 Это фактически 166 00:10:03.125 --> 00:10:08.110 просто обновление ПО, для поддержки OpenFlow в существующих коммутаторах. 167 00:10:08.110 --> 00:10:11.851 И мноество аппаратных платформ уже 168 00:10:11.851 --> 00:10:16.249 поддерживают базовые операции специфицированные OpenFlow. 169 00:10:18.140 --> 00:10:20.310 Итак, давайте на минутку поразмышляем 170 00:10:20.310 --> 00:10:22.800 о влиянии активных сетей на SDN. 171 00:10:22.800 --> 00:10:25.791 Какие уроки мы можем извлечть из идеи активных сетей? 172 00:10:25.791 --> 00:10:27.996 Ну во-первых, была идея 173 00:10:27.996 --> 00:10:32.380 программирования функционала сети для развития инноваций. 174 00:10:32.380 --> 00:10:34.790 Постановка задачи, или мотивация, 175 00:10:34.790 --> 00:10:36.973 практически такая же как в SDN, 176 00:10:36.973 --> 00:10:39.320 и истоки ведут к активным сетям. 177 00:10:39.320 --> 00:10:45.340 Во-вторых, была идея программируемого коммутатора, 178 00:10:45.340 --> 00:10:51.260 который иммет код, или который может быть в него установлен. 179 00:10:51.260 --> 00:10:54.160 И тогда пакеты или данные заголовка 180 00:10:54.160 --> 00:10:58.780 определяют эти пакеты будут обработаны соответствующим кодом. 181 00:10:58.780 --> 00:11:02.685 Эта идея фактичеки выросла из концепии активных сетей и мы встречаем ее 182 00:11:02.685 --> 00:11:07.910 снова и снова, и снова, в таких проектах как Planetlab, Flowvisor, GENI. 183 00:11:07.910 --> 00:11:13.382 Даже сейчас, весь мир обсуждает как обединить SDN и промежуточными узлами. 184 00:11:13.382 --> 00:11:17.429 Это все имеет корни из идей пришедших из концепции активных сетей. 185 00:11:18.880 --> 00:11:22.110 Напоследок, еще одно замечание про промежуточные узлы. 186 00:11:22.110 --> 00:11:25.890 Очень важно, что идея активных сетей уделяла много внимания промежуточным узлам. 187 00:11:25.890 --> 00:11:28.968 Одна из задач активных сетей была в развитии 188 00:11:28.968 --> 00:11:33.460 различных типов промежуточных узлов и видение универсальной архитектуры. 189 00:11:33.460 --> 00:11:35.590 И сейчас мы видим то же видение 190 00:11:35.590 --> 00:11:39.250 реализуемое в разных SDN проектах 191 00:11:39.250 --> 00:11:42.925 И, возможно, важно оглянуться назад, 192 00:11:42.925 --> 00:11:46.300 обратить внимание на некоторые работы в области AN, что бы убедиться 193 00:11:46.300 --> 00:11:49.450 может ли полученый опыт 194 00:11:49.450 --> 00:11:54.110 быть использован для интеграции SDN с промежуточными узлами.