19550-1 (588097), страница 2

Файл №588097 19550-1 (Алгоритми маршрутизації в мережах) 2 страница19550-1 (588097) страница 22016-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

2) Якщо dist(P,N) >максимальної ціни проміжку, нічого.

3) Якщо є в PATHS, нічого.

d(N) повинне бути меншим ніж dist(P,N), або N не повинне бути в PATHS. За бажанням можна зробити додаткову перевірку чи є d(N) меншим за dist(P,N).

4) Якщо триплет в TENT, тоді:

a) Якщо x = dist(P,N) тоді {Adj(N)}:= {Adj(N)} U {Adj(P)}.

b) Якщо N – маршрутизатор або кінцева система OSI, і більше не існує суміжних вершин {Adj(M)}, то видалимо надлишкову вершину.

c) Якщо x < dist(P,N), нічого.

d) Якщо x > dist(P,N), видалити з TENT, та додати

5) Якщо не в TENT, додати в TENT.

Крок 2: Якщо TENT пустий, зупинитися. Інакше:

1) Знайти елемент

, з мінімальним x таким чином:

a)Якщо елемент залишився в TENT в списку для tentlength, вибрати цей елемент. Якщо в списку існує більше одного елементу, вибрати один з цих елементів для системи, що є псевдовершиною, вибрати ту, що не є псевдовершиною. Якщо більше нема елементів в списку для tentlength, збільшити tentlength і повторити Крок 2.

b)Видалити

з TENT.

c) Додати

в PATHS.

d) Якщо система тільки що додана в PATHS – кінцева система, то перейти в Крок 2. Інакше : перейти в Крок 1.

Позначення:

PATHS – представляє ациклічний граф найкоротших шляхів від системи S. Він представляється як набір триплетів , де N ідентифікатор системи. d(N) загальна відстань від N до S).

{Adj(N)} –набір працюючих сусідів S, що їх можна використати N. Якщо система є в PATHS, шляхи, що відповідають цьому місцю є найкоротшими.

TENT – список триплетів у вигляді , де N, d(N) та {Adj(N)} відповідають визначеним в PATHS.

TENT може бути інтуітивно представлений як місце системи в PATHS. Іншими словами, триплет в TENT говорить, що, якщо N є в PATHS, d(N) відповідає x, але N не може бути розміщене в PATHS поки не доведено, що не існує шляхів, коротших за x .

Так само в TENT значить, що якщо N є в PATHS, тоді d(N) буде дорівнювати x для маршрутів, що проходять через суміжну вершину A або через суміжну вершину B.

Запропоновано в реальній реалізації таблиці TENT проводити сортування за характеристикою d(N).

3. Висновки

Маршрутизаційні алгоритми реалізовані на різних типах мереж від локальних до глобальних. Широко розповсюдженим є демон Routed з дистриутиву університету Каліфорнії в Берклі він реалізований в протоколі RIP. Також велике значення мають реалізації алгоритму відкриття найкоротшого маршруту для подвійного середовища OSI та TCP/IP в плані знаходження маршрутів між інтер-автономними системами та маршрутизаторами TCP/IP архитектури.

Глоссарій

OSI – мережна модель, запропонована організацією по стандартизації ISO

IS – Interautonomous system – інтеравтономна система, система, що приймає участь в маршрутизації в моделі OSI

ES - End System-кінцева система, система, що не приймає участі в маршрутизації в моделі OSI

Router – маршрутизатор, об’єкт маршрутизації

Gateway – шлюз, система, що має декілька мережних інтерфейсів

RIP (Routing Information Protocol) – маршрутизаційний інформаційний протокол

OSPF (Open Shortest Path First) – Маршрутизаційний протокол відкриття найкоротшого шляху

Список литературы

C.L. Hedrick. Routing Information Protocol. RFC 1058 Jun-01-1988.

D. Waitzman, C.Partridge, S.E. Deering. Distance Vector Multicast Routing Protocol. RFC 1075 Nov-01-1988.

R.W. Callon. Use of OSI IS-IS for routing in TCP/IP and dual environments.

RFC 1195 Dec-01-1990.

P. Almquist, F. Kastenholz. Towards Requirements for IP Routers. RFC 1716 November 1994.

J. Moy. , OSPF Version 2. RFC 2178 July 1997.

A. Ballardie. Core Based Trees (CBT) Multicast Routing Architecture. RFC 2201September 1997.

Bellman, R. E., "Dynamic Programming", Princeton University Press, Princeton, N.J., 1957.

Bertsekas, D. P., and Gallaher, R. G., "Data Networks",Prentice-Hall, Englewood Cliffs, N.J., 1987.

Braden, R., and Postel, J., "Requirements for Internet Gateways", USC/Information Sciences Institute, RFC-1009, June 1987.

