Я хотел бы назначить любое количество IPv6-адресов хосту Debian 6, но я вижу следующий параметр и хочу знать, каковы последствия установки более высокого уровня, или этот параметр приближает ограничения, влияя на производительность системы.
net.ipv6.conf.eth0.max_addresses=16
Linode и некоторые другие сайты рекомендуют установить 32, если вам нужно больше адресов, назначенных одному интерфейсу, но почему 32? Могу ли я назначить 64, 128, 5000 IPv6-адресов, если захочу? Я делаю это, чтобы в определенной степени избежать хостинга на основе имен для веб-сервисов, чтобы я мог привязать каждый сайт к порту 80 на другом IP-адресе.
Могу ли я net.ipv6.conf.eth0.max_addresses=3000
? Почему или почему нет?
За счет оперативности и сложности по времени. По сути, это та же причина, по которой мы должны делать таблицы маршрутизации короткими (но на другом уровне), потому что для каждого полученного пакета системе необходимо пройти через всю таблицу маршрутизации в поисках совпадения, чтобы знать, как маршрутизировать этот пакет. Это приводит к среднему и худшему времени поиска O (n) для длины таблицы маршрутизации.
Адреса интерфейсов имеют ту же проблему с аналогичными последствиями. Интерфейсу, возможно, придется проверять тысячи пакетов в секунду, проходящих по кабелю, чтобы определить, какие из них предназначены для этого хоста. Самый простой способ: для каждого приходящего пакета сравнить его адрес назначения с каждым диапазоном адресов, назначенным этому интерфейсу. Обратите внимание, что это еще одна последовательная задача, требующая O (n) для каждого пакета, что означает: она требует времени обработки, потенциально много, если вам нужно обрабатывать тысячи пакетов в секунду.
И есть еще одна проблема: по мере того, как вы добавляете все больше и больше адресов в локальную ссылку, каждый новый адрес увеличивает память, требуемую для всех других хостов в ссылке, в их таблицах соседей (ARP). Это не большая проблема (ARP Proxy делает то же самое), но все же есть некоторое влияние на производительность всей локальной сети, о чем вы должны знать.
Это делает назначение большого количества адресов одному хосту не очень хорошей идеей. Достаточно консервативного ограничения, например 16 или 32, которое также напоминает администраторам об этих расходах.
Если вам нужно направить большое количество адресов на одну машину, вы должны создать подсеть. Выберите последовательные адреса внутри одной подсети и направьте всю подсеть на этот компьютер. Затем вы используете какую-либо форму внутренней маршрутизации или некоторые уловки iptables / route, чтобы выполнить всю работу внутри машины. Это в основном то, что мы делаем, когда размещаем множество виртуальных машин на одном физическом сервере.