Интегрированные сети ISDN

         

Предопределенные типы аргументов



Рисунок .26. Предопределенные типы аргументов

За целочисленными и действительными предопределенными типами могут следовать младшие или старшие секции, которые позволяют специфицировать набор допустимых значений аргумента. Спецификация диапазона является опционной. Для представления целых действительных значений и символьных строк используется нотация языка Си (ANSI). За типом enum следует список имен RPSL, которые являются значениями данного типа. Булев тип может принимать значение true или false. as_number, ipv4_address, address_prefix и dns_name типы имеют те же значения, что типы фильтра (раздел 2) и фильтры политики (раздел 6). Значения фильтра следует помещать в скобки.

Синтаксис типа union имеет следующий вид:

union <type-1>, ... , <type-N>

где <type-i> является типом RPSL. Тип union может иметь тип в интервале от <type-1> до <type-N>.

Синтаксис списочного типа приведен ниже:

list [<min_elems>:<max_elems>] of <type>

В этом случае элементы списка представляют <type>, а список содержит по крайней мере <min_elems> элементов, но не больше чем <max_elems>>. Размер спецификации является опционным. Если спецификация отсутствует, то никаких регламентаций на число элементов в списке не накладывается. Значение списочного типа представляется в виде последовательности элементов, разделенных символом запятой "," и заключенных в фигурные скобки "{" и "}". Атрибут typedef в словаре определяет именованный тип следующим образом:

typedef: <name> <type>

где <name> - имя типа <type>. Атрибут typedef является особенно полезным, когда тип не является предопределенным (напр., список объединений [union], список списков и т.д.). Атрибут класса словаря protocol определяет протокол и набор параметров пиринга для этого протокола, которые используются в классе inet-rtr (раздел 9). Его синтаксис представлен ниже:



protocol: <name>
MANDATORY | OPTIONAL <parameter-1>(
<type-1-N1> [,"..."])
...
MANDATORY | OPTIONAL <parameter-M>( <type-M-1>,...,
<type-M-NM> [,"..."])
<
/p> где представляет собой имя протокола, MANDATORY и OPTIONAL являются ключевыми словами, а <parameter-i> - пиринг-параметр протокола, использующий Ni аргументов. Синтаксис и семантика аргументов та же, что и для rp-атрибута. Если используется ключевое слово MANDATORY, параметр является обязательным и должен быть специфицирован для каждого пиринга этого протокола. Если применено ключевое слово OPTIONAL, параметр может быть опущен.



7.1. Исходный словарь RPSL, пример действий политики и фильтры



dictionary: RPSL

rp-attribute: # меньшие значения соответствуют более высокому предпочтению pref

operator=(integer[0, 65535])
rp-attribute: # атрибут BGP multi_exit_discriminator

med
# установить med равным 10: med = 10;
# установить med метрике IGP: med = igp_cost;
operator=(union integer[0, 65535], enum[igp_cost])
rp-attribute: # атрибут предпочтения места назначения BGP (dpa)

dpa
operator=(integer[0, 65535])
rp-attribute: # атрибут BGP aspath

aspath
# prepends AS numbers from last to first order
prepend(as_number, ...)
typedef: # значение community в RPSL равно:

# - 4-байтовому целому (ok to use 3561:70 notation)
# - internet, no_export, no_advertise (смотри RFC-1997)
community_elm union
integer[1, 4294967295],
enum[internet, no_export, no_advertise],
typedef: # список значений community { 40, no_export, 3561:70 }

community_list list of community_elm
rp-attribute: # атрибут BGP community

community
# set to a list of communities
operator=(community_list)
# добавить значения community
operator.=(community_list)
append(community_elm, ...)
# удалить значения community
delete(community_elm, ...)
# фильтр: true если содержится одно из значений community
contains(community_elm, ...)
# shortcut to contains: community(no_export, 3561:70)
operator()(community_elm, ...)
# сравнение равенства, независящее от порядка
operator==(community_list)
rp-attribute: # следующий маршрутизатор в статическом маршруте next-hop
  # установить равным 7.7.7.7: next-hop = 7.7.7.7;
# установить собственный адрес маршрутизатора: next-hop = self;
  operator=(union ipv4_address, enum[self])
rp-attribute: # цена статического маршрута cost
<


/p>
operator=(integer[0, 65535])
protocol: BGP4
  # номер AS маршрутизатора партнера
  MANDATORY asno(as_number)
  # разрешить гашение осцилляций маршрута
  OPTIONAL flap_damp()
  OPTIONAL flap_damp(integer[0,65535],
  # penalty per flap
  integer[0,65535],
  # penalty value for supression
  integer[0,65535],
  # penalty value for reuse
  integer[0,65535],
  # halflife in secs when up
  integer[0,65535],
  # halflife in secs when down
  integer[0,65535])
  # максимальный штраф
protocol: OSPF

protocol: RIP

protocol: IGRP

protocol: IS-IS

protocol: STATIC

protocol: RIPng

protocol: DVMRP

protocol: PIM-DM

protocol: PIM-SM

protocol: CBT

protocol: MOSPF


Содержание раздела