Boggs, D. R., Shoch, J. F., Taft, E. A., and Metcalfe, R. M.,"Pup: An Internetwork Architecture", IEEE Transactions on Communications, April 1980.

Clark, D. D., "Fault Isolation and Recovery," MIT-LCS, RFC-816, July 1982.

Xerox Corp., "Internet Transport Protocols", Xerox System Integration Standard XSIS 028112, December 1981.

Ford, L.R. Jr., and Fulkerson, D.R.,"Flows in Networks", Princeton University Press, Princeton, N.J., 1962.

"Intermediate System to Intermediate System Intra-Domain Routeing Exchange Protocol for use in Conjunction with the Protocol for Providing the Connectionless-mode Network Service (ISO 8473)", ISO DP 10589, February 1990.

"Protocol for Providing the Connectionless-Mode Network Service", ISO 8473, March 1987.

”End System to Intermediate System Routeing Exchange Protocol for Use in Conjunction with the Protocol for Providing the Connectionless-Mode Network Service (ISO 8473)", ISO 9542, March 1988.

Braden,R., and Postel,J., "Requirements for Internet Gateways", RFC 1009, June 1987.

Moy,J., "The OSPF Specification", RFC 1131, October 1989.

Postel,J., "Internetwork Protocol", RFC 791, September 1981.

Postel,J., "Internet Control Message Protocol", RFC 792, September 1981.

20. GOSIP Advanced Requirements Group, "Government Open Systems

Interconnection Profile (GOSIP) Version 2.0 [Final Text]", Federal Information Processing Standard, U.S. Department of Commerce, National Institute of Standards and Technology, Gaithersburg, MD, October 1990.

21. "Standard for Local Area Networks and Metropolitan Area Networks: Overview and Architecture of Network Standards",IEEE Standard 802.1a-1990.

Додаток

#include "defs.h"

#include "pathnames.h"

#ifdef sgi

#include "math.h"

#endif

#include

#include

#include

pid_t mypid;

naddr myaddr; /* system address */

char myname[MAXHOSTNAMELEN+1];

int supplier; /* supply or broadcast updates */

int supplier_set;

int ipforwarding = 1; /* kernel forwarding on */

int default_gateway; /* 1=advertise default */

int background = 1;

int ridhosts; /* 1=reduce host routes */

int mhome; /* 1=want multi-homed host route */

int advertise_mhome; /* 1=must continue adverising it */

int auth_ok = 1; /* 1=ignore auth if we do not care */

struct timeval epoch; /* when started */

struct timeval clk, prev_clk;

struct timeval now; /* current idea of time */

time_t now_stale;

time_t now_expire;

time_t now_garbage;

struct timeval next_bcast; /* next general broadcast */

struct timeval no_flash = {EPOCH+SUPPLY_INTERVAL}; /* inhibit flash update */

fd_set fdbits;

int sock_max;

int rip_sock = -1; /* RIP socket */

struct interface *rip_sock_mcast; /* current multicast interface */

int rt_sock; /* routing socket */

int rt_sock_seqno;

static int get_rip_sock(naddr, int);

static void timevalsub(struct timeval *, struct timeval *, struct timeval *);

int

main(int argc,

char *argv[])

