Как выполняется маршрутизация почты
Маршрутизацией почты на каждом сервере занимается задача Router. Алгоритм маршрутизации использует данные из документов Person, MailInDatabase, Server, Connections и Domain общей адресной книги.
Так как документы Server определяют все серверы в одном домене и все поименованные сети Notes, документы Connection описывают связи между всеми серверами, а общая адресная книга реплицируется между всеми серверами в домене, все серверы домена имеют полную информацию о топологии сети в пределах домена. Эту информацию можно представить в виде ориентированного графа. Вершины графа соответствуют имеющимся серверам, а дуги отражают возможные соединения между серверами для передачи почты.
Рассмотрим это на примере (Рис. 7.7). В границах домена имеется 10 серверов Notes с условными именами S1 - S10. Информация о них содержится в документах Server адресной книги домена. В документах Server имеются сведения о поименованных сетях Notes - группах серверов, использующих для общения один и тот же тип сетевого протокола и способных в любое время соединяться между собой напрямую. В нашем примере четыре поименованных сети. Двусторонние пунктирные дуги между всеми серверами в границах поименованных сетей как раз и отражают тот факт, что почта внутри поименованных сетей всегда передается посредством прямого соединения серверов. Никаких документов Connection для этого создавать не требуется. Напротив, соединения серверов из разных поименованных сетей для передачи почты должны описываться документами Connection. В нашем примере 8 "внутридоменных" документов Connection
для передачи почты: S1 ®
S6, S6 ® S1, S3 ® S4, S4 ® S3, S4 ® S10, S10 ® S4, S10 ® S7, S7 ® S10. Кроме того, имеется 2 "междоменных" документа Connection для передачи почты: S2 ® X1 и S9 ® X2. Для "внешних" серверов X1 и X2 документов Server в адресной книге домена нет. Наличие "внешних" серверов следует из самих документов Connection. Сведения о наличии FAX-сервера и двух агентов передачи почты тоже формально следуют из имеющихся в адресной книге документов, но в данный момент не имеет смысла разбираться с этим подробнее.
Таким образом, каждый сервер (точнее, Router) домена "полностью знает" топологию своего домена и "знает" о наличии и способе соединения с некоторыми серверами из других доменов, однако "не знает" полной топологии других доменов.
Рис. 7.7 "Почтовая" топология домена как ориентированный граф
Числа на дугах графа не что иное, как "стоимость соединения". Для пунктирных дуг будем считать стоимость соединения равной 1. Таким образом, мы имеем ориентированный граф с заданными стоимостями (или длинами) дуг, а значит можем решать на нем оптимизационную задачу по выбору маршрута наименьшей стоимости (наименьшей длины) для доставки сообщения с одного сервера на другой (между двумя наперед заданными вершинами графа).