• quagga源码学习--BGP协议中的routemap


    路由策略的基础知识

    定义

       路由策略(Routing Policy)作用于路由,主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括可达性)来改变网络流量所经过的路径。

    目的

    路由器在发布、接收和引入路由信息时,根据实际组网需要实施一些策略,以便对路由信息进行过滤和改变路由信息的属性,如:

    • 控制路由的发布

      只发布满足条件的路由信息。

    • 控制路由的接收

      只接收必要、合法的路由信息,以控制路由表的容量,提高网络的安全性。

    • 过滤和控制引入的路由

      一种路由协议在引入其它路由协议发现的路由信息丰富自己的路由知识时,只引入一部分满足条件的路由信息,并对所引入的路由信息的某些属性进行设置,以使其满足本协议的要求。

    • 设置特定路由的属性

      修改通过路由策略过滤的路由的属性,满足自身需要。

    • 配置FRR功能

      为通过路由策略过滤的路由设置备份下一跳和备份出接口,可以实现IP FRR、VPN FRR、IP与VPN混合FRR功能。

    收益

    路由策略具有以下价值:
    • 通过控制路由器的路由表规模,节约系统资源。
    • 通过控制路由的接收和发送,提高网络安全性。
    • 通过修改路由属性,对网络数据流量进行合理规划,提高网络性能。
    • 通过FRR功能,提高网络可靠性。

    路由策略的核心内容是过滤器,通过使用过滤器,可以定义一组匹配规则下表给出各种过滤器的应用范围和匹配条件的对比。

     访问控制列表(ACL)

    各动态路由协议

    入接口、源或目的地址、协议类型、源或目的端口号

    地址前缀列表(IP-Prefix List)

    各动态路由协议

    源地址、目的地址、下一跳

    AS路径过滤器(AS-Path-Filter)

    BGP协议

    AS路径属性

    团体属性过滤器(Community-Filter)

    BGP协议

    团体属性

    扩展团体属性过滤器(Extcommunity-Filter)

    VPN

    扩展团体属性RT

    RD属性过滤器(Route Distinguisher-Filter)

    VPN

    RD属性

    Route-Policy

    各动态路由协议

    目的地址、下一跳、度量值、接口信息、路由类型、ACL、地址前缀列表、AS路径过滤器、团体属性过滤器、扩展团体属性过滤器和RD属性过滤器等。

    quagga在bgp协议中也应用了路由策略。

    比如在bgp_update_rsclient中:

     1 /* Apply export policy. */
     2     if (CHECK_FLAG(peer->af_flags[afi][safi], PEER_FLAG_RSERVER_CLIENT) &&
     3         bgp_export_modifier(rsclient, peer, p, &new_attr, afi, safi) == RMAP_DENY) {
     4         reason = "export-policy;";
     5         goto filtered;
     6     }
     7 
     8     attr_new2 = bgp_attr_intern(&new_attr);
     9 
    10     /* Apply import policy. */
    11     if (bgp_import_modifier(rsclient, peer, p, &new_attr, afi, safi) == RMAP_DENY) {
    12         bgp_attr_unintern(&attr_new2);
    13 
    14         reason = "import-policy;";
    15         goto filtered;
    16     }

    如果匹配了过滤器:

     1 filtered:
     2 
     3     /* This BGP update is filtered.  Log the reason then update BGP entry.  */
     4     if (BGP_DEBUG(update, UPDATE_IN))
     5         zlog(peer->log, LOG_DEBUG,
     6              "%s rcvd UPDATE about %s/%d -- DENIED for RS-client %s due to: %s",
     7              peer->host,
     8              inet_ntop(p->family, &p->u.prefix, buf, SU_ADDRSTRLEN),
     9              p->prefixlen, rsclient->host, reason);
    10 
    11     if (ri)
    12         bgp_rib_remove(rn, ri, peer, afi, safi);
    13 
    14     bgp_unlock_node(rn);
  • 相关阅读:
    AI boxfilter
    AI AdaBoost算法
    AI Haar特征
    15.VUE学习之-表单中使用key唯一令牌解决表单值混乱问题
    14.VUE学习之-v-if v-else-if语法在网站注册中的实际应用讲解
    13.VUE学习之控制行内样式
    12.2 VUE学习之-if判断,实践加减input里的值
    12.1.VUE学习之-循环li,if判断示例讲解class中应用表达式
    10.VUE学习之使用lodash库减少watch对后台请求的压力
    09.VUE学习之watch监听属性变化实现类百度搜索栏功能ajax异步请求数据,返回字符串
  • 原文地址:https://www.cnblogs.com/danxi/p/6393262.html
Copyright © 2020-2023  润新知