Category: traffic engineering

  • Обработка bgp маршрутов при подключении клиентов Internet

    Обработка bgp маршрутов при подключении клиентов Internet

    Соединения с клиентами по протоколу BGP описываются в блоке конфигурации protocols bgp group INET_Customers, если соединение производится по протоколу IPv4 и в блоке конфигурации protocols bgp group IPv6_Customers.
       
      

        В целях уменьшения влияния анонсов отдельных клиентов на ресурсы маршрутизаторов Сети ограничивается количество префиксов, получаемых от клиентов, значением 1000 для префиксов IPv4 и 100 для IPv6 (это значение может быть изменено для отдельного клиента или пересмотрено для всей Сети при изменении общей ситуации в сети Internet). При превышении 80% от этого значения генерируется сообщение в журнале событий syslog, а при превышении 100% сессия BGP разрывается и может быть установлена вновь через 30 минут.

          С целью использования нескольких равноценных маршрутов в настройки добавляется команда multipath.

          Пример настройки bgp group для подключения клиентов:

    protocols {

        bgp {

            group INET_Customers {

                type external;

                family inet {

                    unicast {

                        prefix-limit {

                            maximum 1000;

                            teardown 80 idle-timeout 30;

                        }

                    }

                }

                multipath;

            }

            group IPv6_Customers {

                type external;

                family inet6 {

                    unicast {

                        prefix-limit {

                            maximum 100;

                            teardown 80 idle-timeout 30;

    strong>                    }

                    }

                }

                multipath;

            }

        }

    }

          Для клиентов, подключающихся к услугам доступа в Internet, необходимо исключить анонс так называемых приватных автономных систем из атрибута AS_PATH. 

    Список приватных AS приведен по адресу: http://www.iana.org/assignments/as-numbers и составляет диапазон: AS64512 AS65535. 

    Несмотря на то, что архитектура сети IP/MPLS ПАО «Ростелеком» не подразумевает использование приватных номеров автономных систем, фильтрация таких AS при передаче маршрута в другие AS позволит избежать их анонсирования вследствие ошибки в настройке или злонамеренных действий внутри Сети.

          Пример фильтрации приватных AS для маршрутизатора Juniper:

    protocols {

        bgp {

            group INET_Customers {

                neighbor 4.3.2.1 {

                    remove-private;

                }

            }

        }

    }

          При приёме маршрутов от клиента необходима, прежде всего, фильтрация префиксов, приходящих от BGP маршрутизаторов сторонних сетей с целью недопущения попадания некорректной маршрутной информации, анонсируемой маршрутизаторами сторонних сетей в результате ошибки или умышленно. Фильтрация префиксов IPv4 осуществляется на базе списка, приведённого в [RFC6890]. Данный список содержит адреса следующих зарезервированных IETF и не подлежащих выделению сетей:

    • 0.0.0.0/8;
    • 0.0.0.0/1 – 0.0.0.0/32;
    • 10.0.0.0/8;
    • 100.64.0.0/10;
    • 172.16.0.0/12;
    • 192.168.0.0/16;
    • 127.0.0.0/8;
    • 192.0.0.0/24;
    • 192.0.2.0/24;
    • 169.254.0.0/16;
    • 192.88.99.0/24;
    • 198.18.0.0/15;
    • 198.51.100.0/24;
    • 203.0.113.0/24;
    • 224.0.0.0/4;
    • 240.0.0.0/4;

          Фильтрация префиксов IPv6 также осуществляется на базе списка, указанного в [RFC6890] и содержащего следующие префиксы:

    • ::/128;
    • ::1/128;
    • 64:ff9b::/96;
    • ::ffff:0:0/96;
    • 100::/64;
    • 2001::/23;
    • 2001:2::/48;
    • 2001:10::/28;
    • 2001:DB8::/32;
    • 2002::/16;
    • FF00::/8;
    • FE80::/10;
    • FEC0::/10;
    • FC00::/7;

          Помимо этого, с целью уменьшения общего числа префиксов в глобальной таблице маршрутизации фильтруются все префиксы с маской, длина которой превышает 24 бита для IPv4 и 48 бит для IPv6.
          Такая же фильтрация применяется и при передаче префиксов за пределы автономной системы Ростелеком.

          Пример политики для фильтрации неиспользуемых в сети Internet префиксов:

    protocols {

        bgp {

            group INET_Customers {

                type external;

                family inet {

                    unicast;

                }

                neighbor 1.1.1.2 {

                    description “### Test Client ###”;

                    import sanity-check;

                    export sanity-check;

                    peer-as 65432;

                }

            }

            group INET_v6_Customers {

                type external;

                family inet6 {

                    unicast;

                }

                neighbor 1::2 {

                    description “### Test IPv6 Client ###”;

                    import v6-sanity-check;

                    export v6-sanity-check;

                    peer-as 65432;

                }

            }

        }

    }

    policy-options {

        policy-statement sanity-check {

            term reject-bogons {

                from policy bogons;

                then reject;

            }

            term accept-blackhole {

                from community type_blackhole_route;

                then next policy;

            }

            term reject-long-prefixes {

                from {

                    route-filter 0.0.0.0/0 prefix-length-range /25-/32 reject;

                }

            }

        }

        policy-statement bogons {

            term rfc6890 {

                from {

                    route-filter 10.0.0.0/8 orlonger accept;

                    route-filter 172.16.0.0/12 orlonger accept;

                    route-filter 192.168.0.0/16 orlonger accept;

                    route-filter 0.0.0.0/1 through 0.0.0.0/32 accept;

                    route-filter 0.0.0.0/8 orlonger accept;

                    route-filter 100.64.0.0/10 orlonger accept;           

                    route-filter 127.0.0.0/8 orlonger accept;

                    route-filter 192.0.0.0/24 orlonger accept;

                    route-filter 192.0.2.0/24 orlonger accept;

                    route-filter 169.254.0.0/16 orlonger accept;

                    route-filter 192.88.99.0/24 orlonger accept;

                    route-filter 224.0.0.0/4 orlonger accept;

                    route-filter 240.0.0.0/4 orlonger accept;

                    route-filter 198.18.0.0/15 orlonger accept;

                    route-filter 198.51.100.0/24 orlonger accept;

                    route-filter 203.0.113.0/24 orlonger accept;            

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement v6-sanity-check {

            term reject-bogons {

                from policy v6-bogons;

                then reject;

            }

            term reject-long-prefixes {

                from {

                    route-filter ::/0 prefix-length-range /48-/128 reject;

                }

            }

        }

        policy-statement v6-bogons {

            term rfc6890 {

                from {

                    route-filter ::/128 exact accept;

                    route-filter ::1/128 exact accept;

                    route-filter ::/1 through ::/128 accept;

                    route-filter ::ffff:0:0/96 orlonger accept;

                    route-filter 100::/64 orlonger accept;           

                    route-filter 2001::/23 orlonger accept;

                    route-filter 2001:2::/48 orlonger accept;           

                    route-filter 2001:DB8::/32 orlonger accept;

                    route-filter 2001:10::/28 orlonger accept; 

                    route-filter 2002::/16 orlonger accept;

                    route-filter 64:ff9b::/32 orlonger accept;

                    route-filter FC00::/7 orlonger accept;

                    route-filter FE80::/10 orlonger accept;

                    route-filter FEC0::/10 orlonger accept;

                    route-filter FF00::/8 orlonger accept;

                 }

            }

            term reject-others {

                then reject;

            }

        }

    }

          После проверки разрешённой длины префиксов и принадлежности публичным диапазонам адресов производятся следующие операции с полученными от клиента маршрутами:

    • запрет приёма префиксов Ростелеком;
    • запрет приёма маршрута по умолчанию;
    • запрет приёма служебных и зарезервированных BGP Community;
    • установка параметров по умолчанию;
    • установка BGP Community, соответствующих данному региональному филиалу и МРФ;
    • проверка наличия BGP Community для сброса, назначение нового BGP NextHop;
    • проверка наличия BGP Community, изменяющих Local Preference, установка запрошенного значения.

          Пример обработки маршрутов при приёме от клиента на RGR:

    protocols {

        bgp {

            group INET_Customers {

                type external;

                family inet {

                    unicast;

                }

                neighbor 1.1.1.2 {

                    description “### Test Client ###”;

                    local-address  1.1.1.1;

                    import [ sanity-check INET_CUSTOMER_in mark-routes-sib mark-region-routes-NVSK ];

                    peer-as 65432;

                }

            }

            group INET_v6_Customers {

                type external;

                family inet6 {

                    unicast;

                }

                neighbor 1::2 {

                    description “### Test IPv6 Client ###”;

                    import [ v6-sanity-check INET_v6_CUSTOMER_in mark-routes-sib mark-region-routes-NVSK ];

                    peer-as 65432;

                }

            }

        }

    }

    policy-options {

        policy-statement sanity-check {

            term reject-bogons {

                from policy bogons;

                then reject;

            }

            term accept-blackhole {

                from community type_blackhole_route;

                then next policy;

            }

            term reject-long-prefixes {

                from {

                    route-filter 0.0.0.0/0 prefix-length-range /25-/32 reject;

                }

            }

        }

        policy-statement bogons {

            term rfc6890 {

                from {

                    route-filter 10.0.0.0/8 orlonger accept;

                    route-filter 172.16.0.0/12 orlonger accept;

                    route-filter 192.168.0.0/16 orlonger accept;

                    route-filter 0.0.0.0/1 through 0.0.0.0/32 accept;

                    route-filter 0.0.0.0/8 orlonger accept;

                    route-filter 100.64.0.0/10 orlonger accept;           

                    route-filter 127.0.0.0/8 orlonger accept;

                    route-filter 192.0.0.0/24 orlonger accept;

                    route-filter 192.0.2.0/24 orlonger accept;

                    route-filter 169.254.0.0/16 orlonger accept;

                    route-filter 192.88.99.0/24 orlonger accept;

                    route-filter 224.0.0.0/4 orlonger accept;

                    route-filter 240.0.0.0/4 orlonger accept;

                    route-filter 198.18.0.0/15 orlonger accept;

                    route-filter 198.51.100.0/24 orlonger accept;

                    route-filter 203.0.113.0/24 orlonger accept;           

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement v6-sanity-check {

            term reject-bogons {

                from policy v6-bogons;

                then reject;

            }

            term reject-long-prefixes {

                from {

                    route-filter ::/0 prefix-length-range /48-/128 reject;

                }

            }

        }

        policy-statement v6-bogons {

            term rfc6890 {

                from {

                    route-filter ::/128 exact accept;

                    route-filter ::1/128 exact accept;

                    route-filter ::/1 through ::/128 accept;

                    route-filter ::ffff:0:0/96 orlonger accept;

                    route-filter 100::/64 orlonger accept;           

                    route-filter 2001::/23 orlonger accept;

                    route-filter 2001:2::/48 orlonger accept;           

                    route-filter 2001:DB8::/32 orlonger accept;

                    route-filter 2001:10::/28 orlonger accept; 

                    route-filter 2002::/16 orlonger accept;

                    route-filter 64:ff9b::/32 orlonger accept;

                    route-filter FC00::/7 orlonger accept;

                    route-filter FE80::/10 orlonger accept;

                    route-filter FEC0::/10 orlonger accept;

                    route-filter FF00::/8 orlonger accept;

                 }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement INET_CUSTOMER_in {

            term reject-RT-aggregate {

                from policy RT-aggregate;

                then reject;

            }

            term reject-RT-longer-prefixes {

                from policy RT-longer-prefixes;

                then reject;

            }

            term reject-default-route {

                from {

                    route-filter 0.0.0.0/0 exact;

                }

                then reject;

            }

            term remove-12389-communities {

                then {

                    community delete 12389:1-3X;

                    community delete 12389:1UZZ;

                }

            term remove-Well-Known-communities

                then {

                    community delete WellKnown0;

                    community delete WellKnown65535;

                }

            }

            term set-parameters {

                then {

                    metric 0;

                    local-preference 850;

                    community add type_Customer;

                }

            }

            term blackhole-route {

                from community type_blackhole_route;

                then {

                    next-hop discard;

                    community add NO_EXPORT;

                    next policy;

                }

            }

            term backup-route {

                from community type_customer_backup_route;

                then {

                    local-preference 800;

                }

            }

            term full-backup-route {

                from community type_full_backup_route;

                then {

                    local-preference 100;

                }

            }

        }

        policy-statement RT-aggregate {

            term match-RT-aggregate-networks {

                from {

                    route-filter 87.226.128.0/17 exact accept;

                    route-filter 79.133.64.0/19 exact accept;

                    route-filter 92.50.192.0/18 exact accept;

                    route-filter 94.25.0.0/17 exact accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement RT-longer-prefixes {

            term match-RT-longer-prefixes {

                from {

                    route-filter 87.226.128.0/17 longer accept;

                    route-filter 79.133.64.0/19 longer accept;

                    route-filter 92.50.192.0/18 longer accept;

                    route-filter 94.25.0.0/17 longer accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement INET_v6_CUSTOMER_in {

            term reject-RT-v6-aggregate {

                from policy RT-v6-aggregate;

                then reject;

            }

            term reject-RT-v6-longer-prefixes {

                from policy RT-v6-longer-prefixes;

                then reject;

            }

            term reject-default-route {

                from {

                    route-filter ::/0 exact;

                }

                then reject;

            }

            term remove-12389-communities {

                then {

                    community delete 12389:1-3X;

                    community delete 12389:1UZZ;

                }

            }

            term remove-Well-Known-communities

                then {

                    community delete WellKnown0;

                    community delete WellKnown65535;

                }

            }

            term set-parameters {

                then {

                    metric 0;

                    local-preference 850;

                    community add type_Customer;

                }

            }

            term blackhole-route {

                from community type_blackhole_route;

                then { 

                    next-hop discard;

                    community add NO_EXPORT;

                    next policy;

                }      

            }   

            term backup-route {

                from community type_customer_backup_route;

                then {

                    local-preference 800;

                }

            }

            term full-backup-route {

                from community type_full_backup_route;

                then {

                    local-preference 100;

                }

            }

        }

        policy-statement RT-v6-aggregate {

            term match-RT-v6-aggregate-networks {

                from {

                    route-filter 2A01:620::/32 exact accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement RT-v6-longer-prefixes {

            term match-RT-v6-longer-prefixes {

                from {

                    route-filter 2A01:620::/32 longer accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement mark-routes-sib {

            term 1 {

                then {

                    community add routes-SIB;

                    next policy;

                }

            }

        }

        policy-statement mark-region-routes-NVSK {

            term 1 {

                then {

                    community add routes-region-NVSK;

                    next policy;

                }

            }

        }

        community 12389:1-3X members “^12389:.{1,3}$”;

        community 12389:1UZZ members “^12389:1…$”;

        community type_Customer members 12389:1;

        community type_Upstream members 12389:6;

        community type_blackhole_route members 12389:55555;

        community type_customer_backup_route members 12389:2800;

        community type_full_backup_route members 12389:2100;

        community NO_EXPORT members no-export;

        community WellKnown0 members ^0:*;

        community WellKnown65535 members 65535:*;

        community routes-SIB members “12389:1101$”;

        community routes-region-NVSK members 12389:1254;

    }

          Для корректной реализации пиринговой политики в сети при приёме маршрутов от клиентов на сервисных маршрутизаторах BPE устанавливается значение Local Pereference, равное 950. Для сервисных маршрутизаторов Juniper вместо политики INET_CUSTOMER_in можно использовать политику INET_BPE_CUSTOMER_in, пример которой приведён далее.

          Пример политики INET_BPE_CUSTOMER_in:

    policy-options {

        policy-statement INET_BPE_CUSTOMER_in {

            term reject-RT-aggregate {

                from policy RT-aggregate;

                then reject;

            }

            term reject-RT-longer-prefixes {

                from policy RT-longer-prefixes;

                then reject;

            }

            term reject-default-route {

                from {

                    route-filter 0.0.0.0/0 exact;

                }

                then reject;

            }

            term remove-12389-communities {

                then {

                    community delete 12389:1-3X;

                    community delete 12389:1UZZ;

                }

            term remove-Well-Known-communities

                then {

                    community delete WellKnown0;

                    community delete WellKnown65535;

                }

            }

            term set-parameters {

                then {

                    metric 0;

                    local-preference 950;

                    community add type_Customer;

                }

            }

            term blackhole-route {

                from community type_blackhole_route;

                then {

                    next-hop discard;

                    community add NO_EXPORT;

                    next policy;

                }

            }

            term backup-route {

                from community type_customer_backup_route;

                then {

                    local-preference 800;

                }

            }

            term full-backup-route {

                from community type_full_backup_route;

                then {

                    local-preference 100;

                }

            }

        }

        policy-statement RT-aggregate {

            term match-RT-aggregate-networks {

                from {

                    route-filter 87.226.128.0/17 exact accept;

                    route-filter 79.133.64.0/19 exact accept;

                    route-filter 92.50.192.0/18 exact accept;

                    route-filter 94.25.0.0/17 exact accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement RT-longer-prefixes {

            term match-RT-longer-prefixes {

                from {

                    route-filter 87.226.128.0/17 longer accept;

                    route-filter 79.133.64.0/19 longer accept;

                    route-filter 92.50.192.0/18 longer accept;

                    route-filter 94.25.0.0/17 longer accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement INET_v6_BPE_CUSTOMER_in {

            term reject-RT-v6-aggregate {

                from policy RT-v6-aggregate;

                then reject;

            }

            term reject-RT-v6-longer-prefixes {

                from policy RT-v6-longer-prefixes;

                then reject;

            }

            term reject-default-route {

                from {

                    route-filter ::/0 exact;

                }

                then reject;

            }

            term remove-12389-communities {

                then {

                    community delete 12389:1-3X;

                    community delete 12389:1UZZ;

                }

            }

            term remove-Well-Known-communities

                then {

                    community delete WellKnown0;

                    community delete WellKnown65535;

                }

            }

            term set-parameters {

                then {

                    metric 0;

                    local-preference 950;

                    community add type_Customer;

                }

            }

            term blackhole-route {

                from community type_blackhole_route;

                then { 

                    next-hop discard;

                    community add NO_EXPORT;

                    next policy;

                }      

            }   

            term backup-route {

                from community type_customer_backup_route;

                then {

                    local-preference 800;

                }

            }

            term full-backup-route {

                from community type_full_backup_route;

                then {

                    local-preference 100;

                }

            }

        }

        policy-statement RT-v6-aggregate {

            term match-RT-v6-aggregate-networks {

                from {

                    route-filter 2A01:620::/32 exact accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement RT-v6-longer-prefixes {

            term match-RT-v6-longer-prefixes {

                from {

                    route-filter 2A01:620::/32 longer accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        community 12389:1-3X members “^12389:.{1,3}$”;

        community 12389:1UZZ members “^12389:1…$”;

        community type_Customer members 12389:1;

        community type_Upstream members 12389:6;

        community type_blackhole_route members 12389:55555;

        community type_customer_backup_route members 12389:2800;

        community type_full_backup_route members 12389:2100;

        community NO_EXPORT members no-export;

        community WellKnown0 members ^0:*;

        community WellKnown65535 members 65535:*;

    }

          В сети ПАО «Ростелеком» для защиты от некорректных маршрутов применяется фильтрация на основе информации Routing Arbiter Database (раздел «Принципы защиты оборудования регионального уровня»). Для формирования имени фильтра используется форма CUSTOMER:<ASN>, где <ASN> – номер автономной системы клиента или название AS-SET, AS-NUM или AUT-NUM, зарегистрированные в RIR. Такой фильтр добавляется в настройки после фильтра INET_CUSTOMER_in (или INET_BPE_CUSTOMER_in).

          Пример дополнительного фильтра при приёме маршрутов от клиента:

    protocols {

        bgp {

            group INET_Customers {

                neighbor 1.1.1.2 {

                    description “### Test Client ###”;

                    import CUSTOMER:65432;

                    peer-as 65432;

                }

            }

        }

    }

    policy-options {

        policy-statement CUSTOMER:65432 {

            term rtbh {

                from {

                    community type_blackhole_route;

                    route-filter 2.1.0.0/16 orlonger;

                    route-filter 1.2.3.0/24 orlonger;

                }

                then {

                    community add NO_EXPORT;

                    next-hop discard;

                    accept;        

                }

            }

            term prefixes {

                from {

                    route-filter 2.1.0.0/16 upto /24;

                    route-filter 1.2.3.0/24 exact;

                }

                then next policy;

            }

            then reject;

        }

        community NO_EXPORT members no-export;

        community type_blackhole_route members 12389:55555;

    }

          При передаче префиксов клиенту передаются в зависимости от типа клиента:

    • агрегированные префиксы Ростелеком и маршрут по умолчанию;
    • только агрегированные префиксы Ростелеком;
    • только маршрут по умолчанию;
    • все префиксы от апстримов и агрегированные префиксы Ростелеком;

          BGP Community Ростелеком удаляются, за исключением 12389:X.

          Пример политики анонсирования маршрутов клиенту для маршрутизаторов Juniper:

    protocols {

        bgp {

            group INET_Customers {

                type external;

                neighbor 1.1.1.2 {

                    description “### Test Client ###”;

                    local-address  1.1.1.1;

                    export [ sanity-check INET_CUSTOMER_RT_and_default_out remove-communities ];

                    peer-as 65432;

                }

            }

            group INET_v6_Customers {

                type external;

                family inet6 {

                    unicast;

                }

                neighbor 1::2 {

                    description “### Test Client ###”;

                    local-address 1::1;

                    export [ v6-sanity-check INET_v6_CUSTOMER_RT_and_default_out remove-communities ];

                    peer-as 65432;

                }

            }

        }

    }

    policy-options {

        policy-statement sanity-check {

            term reject-bogons {

                from policy bogons;

                then reject;

            }

            term accept-blackhole {

                from community type_blackhole_route;

                then next policy;

            }

            term reject-long-prefixes {

                from {

                    route-filter 0.0.0.0/0 prefix-length-range /25-/32 reject;

                }

            }

        }

        policy-statement bogons {

            term rfc6890 {

                from {

                    route-filter 10.0.0.0/8 orlonger accept;

                    route-filter 172.16.0.0/12 orlonger accept;

                    route-filter 192.168.0.0/16 orlonger accept;

                    route-filter 0.0.0.0/1 through 0.0.0.0/32 accept;

                    route-filter 0.0.0.0/8 orlonger accept;

                    route-filter 100.64.0.0/10 orlonger accept;           

                    route-filter 127.0.0.0/8 orlonger accept;

                    route-filter 192.0.0.0/24 orlonger accept;

                    route-filter 192.0.2.0/24 orlonger accept;

                    route-filter 169.254.0.0/16 orlonger accept;

                    route-filter 192.88.99.0/24 orlonger accept;

                    route-filter 224.0.0.0/4 orlonger accept;

                    route-filter 240.0.0.0/4 orlonger accept;

                    route-filter 198.18.0.0/15 orlonger accept;

                    route-filter 198.51.100.0/24 orlonger accept;

                    route-filter 203.0.113.0/24 orlonger accept;           

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement v6-sanity-check {

            term reject-bogons {

                from policy v6-bogons;

                then reject;

            }

            term reject-long-prefixes {

                from {

                    route-filter ::/0 prefix-length-range /48-/128 reject;

                }

            }

        }

        policy-statement v6-bogons {

            term rfc6890 {

                from {

                    route-filter ::/128 exact accept;

                    route-filter ::1/128 exact accept;

                    route-filter ::/1 through ::/128 accept;

                    route-filter ::ffff:0:0/96 orlonger accept;

                    route-filter 100::/64 orlonger accept;           

                    route-filter 2001::/23 orlonger accept;

                    route-filter 2001:2::/48 orlonger accept;           

                    route-filter 2001:DB8::/32 orlonger accept;

                    route-filter 2001:10::/28 orlonger accept; 

                    route-filter 2002::/16 orlonger accept;

                    route-filter 64:ff9b::/32 orlonger accept;

                    route-filter FC00::/7 orlonger accept;

                    route-filter FE80::/10 orlonger accept;

                    route-filter FEC0::/10 orlonger accept;

                    route-filter FF00::/8 orlonger accept;

                 }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement INET_v6_CUSTOMER_RT_and_default_out {

            term accept-RT-v6-aggregate {

                from policy RT-v6-aggregate;

                then next policy;

            }

            term static-tag_1002 {

                from {

                    protocol [ static aggregate ];

                    tag [ 1002 1003 1031 1032 ];

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term remote-static-tag_1002 {

                from {

                    protocol bgp;

                    community from_static_tag_1002;

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term accept-default-route {

                from {

                    route-filter ::/0 exact;

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement INET_v6_CUSTOMER_RT_only_out {

            term accept-RT-v6-aggregate {

                from policy RT-v6-aggregate;

                then next policy;

            }

            term static-tag_1002 {

                from {

                    protocol [ static aggregate ];

                    tag [ 1002 1003 1031 1032 ];

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term remote-static-tag_1002 {

                from {

                    protocol bgp;

                    community from_static_tag_1002;

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement INET_v6_CUSTOMER_default_out {

            term accept-default-route {

                from {

                    route-filter ::/0 exact;

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement INET_v6_CUSTOMER_full_out {

            term reject-RT-longer-prefixes {

                from policy RT-v6-longer-prefixes;

                then reject;

            }

            term static-tag_1002 {

                from {

                    protocol [ static aggregate ];

                    tag [ 1002 1003 1031 1032 ];

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term accept-routes {

                from { 

                    protocol bgp;

                    community [ to_INET_Customer from_FED_Peer type_REG_Peer type_MRF_Peer ];

                }

                then next policy;

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement RT-v6-aggregate {

            term match-RT-v6-aggregate-networks {

                from {

                    route-filter 2A01:620::/32 exact accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement RT-v6-longer-prefixes {

            term match-RT-v6-longer-prefixes {

                from {

                    route-filter 2A01:620::/32 longer accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement INET_CUSTOMER_RT_and_default_out {

            term accept-RT-aggregate {

                from policy RT-aggregate;

                then next policy;

            }

            term static-tag_1002 {

                from {

                    protocol [ static aggregate ];

                    tag [ 1002 1003 1031 1032 ];

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term remote-static-tag_1002 {

                from {

                    protocol bgp;

                    community from_static_tag_1002;

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term accept-default-route {

                from {

                    route-filter 0.0.0.0/0 exact;

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement INET_CUSTOMER_RT_only_out {

            term accept-RT-aggregate {

                from policy RT-aggregate;

                then next policy;

            }

            term static-tag_1002 {

                from {

                    protocol [ static aggregate ];

                    tag [ 1002 1003 1031 1032 ];

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term remote-static-tag_1002 {

                from {

                    protocol bgp;

                    community from_static_tag_1002;

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement INET_CUSTOMER_default_out {

            term accept-default-route {

                from {

                    route-filter 0.0.0.0/0 exact;

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement INET_CUSTOMER_full_out {

            term reject-RT-longer-prefixes {

                from policy RT-longer-prefixes;

                then reject;

            }

            term static-tag_1002 {

                from {

                    protocol [ static aggregate ];

                    tag [ 1002 1003 1031 1032 ];

                }

                then {

                    metric 0;

                    accept;

                }

            }

            term accept-routes {

                from {

                    protocol bgp;

                    community [ to_INET_Customer from_FED_Peer type_REG_Peer type_MRF_Peer ];

                }

                then next policy;

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement remove-communities {

            term Clients {

                from community 12389:1X;

                then {

                    community delete 12389:2-5X;

                    next policy;

                }

            }

            term Community_12389 {

                from community 12389;

                then {

                    community delete 12389;

                }

            }

        }

        policy-statement RT-aggregate {

            term match-RT-aggregate-networks {

                from {

                    route-filter 87.226.128.0/17 exact accept;

                    route-filter 79.133.64.0/19 exact accept;

                    route-filter 92.50.192.0/18 exact accept;

                    route-filter 94.25.0.0/17 exact accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        policy-statement RT-longer-prefixes {

            term match-RT-longer-prefixes {

                from {

                    route-filter 87.226.128.0/17 longer accept;

                    route-filter 79.133.64.0/19 longer accept;

                    route-filter 92.50.192.0/18 longer accept;

                    route-filter 94.25.0.0/17 longer accept;

                }

            }

            term reject-others {

                then reject;

            }

        }

        community 12389 members 12389:*;

        community to_Upstream members “^12389:1$”;

        community 12389:1X members “^12389:.$”;

        community 12389:2-5X members “^12389:.{2,5}$”;

        community to_INET_Customer members “^12389:[16]$”;

        community from_FED_Peer members “^12389:[57]$”;

        community type_REG_Peer members 12389:9;

        community type_MRF_Peer members 12389:8;

        community from_static_tag_1002 members “12389:1 12389:4”;

    }

          В ряде случаев необходимо передавать маршрут по умолчанию клиентам, которым передаётся полная таблица маршрутизации. В этом случае вместе с политиками INET_CUSTOMER_full_out и INET_v6_CUSTOMER_full_out применяются политики announce-default и announce-v6-default соответственно.

    Обработка маршрутов при подключении клиентов Internet

          Пример политики анонсирования маршрута по умолчанию:

    policy-options {
        policy-statement {
            announce-default {
                term accept-default-route {
                    from {
                        route-filter 0.0.0.0/0 exact;
                    }
                    then {
                        metric 0;
                        accept;
                   }
                }
        }
            announce-v6-default {
                term accept-default-route {
                    from {
                        route-filter ::/0 exact;
                    }
                    then {
                        metric 0;
                        accept;
                   }
                }
        }
    }
    }

          При подключении некоторых клиентов может потребоваться передача им community, описывающих источник маршрута (номер upstream или peer: 12389:15ZZ, 12389:16ZZ и 12389:17ZZ. 

    В этом случае вместо policy-statement remove-communities применяется policy-statement remove-communities-except-sources.

          Пример политики анонсирования маршрутов клиенту для маршрутизаторов Juniper:

    policy-options {   

        policy-statement remove-communities-except-sources {

            term Delete_Community_12389 {

                then community delete 12389_Except_1X_and_Sources;

            }

        }

        community 12389_Except_1X_and_Sources {

            invert-match;

            members “^12389:((.)|(1[567]..))$”;

        }

    }

  • Как отозвать платеж при помощи МТ192 SWIFT message

    Как отозвать платеж при помощи МТ192 SWIFT message

    Вообще то не имеет никакого значения, что там банк отправителя напишет в качестве причины отзыва денежных средств.
    На основании инструкции Национального Банка Украины, любой банк обязан выполнять распоряжения клиента, если они не противоречат действующему законодательству и инструкции НБУ.
    SWIFT MT192 срабатывает не всегда

    Возвращать средства после МТ192 никто не будет, пока сам клиент не даст на то распоряжение, а распоряжения такого как вы понимаете может и не поступить. Блокировать средства на счете клиента на основании МТ192 ни один банк тоже не может.

    Обычно клиент сам распоряжается полученной суммой и банк дает ответ МТ196 банку плательщика, о том что отзыв по МТ192 противоречит условиям экспортного контракта…
  • Protecting your Juniper router from PSN-2010-01-623 using firewall filters

    Last Thursday Juniper Networks released advisory PSN-2010-01-623 urging Network administrator running JUNOS versions older then one year to upgrade. The advisory states that by sending ‘malformed’ tcp options will cause JunOS to crash. The advisory does not mention which tcp options will cause this behavior.

    So last Friday and Saturday I spend a few hours to trying to generate TCP packets with different kind of options set, trying to see if I could find out the exact options needed. However before I found the magic combination, Jermey Gaddis posted a blog post describing which options need to be set. He also published an exploit.

    I tried running this exploit, but for some reason the perl code does not run on my Mac book. After slightly rewriting some of his perl code I managed to get it working and was ready to give it a try on one of our lab routers, a M10 running JunOS 7.x.

    I was able to crash the router with only sending one packets, also see the video.

    Of course most routers have firewall/acl filters to only allow traffic to the RE from trusted sources. According to the advisory and some resources online firewall filters don’t help in this case. However in my lab testing applying a firewall did seem to help.

    To test this I configured my lab router with a firewall blocking all ssh traffic from all sources. I tried the exploit again and nothing happened. So it seems that at least in some cases a firewall filter does help. This might be different on a Olive box, as it doesn’t have hardware filtering in PFE’s. I assume that’s why filtering does work on a ‘real’ box, as it’s probably filtered out by the PFE’s before it reached the kernel.

    Although firewall filters do seem to protect you against this issue. It’s still fairly easy to spoof IP addresses and bypass the firewall. As router IP addresses are easy to find (traceroute) it will also be easy to guess the IP address of a BGP peer. Using that spoofed address will allow an attacker to crash your router. So, upgrading to a more recent release is the only real solution.

  • Украинский трафик – что это и кому он нужен

    Украинский трафик – что это и кому он нужен

    Как использовать украинский трафик


    Украинский трафик – это удобно. Расширь свои границы. Не думай об обмене файлами с соседом по лестничной клетке – меняйся со всей Украиной. В основе украинского трафика лежит точка обмена трафиком UA-IX, расположенная в Киеве и работающая с августа 2000 года.


    Сеть обмена украинским трафиком облегчает связь сетей украинских Интернет-провайдеров. Благодаря существованию сети происходит обмен трафиком между провайдерами-участниками по кратчайшим маршрутам, без выхода в зарубежные сети. Кроме того, наличие этой точки обмена доступа позволяет удешевить трафик между участниками сети, в результате чего он предоставляется дешевле или неограниченно конечным пользователям (в отличие от зарубежного трафика, например).


    soLANka.NET – первый провайдер в Новом Буге, который вводит такое понятие для своих пользователей. Теперь у всех абонентов “soLANka.NET” есть возможность пользоваться лучшими украинскими ресурсами на повышенной скорости и в большем объеме.
    В данный момент в UA-IX входит более 80 провайдеров и 1000 ресурсов. Самыми заметными из них являются такие сервера обмена файлов UAGET.com,infostore.org Libido.kiev.ua и т.д. Кроме того, трафиком, попадающим в UA-IX является и трафик пользователей киевских провайдеров, что открывает доступ к torrents.net.ua – мощнейшему трекеру Украины.


    Файловые ресурсы UA-IX:


    http://ua-ix.biz/ – полный каталог сайтов UA-IX


    Проще говоря, доступ к UA-IX дает каждому пользователю “soLANka.NET” целый ряд преимуществ – ведь теперь становятся доступными целый ряд сайтов и ресурсов, содержащих массу полезной информации – видео, музыки, игр и прочего. И все это – совершенно бесплатно без учет трафика и ограничений по скорости. Действительно очень удобно!


    Стоит также отметить, что точка обмена трафика UA-IX – быстро меняющееся объединение сетей. Ежедневно все новые и новые Сети входят в UA-IX, расширяя возможности. Тем не менее, варианты выхода отдельных сетей и ресурсов тоже возможны, поэтому стоит периодически проверять принадлежность ресурсов к UA-IX.