{

int n, mib[4], off;

size_t len;

char *p, *q;

struct timeval wtime, t2;

time_t dt;

fd_set ibits;

naddr p_net, p_mask;

struct interface *ifp;

struct parm parm;

char *tracename = 0;

/* Some shells are badly broken and send SIGHUP to backgrounded

* processes.

*/

signal(SIGHUP, SIG_IGN);

openlog("routed", LOG_PID | LOG_ODELAY, LOG_DAEMON);

ftrace = stdout;

gettimeofday(&clk, 0);

prev_clk = clk;

epoch = clk;

epoch.tv_sec -= EPOCH;

now.tv_sec = EPOCH;

now_stale = EPOCH - STALE_TIME;

now_expire = EPOCH - EXPIRE_TIME;

now_garbage = EPOCH - GARBAGE_TIME;

wtime.tv_sec = 0;

(void)gethostname(myname, sizeof(myname)-1);

(void)gethost(myname, &myaddr);

while ((n = getopt(argc, argv, "sqdghmAtT:F:P:")) != -1) {

switch (n) {

case 's':

supplier = 1;

supplier_set = 1;

break;

case 'q':

supplier = 0;

supplier_set = 1;

break;

case 'd':

background = 0;

break;

case 'g':

bzero(&parm, sizeof(parm));

parm.parm_d_metric = 1;

p = check_parms(&parm);

if (p != 0)

msglog("bad -g: %s", p);

else

default_gateway = 1;

break;

case 'h': /* suppress extra host routes */

ridhosts = 1;

break;

case 'm': /* advertise host route */

mhome = 1; /* on multi-homed hosts */

break;

case 'A':

/* Ignore authentication if we do not care.

* Crazy as it is, that is what RFC 1723 requires.

*/

auth_ok = 0;

break;

case 't':

new_tracelevel++;

break;

case 'T':

tracename = optarg;

break;

case 'F': /* minimal routes for SLIP */

n = FAKE_METRIC;

p = strchr(optarg,',');

if (p && *p != '\0') {

n = (int)strtoul(p+1, &q, 0);

if (*q == '\0'

&& n <= HOPCNT_INFINITY-1

&& n >= 1)

*p = '\0';

}

if (!getnet(optarg, &p_net, &p_mask)) {

msglog("bad network; \"-F %s\"",

optarg);

break;

}

bzero(&parm, sizeof(parm));

parm.parm_net = p_net;

parm.parm_mask = p_mask;

parm.parm_d_metric = n;

p = check_parms(&parm);

if (p != 0)

msglog("bad -F: %s", p);

break;

case 'P':

/* handle arbirary, (usually) per-interface

* parameters.

*/

p = parse_parms(optarg, 0);

if (p != 0) {

if (strcasecmp(p,optarg))

msglog("%s in \"%s\"", p, optarg);

else

msglog("bad \"-P %s\"", optarg);

}

break;

default:

goto usage;

}

}

argc -= optind;

argv += optind;

if (tracename == 0 && argc >= 1) {

tracename = *argv++;

argc--;

}

if (tracename != 0 && tracename[0] == '\0')

goto usage;

if (argc != 0) {

usage:

logbad(0, "usage: routed [-sqdghmAt] [-T tracefile]"

" [-F net[/mask[,metric]]] [-P parms]");

}

if (geteuid() != 0)

logbad(0, "requires UID 0");

mib[0] = CTL_NET;

mib[1] = PF_INET;

mib[2] = IPPROTO_IP;

mib[3] = IPCTL_FORWARDING;

len = sizeof(ipforwarding);

if (sysctl(mib, 4, &ipforwarding, &len, 0, 0) < 0)

LOGERR("sysctl(IPCTL_FORWARDING)");

if (!ipforwarding) {

if (supplier)

msglog("-s incompatible with ipforwarding=0");

if (default_gateway) {

msglog("-g incompatible with ipforwarding=0");

default_gateway = 0;

}

supplier = 0;

supplier_set = 1;

}

if (default_gateway) {

if (supplier_set && !supplier) {

msglog("-g and -q incompatible");

} else {

supplier = 1;

supplier_set = 1;

}

}

signal(SIGALRM, sigalrm);

if (!background)

signal(SIGHUP, sigterm); /* SIGHUP fatal during debugging */

signal(SIGTERM, sigterm);

signal(SIGINT, sigterm);

signal(SIGUSR1, sigtrace_on);

signal(SIGUSR2, sigtrace_off);

/* get into the background */

#ifdef sgi

if (0 > _daemonize(background ? 0 : (_DF_NOCHDIR|_DF_NOFORK),

new_tracelevel == 0 ? -1 : STDOUT_FILENO,

new_tracelevel == 0 ? -1 : STDERR_FILENO,

-1))

BADERR(0, "_daemonize()");

#else

if (background && daemon(0, new_tracelevel) < 0)

BADERR(0,"daemon()");

#endif

mypid = getpid();

srandom((int)(clk.tv_sec ^ clk.tv_usec ^ mypid));

/* prepare socket connected to the kernel.

*/

rt_sock = socket(AF_ROUTE, SOCK_RAW, 0);

if (rt_sock < 0)

BADERR(1,"rt_sock = socket()");

if (fcntl(rt_sock, F_SETFL, O_NONBLOCK) == -1)

logbad(1, "fcntl(rt_sock) O_NONBLOCK: %s", strerror(errno));

off = 0;

if (setsockopt(rt_sock, SOL_SOCKET,SO_USELOOPBACK,

&off,sizeof(off)) < 0)

LOGERR("setsockopt(SO_USELOOPBACK,0)");

fix_select();

if (background && new_tracelevel == 0)

ftrace = 0;

if (tracename != 0) {

strncpy(inittracename, tracename, sizeof(inittracename)-1);

set_tracefile(inittracename, "%s\n", -1);

} else {

tracelevel_msg("%s\n", -1); /* turn on tracing to stdio */

}

bufinit();

/* initialize radix tree */

rtinit();

/* Pick a random part of the second for our output to minimize

* collisions.

Характеристики

Тип файла
Документ
Размер
115,63 Kb
Учебное заведение
Неизвестно

Список файлов ВКР

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6521
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее