2.0.0 BGP高级特性-ASFilter、CommunityFilter、ORF、对等组

Peer Group

BGP对等体组

在网络中出现多台设备配置相近的情况下,使用对等体组可以极大的减少配置命令的输入。

与端口组类似,通过创建一个组,然后将成员添加入其中,可以对组中的成员进行统一的管理。

案例配置1

在这里插入图片描述

以AR2为例,配置IBGP组,将AR6、AR5添加入组中统一管理配置:

# BGP进程中创建IBGP组
[AR2]bgp 100
[AR2-bgp]router-id 2.2.2.2
[AR2-bgp]group IBGP internal 
# 将IBGP成员添加入组中
[AR2-bgp]peer 10.1.26.6 group IBGP
[AR2-bgp]peer 10.1.25.5 group IBGP

此时查看BGP配置,可以看到部分命令自动补全:

bgp 100
 router-id 2.2.2.2
 group IBGP internal
 peer 10.1.25.5 as-number 100 
 peer 10.1.25.5 group IBGP 
 peer 10.1.26.6 as-number 100 
 peer 10.1.26.6 group IBGP 
 #
 ipv4-family unicast
  undo synchronization
  peer IBGP enable
  peer 10.1.25.5 enable
  peer 10.1.25.5 group IBGP 
  peer 10.1.26.6 enable
  peer 10.1.26.6 group IBGP 

以AR2为例,配置EBGP组,将AR1添加入组中统一管理配置:

# 将EBGP成员添加入组中,并指定该组属于哪个AS。
# 下次再有该AS的EBGP邻居需要接入,直接添加入组中即可。
[AR2-bgp]peer 10.1.26.6 group IBGP# EBGP组也是同样的
[AR2]bgp 100
[AR2-bgp]router-id 2.2.2.2
[AR2-bgp]group EBGP_200 external 
[AR2-bgp]peer EBGP_200 as-number 200

# 将EBGP成员 AR1添加入组中
[AR2-bgp]peer 10.1.12.1 group EBGP_200

Community Filter

Community团体属性是BGP的私有属性属于可选过渡的属性,在BGP对等体之间传播,且不受AS的限制。

利用团体属性可以使多个AS中的某一组BGP设备共享相同的策略,从而简化路由策略的应用和降低维护管理的难度。

BGP设备在发布路由时,新增或者改变路由的团体属性。

个人注解:团体值,类似Tag,因为Tag只能在IGP协议中使用,BGP中没有Tag字段,但有团体属性。

公认团体属性

在所有的BGP路由中,都存在着默认的团体属性,以下是默认的公认团体属性。

团体属性名称团体属性号说明
Internet0(0x00000000)设备在收到具有此属性的路由后,可以向任何BGP对等体发送该路由。缺省情况下,所有的路由都属于Internet团体。
No_Advertise4294967042(0xFFFFFF02)设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由。
No_Export4294967041(0xFFFFFF01)设备收到具有此属性的路由后,将不向AS外发送该路由。
No_Export_Subconfed4294967043(0xFFFFFF03)设备收到具有此属性的路由后,将不向AS外发送该路由。如果使用了联盟,也不向联盟内其他子AS发布此路由。

个人注解:Internet默认,No_Advertise不通告给任何对等体(收到路由后就自己使用),No_Export不外扩(只在自己的AS内传播),NO_Export_Subconfed(不外传的同时也不向内传)。

团体属性格式

一个Community属性值的长度为32 bit,可使用两种形式呈现:

1、十进制整数格式。

2、AA:NN格式,其中AA表示AS号,NN是自定义编号

于路由策略中修改团体属性时,可以看到可选参数:
[AR6-route-policy]apply community ?
  INTEGER<0-4294967295>  Specify community number
  STRING<3-11>           Specify aa<0-65535>:nn<0-65535>
  
  internet               Internet(well-known community attributes)
  no-advertise           Do not advertise to any peer (well-known community     
                         attributes)
  no-export              Do not export to external peers(well-known community   
                         attributes)
  no-export-subconfed    Do not send outside a sub-confederation(well-known     
                         community attributes)
  none                   No community attribute

案例配置2

以下就做个简单的案例,AR5、AR6都学习到AR9的Loop100路由并引入到IBGP中。

AR2此时会学习到去往AR9环回口开销为2开销为20的BGP路由,但对于AR2来说,还想进一步的区分这些路由就得借助其它手段。

为了方便,可以在AR6、AR5上配置路由策略,将路由引入BGP时打上规定好的Community团体属性,使得AR2可以快速分辩。

在这里插入图片描述

查看路未配置团体属性前的由明细信息

  • 默认的Community属性 Internet 不显示出来。
<AR2>dis bgp routing-table 192.168.100.0

 BGP local router ID : 2.2.2.2
 Local AS number : 100
 Paths:   2 available, 1 best, 1 select
 BGP routing table entry information of 192.168.100.0/24:
 From: 10.1.26.6 (6.6.6.6)
 Route Duration: 00h05m48s  
 Relay IP Nexthop: 0.0.0.0
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 10.1.26.6
 Qos information : 0x0
 AS-path Nil, origin incomplete, MED 2, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255
 Not advertised to any peer yet

 BGP routing table entry information of 192.168.100.0/24:
 From: 10.1.25.5 (5.5.5.5)
 Route Duration: 00h05m55s  
 Relay IP Nexthop: 0.0.0.0
 Relay IP Out-Interface: GigabitEthernet0/0/2
 Original nexthop: 10.1.25.5
 Qos information : 0x0
 AS-path Nil, origin incomplete, MED 20, localpref 100, pref-val 0, valid, internal, pre 255, not preferred for MED
 Not advertised to any peer yet

配置命令

  • (1)创建路由策略,添加团体属性。
[AR6]route-policy Community_ospf_100-1 permit node 10
[AR6-route-policy]apply community 100:1

[AR5]route-policy Community_isis_100-2 permit node 10
[AR5-route-policy]apply community 100:2
  • (2)将策略应用于OSPF/ISIS路由引入上,并给制定邻居激活团体属性。
[AR6]bgp 100
[AR6-bgp]import ospf 1 route-policy Community_ospf_100-1 
[AR6-bgp]peer 10.1.26.2 advertise-community

[AR5]bgp 100
[AR5-bgp]import isis 1 route-policy Community_isis_100-2
[AR5-bgp]peer 10.1.26.2 advertise-community
  • 完成操作之后再查看路由明细,可以看到 Community:<CC:NN>。
<AR2>dis bgp routing-table 192.168.100.0

 BGP local router ID : 2.2.2.2
 Local AS number : 100
 Paths:   2 available, 1 best, 1 select
 BGP routing table entry information of 192.168.100.0/24:
 From: 10.1.26.6 (6.6.6.6)
 Route Duration: 00h13m40s  
 Relay IP Nexthop: 0.0.0.0
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 10.1.26.6
 Qos information : 0x0
 Community:<100:1>
 AS-path Nil, origin incomplete, MED 2, localpref 100, pref-val 0, valid, intern
al, best, select, active, pre 255
 Not advertised to any peer yet

 BGP routing table entry information of 192.168.100.0/24:
 From: 10.1.25.5 (5.5.5.5)
 Route Duration: 00h13m17s  
 Relay IP Nexthop: 0.0.0.0
 Relay IP Out-Interface: GigabitEthernet0/0/2
 Original nexthop: 10.1.25.5
 Qos information : 0x0
 Community:<100:2>
 AS-path Nil, origin incomplete, MED 20, localpref 100, pref-val 0, valid, inter
nal, pre 255, not preferred for MED
 Not advertised to any peer yet

团体属性过滤

以上介绍的是如何设置团体属性,而团体属性过滤 Community-Filter则是像ACL一样,用于匹配团体属性。

与ACL一样Community-Filter也有标准(Basic,序号1~99)和高级(Advanced,序号100-199)。

[AR1]ip community-filter ?
  INTEGER<1-99>     Community-filter number (basic)
  INTEGER<100-199>  Community-filter number (advanced)
  advanced          Advanced community-filter
  basic             Basic community-filter
  
# 可使用序号创建
ip community-filter 1 permit ......

# 可使用名称创建
ip community-filter basic XXXX permit ......

案例配置3

  • 为了突出团体属性的作用,提出图中的要求,禁止将ISIS路由发布给AR1。
  • 默认情况下所有活动且最优的BGP路由会发布给EBGP邻居,故可以在AR1邻居上配置一个Export的Community-Filter路由策略将ISIS的团体路由给剔除掉。
  • 目前常接触标准的Community-Filter,故以此为主进行配置。

在这里插入图片描述

  • 由于是自己乱画的拓扑并不能直观的看出结果,所以先将AR2-AR6之间的线先断掉,这样网络中只有ISIS的路由了。此时可以看到默认情况下AR1是可以收到ISIS路由的。

在这里插入图片描述
在这里插入图片描述

开始配置过滤ISIS团体属性路由操作:

  • (1)于AR2上创建团体属性过滤
[AR2]ip community-filter basic Filter_ISIS_Community permit 100:2
  • (2)创建路由策略,匹配团体属性并设置相应动作。

先把匹配上团体属性的路由先deny掉,再permit放行其它路由。

[AR2]route-policy Filter_ISIS_Community deny node 10
[AR2-route-policy]if-match community-filter Filter_ISIS_Community
[AR2-route-policy]quit

[AR2]route-policy Filter_ISIS_Community permit node 20
[AR2-route-policy]quit
  • (3)将路由策略绑定到EBGP邻居AR1上
[AR2]bgp 100
[AR2-bgp]peer 10.1.12.1 route-policy Filter_ISIS_Community export
  • 最后在AR2再查看BGP路由信息,可以发现没有从AR1上学习到关于ISIS的路由了。

AS_Path Filter

随着网络越来越大,BGP网络中可能会与多个AS互联且业务路由可能与本地相隔多个AS网络。

AS_Path-Filter(AS路径过滤),是将BGP中的AS_Path属性作为匹配条件的过滤器,利用BGP路由携带的AS_Path列表对路由进行过滤。

  • 若网络中某台路由器不希望接收某些AS的路由时,可以利用AS_PathFilter对携带这些AS号的路由进行过滤,从而实现拒绝某些路由。
  • 与其它过滤功能不一样的是,AS路径过滤采用正则表达式匹配。为此对于匹配的范围和灵活程度有了极大的提升。

关于正则表达式的介绍,在此仅使用到简单基础的几个。

^ 1 # 匹配以1开头的AS路径,如100,1111,100 200等。

2$ # 匹配以2为结尾的AS路径,如12,100 102等。

.* # 匹配所有

100 # 直接填写数字,则是匹配所有存在100的AS路径,如100、100 200、300 100 200。

[100] # 方括号内填写数字,表示只匹配AS路径为100。

配置命令

  • 创建AS路径过滤时,与ACL相似以序号名称创建。
[AR2]ip as-path-filter ?
  INTEGER<1-256>  Specify an access-list number
  STRING<1-51>    Specify an as-path-filter name
  • 创建一个匹配经过100 200的AS路径路由
[AR2]ip as-path-filter 1 deny "100 200"
  • AS路径过滤可以创建多个,默认按照从上至下匹配
# 先放行100 200的,再放行200 300,最后.*拒绝所有
ip as-path-filter 1 permit "100 200"
ip as-path-filter 1 permit "200 300"
[AR2]ip as-path-filter 1 deny .*

案例配置4

  • 如图,AR1与AR3将环回口发布入BGP中,默认情况下AR2可以学习到AR1、AR3的环回口路由。
  • 要求实现过滤来源自AS200的路由(但不过滤AS300的)。

在这里插入图片描述

  • 默认情况下,AR2的BGP路由表信息。
  • 此时可以从Path/Ogn中查看到该路由的AS-Path信息。
[AR2]dis bgp routing-table 
 Total Number of Routes: 4
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
 *>   192.168.1.0        10.1.12.1       0                     0      200i
 *>   192.168.3.0        10.1.12.1                             0      200 300i
  • (1)创建AS路径过滤,只匹配源自AS200的路由(只匹配AS200,不匹配AS 200 300)。

^200$的意思是:匹配开头为200的,结尾也为200的,也就是只匹配AS200。

[AR2]ip as-path-filter 1 permit ^200$
  • (2)创建路由策略
[AR2]route-policy Filter_AS200_AS-path deny node 10
[AR2-route-policy]if-match as-path-filter 1
[AR2-route-policy]quit

[AR2]route-policy Filter_AS200_AS-path permit node 20
[AR2-route-policy]quit
  • (3)绑定路由策略

因为路由是从AR1进入到AR2中,故绑定的方向为Import。

[AR2-bgp]peer 10.1.12.1 route-policy Filter_AS200_AS-path import 

虽然前面有添加了Export的策略,但方向不冲突就不会出现命令覆盖。

peer 10.1.12.1 route-policy Filter_ISIS_Community export

peer 10.1.12.1 route-policy Filter_AS200_AS-path import

如果方向相同,只能绑定一个策略的话,就需要再创建一个新策略,将两个策略进行合并在一起。

  • 配置完成之后,再查看AR1的BGP路由表信息
[AR2]dis bgp routing-table 
 Total Number of Routes: 7
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
 *>   192.168.3.0        10.1.12.1                             0      200 300i

ORF

Outbound Route Filtering 输出路由过滤

能将本端设备配置的出口路由策略通过路由刷新报文发送给BGP邻居。

BGP邻居根据本端的出口策略,在路由发送时对路由进行过滤,只发送本端需要的路由。这样不仅避免了本端设备接收大量无用的路由,降低了本端设备的CPU使用率,还有效减少了BGP邻居的配置工作,降低了链路带宽的占用率。

个人注解:通过ORF实现对端发送指定的路由过来,避免发送过多无用的路由。

主要应用于本端设备希望BGP邻居只发送需要的路由,而BGP邻居又不愿意针对不同设备维护不同的出口策略时,可以运用BGP ORF特性(简读:邻居单独为了某个设备创建策略)。

案例配置5

  • 要求AR1通过ORF技术实现只接收来自AR3的192.168.31.0/24路由。

在这里插入图片描述

  • 查看目前AR1的BGP路由情况
<AR1>dis bgp routing-table 

 Total Number of Routes: 6
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
 *>   192.168.3.0        10.1.13.3       0                     0      300i
 *>   192.168.31.0       10.1.13.3       0                     0      300i
  • (1)由于ORF采用前缀列表进行过滤路由,故第一步创建前缀列表。
# 例如:匹配192.168.31.0/24的路由
[AR1]ip ip-prefix 1 permit 192.168.31.0 24
  • (2)创建ORF,使允许向该邻居发送ORF报文,绑定前缀列表(序号1)
[AR1]bgp 200
[AR1-bgp]peer 10.1.13.3 ip-prefix 1 import 
[AR1-bgp]peer 10.1.13.3 capability-advertise orf ip-prefix send 

peer 邻居 capability-advertise orf ip-prefix 动作

有三种主要动作:both 双向、send 发送、receive 接收。

给邻居绑定前缀列表之后,需要指定该邻居的ORF动作,如send发送本端的前缀列表策略给对端。

而对端需要具备receive接收才能完成这个ORF功能。

  • 疑惑:都已经绑定了前缀策略了,如果我不配置ORF是什么现象?

绑定策略之后,的确只能接收到指定的路由。

但对端其中是发送了一堆路由过来,而是只是从中过滤出所需的路由,非常占用链路带宽。

  • 此时AR1的BGP路由表:
<AR1>dis bgp routing-table
 Total Number of Routes: 5
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
 *>   192.168.31.0       10.1.13.3       0                     0      300
  • 但此时AR3所通告给AR1的路由有:
<AR3>display bgp routing-table peer 10.1.13.1 advertised-routes 

 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>   192.168.3.0        10.1.13.3       0                     0      300i
 *>   192.168.31.0       10.1.13.3       0                     0      300i

为了减少AR3通告大量无用的路由,故需要开启ORF功能进行辅助

  • (3)邻居路由器上配置接收ORF报文
[AR3]bgp 300
[AR3-bgp]peer 10.1.13.1 capability-advertise orf ip-prefix receive 
  • 此时再查看AR3通告给AR1的路由,发现只通告AR1所需的路由了。
<AR3>display bgp routing-table peer 10.1.13.1 advertised-routes 

 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
 *>   192.168.31.0       10.1.13.3       0                     0      300i

扩展

由于有些厂商的设备的ORF能力码与RFC规定的能力码不同,因此为了与其他厂商设备互通,可以配置non-standard-compatible参数。

如果不加non-standard-compatible参数,则ORF可能协商失败。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/294445.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python split()方法详解:分割字符串

Python 中&#xff0c;除了可以使用一些内建函数获取字符串的相关信息外&#xff08;例如 len() 函数获取字符串长度&#xff09;&#xff0c;字符串类型本身也拥有一些方法供我们使用。 注意&#xff0c;这里所说的方法&#xff0c;指的是字符串类型 str 本身所提供的&#x…

ubuntu22.04配置双网卡绑定提升带宽

这里写自定义目录标题 Bonding简介配置验证参考链接 Bonding简介 bonding(绑定)是一种linux系统下的网卡绑定技术&#xff0c;可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡&#xff0c;能够提升网络吞吐量、实现网络冗余、负载均衡等功能&#xff0c;有很…

专业课130+,总分390+四川大学951信号与系统考研通信,电子信息经验分享

今年专业课130&#xff0c;总分390&#xff0c;顺利上岸&#xff0c;将近一年复习一路走来&#xff0c;感慨很多&#xff0c;希望以下经历可以给后来的同学提供一些参考。 初试备考经验 公共课&#xff1a;三门公共课&#xff0c;政治&#xff0c;英语&#xff0c;数学。在备…

基于SSM+Jsp的叮当书城、网上书城购物系统(有文档Java毕业设计)

大家好&#xff0c;我是DeBug&#xff0c;很高兴你能来阅读&#xff01;作为一名热爱编程的程序员&#xff0c;我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里&#xff0c;我将会结合实际项目经验&#xff0c;分享编程技巧、最佳实践以及解决问题的方法。无论你是…

怎么用活码二维码生成器?多种活码在线制作

扫码看内容的方式被很多行业应用&#xff0c;最常见的内容就是展现文字、图片、视频等类型&#xff0c;那么这种将不同内容组合展示的方法是什么样的呢&#xff1f;想要制作二维码最简单的方法可以使用二维码生成器工具来处理&#xff0c;下面就将具体的二维码制作的步骤分享给…

如何使用可视化管理工具DockerUI远程管理docker容器

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…

数据资产入表正式施行,企业如何对数据资产进行会计核算?

2024年1月1日&#xff0c;《企业数据资源相关会计处理暂行规定》正式施行&#xff0c;数据资源将作为资产在企业的会计和财务报告中确认、计量、报告和披露。这代表着企业数据相关的支出由损益变成资产类&#xff0c;可以计入资产&#xff0c;不仅可以减少投入期对利润的影响&a…

浅谈园区建设“一站式企业服务平台”的必要性!

​ 随着数字经济的快速发展与新一代信息技术的日新月异&#xff0c;打造智慧型、高效能的园区运营模式已成为现代产业园区转型升级的关键路径&#xff0c;其中&#xff0c;构建“一站式企业服务平台”成为了园区创新企业服务机制、提升企业服务效能、优化营商环境的重要举措。 …

IP地址定位技术的应用及其重要性

随着网络技术的快速发展&#xff0c;网络安全问题日益凸显&#xff0c;IP地址定位技术在网络安全领域的应用也越来越广泛。本文将介绍IP地址定位技术在网络安全领域的应用及其重要性。 一、IP地址定位技术概述 IP地址定位技术是指通过一定的技术手段&#xff0c;将虚拟网络中的…

液冷数据中心生态建设启动:浪潮信息力推绿色算力产业发展

近日&#xff0c;由中国电子技术标准化研究院主办的“节能环保低碳 我们在行动”第二届电子信息行业绿色环保大会在江苏无锡盛大举行。会上&#xff0c;中国电子技术标准化研究院、浪潮信息等五家发起单位共同启动“液冷数据中心生态建设”&#xff0c;浪潮信息服务器产品线总经…

电子招标采购系统源码之从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理

随着市场竞争的加剧和企业规模的扩大&#xff0c;招采管理逐渐成为企业核心竞争力的重要组成部分。为了提高招采工作的效率和质量&#xff0c;我们提出了一种基于电子化平台的解决方案。该方案旨在通过电子化招投标&#xff0c;使得招标采购的质量更高、速度更快&#xff0c;同…

cissp 第10章 : 物理安全要求

10.1 站点与设施设计的安全原则 物理控制是安全防护的第一条防线&#xff0c;而人员是最后一道防线。 10.1.1 安全设施计划 安全设施计划通过关键路径分析完成。 关键路径分析用于找出关键应用、流程、运营以及所有必要支撑元索间的关系。 技术融合指的是各种技术、解决方案…

gRPC接口怎样从proto文件到具体使用

proto文件转为头文件和源码 proto文件是一种预编译的规定文件&#xff0c;用来告诉gRPC 的服务如何生成对应的代码。 具体的使用方式请参考&#xff1a;介绍文档&#xff1a;proto 文件的关键字介绍 具体的说&#xff0c;一个proto文件分为三部分&#xff1a;指定环境&#…

SpringIOC之ApplicationListenerDetector

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

Burp Suite Intruder的4种攻击类型

这里写自定义目录标题 Burp Suite Intruder的4种攻击类型 Burp Suite Intruder的4种攻击类型

StartAI 生图关键词整理 第一期

最近很多小伙伴向小编反馈“StartAI生图效果很差”&#xff0c;“效果不好”...... AI生图的关键在于是否投喂合适的关键词。往往好的创意需要好的词汇去润色~ 小编立刻决定给小伙伴们整理生图关键词&#xff01;&#xff01;&#xff01;&#xff01; 一、生成菠萝的创意切面…

LeGO-LOAM 安装以及运行

一、源码地址&#xff1a; GitHub - RobustFieldAutonomyLab/LeGO-LOAM: LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable TerrainLeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain - GitH…

can/CANFD数据记录仪——冬标神器

冬测案例 新能源电池在冬标中要测试电池的电性能&#xff0c;热管理&#xff0c;充电&#xff0c;SOC的性能电动车的关键组之一是动力电池&#xff0c;动力电池的表现&#xff0c;除了依赖自身的材料&#xff0c;工艺等硬件素质外&#xff0c;还依赖电池管理系统的表现&#xf…

[ABAP] 修改SAP网页端登录界面

文章目录 前言一、配置服务二、Class实现1. 创建类2. 重写方法 三、测试四、附 - 自动登录 前言 我们在SICF配置一些HTTP服务使用之后使用时&#xff0c;打开网页会提示输入账号密码&#xff0c;但是这个会以弹窗形式出现。 这对客户体验是很不友好的&#xff0c;这篇文章将会…

C#高级 09 IEnumerable可枚举类型--可迭代类型

了解Linq操作需先了解IEnumerable可枚举类型–可迭代类型&#xff0c;因为Linq中的很多函数的返回值类型和传入的形参类型都是IEnumerable的。 IEnumerable可枚举类型–可迭代类型 只要一个类型实现了IEnumerable接口&#xff0c;就可以对这个类型进行遍历。 首选来看IEnumer…