jjzjj

BGP协议基础配置—学习

pxwhfs 2024-04-16 原文

BGP重要概念

IGP是运行在AS内部的路由协议,主要有RIP、OSPF及IS-IS,着重于发现和计算路由。

EGP是运行在AS之间的路由协议,通常是BGP,它是实现路由控制和选择最好的路由协议。

这次主要讲的是BGP。

BGP它不生产路由,是路由的搬运工,就比如是把AS10的路由搬到AS20上去,network,不叫产生,叫注入,把原来产生的IGP路由注入到到BGP中,然后BGP传给其它AS就下车了。

AS之间专门使用BGP(Border Gateway  Protocol,边界网关协议)进行路由传递,相较于传统的IGP协议:

BGP只是基于TCP,只要能够建立TCP连接即可建立BGP

只传递路由信息,不会暴露AS内的拓扑信息。

触发式更新,而不是进行周期性更新。

#端口号式179

BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导对等体按策略发布路由。

BGP能够支撑MPLS/VPN的应用,传递客户的VPN路由。

BGP提供路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效的提高了网络稳定性。

EBGP(External BGP)位于不同自治系统的BGP路由器之间的BGP对等体关系。两台路由器之间要建立BGP对等体关系,必要要满足两个条件:

  1. 两个路由器所属的AS不同(即AS号不同)
  2. 在配置EBGP时,peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立。

IBGP(Internal BGP)

位于相同的自治系统的BGP;路由器之间的BGP邻接关系。

实验场景

如下图1所示:公司的网络采用BGP协议作为路由协议,而且是由多个自治系统组成的,不同分支区域使用了不同的AS号,完成公司网络的搭建工作,根据网络场景需求底层路由使用OSPF作为IGP路由协议。

图1-拓扑搭建 

实验分析

根据公司网络规划分析,有自治系统12、234、45,其中AR1属于自治系统12,AR2、AR3和AR4属于自治系统234,AR5属于自治系统45。

AR1与AR2处于不同自治系统,使用直接接口建立EBGP邻居,AR2、AR3、AR4处于同一个自治系统之间,使用环回接口建立IBGP邻居,AR4与AR5处于不同的自治系统,使用环回接口建立EBGP邻居。

 实验目的

掌握BGP建立邻居的配置方法

观察IBGP与EBGP中路由的下一跳变化

掌握BGP更新源的配置方法

掌握EBGP更新源的配置方法

掌握BGP注入路由的配置方法

实验配置步骤

步骤一 基础配置与IP地址

在所有路由器上配置IP地址和子网掩码,其中都要配置环回接口0,子网掩码为32位,模拟虚拟用户。

<Huawei>system-view   
[Huawei]sysname AR1

[AR1]ipv6
[AR1]interface GigabitEthernet 0/0/0
[AR1-GigabitEthernet0/0/0]ip address 10.1.12.1 24

[AR1-GigabitEthernet0/0/0]ipv6 enable

[AR1-GigabitEthernet0/0/0]ipv6 address  2001::1 64

[AR1-GigabitEthernet0/0/0]quit

[AR1]interface LoopBack 0

[AR1-LoopBack0]ip address 1.1.1.1 32

[AR1-LoopBack0]quit

<Huawei>system-view   
[Huawei]sysname AR2

[AR2]ipv6
[AR2]interface GigabitEthernet 0/0/0
[AR2-GigabitEthernet0/0/0]ip address 10.1.12.2 24

[AR2-GigabitEthernet0/0/0]ipv6 enable

[AR2-GigabitEthernet0/0/0]ipv6 address  2001::2 64

[AR2-GigabitEthernet0/0/0]quit

[AR2]interface GigabitEthernet 0/0/1
[AR2-GigabitEthernet0/0/1]ip address 10.1.23.2 24
[AR2-GigabitEthernet0/0/1]quit

[AR2]interface LoopBack 0

[AR2-LoopBack0]ip address 2.2.2.2 32

[AR2-LoopBack0]quit

[AR3]interface GigabitEthernet 0/0/1
[AR3-GigabitEthernet0/0/1]ip address 10.1.23.3 24

[AR3-GigabitEthernet0/0/1]interface gigabitethernet 0/0/2
[AR3-GigabitEthernet0/0/2]ip address 10.1.34.3 24

[AR3-GigabitEthernet0/0/2]interface loopback 0
[AR3-LoopBack0]ip address 3.3.3.3 32
[AR3-LoopBack0]quit

[AR3]router id 3.3.3.3

[AR4]interface GigabitEthernet 0/0/0
[AR4-GigabitEthernet0/0/0]ip address 10.1.45.4 24
[AR4-GigabitEthernet0/0/0]interface gigabitethernet 0/0/2
[AR4-GigabitEthernet0/0/2]ip address 10.1.34.4 24
[AR4-GigabitEthernet0/0/2]interface loopback 0
[AR4-LoopBack0]ip address 4.4.4.4 32
[AR4-LoopBack0]quit
[AR4]router id 4.4.4.4

[AR5]interface GigabitEthernet 0/0/0
[AR5-GigabitEthernet0/0/0]ip address 10.1.45.5 24

[AR5-GigabitEthernet0/0/0]quit

[AR5]interface LoopBack 0
[AR5-LoopBack0]ip address 5.5.5.5 32
[AR5-LoopBack0]quit
[AR5]router id 5.5.5.5

配置完之后,记得用ping命令去测试一下直连链路的连通性。

步骤二 配置EBGP对等体

1、AR1与AR2之间使用物理直连接口建立EBGP对等体关系,配置如下:

[AR1]bgp 12
[AR1-bgp]peer 10.1.12.2 as-number 234
[AR1-bgp]

[AR2]bgp 234
[AR2-bgp]peer 10.1.12.1 as-number 12
[AR2-bgp]

图2- AR1与AR2成功建立EBGP邻居关系 

2、 AR4与AR5之间建立EBGP邻居使用环回口建立但两个AS不同,之间的环回接口路由不可达,前提是路由要可达,不然邻居建立不起来,不用ospf,可以使用静态路由。

图3- AR4与AR5的环回口路由不可达

配置静态路由如下:

[AR4]ip route-static 5.5.5.5 32 10.1.45.5

[AR5]ip route-static 4.4.4.4 32 10.1.45.4

图4- AR4与AR5的环回口路由可达

[AR4]bgp 234 
[AR4-bgp]peer 5.5.5.5 as-number 45
[AR4-bgp]peer 5.5.5.5 connect-interface loopback 0  #指定更新源为loopback 0接口地址
[AR4-bgp]peer 5.5.5.5 ebgp-max-hop 2   #跳数修改为2
[AR4-bgp]

[AR5]bgp 45
[AR5-bgp]peer 4.4.4.4 as-number 234
[AR5-bgp]peer 4.4.4.4 connect-interface loopback 0    #指定更新源为loopback 0接口地址
[AR5-bgp]peer 4.4.4.4 ebgp-max-hop    //跳数修改为255
[AR5-bgp]

跳数太小,因为是非直连,它的跳数TTL值是1,一跳就没有了,所以要修改挑=跳数。

(#EBGP建立邻居一般都是用直连接口建立,用环回口建立的话比较麻烦,要保证路由问题,修改更新源、修改多跳,没必要。但这是实验练习。)

图5- AR4与AR5成功建立EBGP邻居关系 

步骤三 建立IBGP对等体

自治系统AS234中使用OSPF作为IGP,AR1、AR2、AR3上配置IBGP全互联,loopback 0地址作为更新源,所以也要将loopback 0网段发布进入OSPF。

1、配置OSPF协议,配置如下:

[AR2]ospf
[AR2-ospf-1]area 0
[AR2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[AR2-ospf-1-area-0.0.0.0]network 10.1.23.2  0.0.0.0
[AR2-ospf-1-area-0.0.0.0]

[AR3]ospf
[AR3-ospf-1]area 0
[AR3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
[AR3-ospf-1-area-0.0.0.0]network 10.1.34.3 0.0.0.0
[AR3-ospf-1-area-0.0.0.0]network 10.1.23.3 0.0.0.0
[AR3-ospf-1-area-0.0.0.0]

[AR4]ospf
[AR4-ospf-1]area 0
[AR4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
[AR4-ospf-1-area-0.0.0.0]network 10.1.34.4 0.0.0.0
[AR4-ospf-1-area-0.0.0.0]

图6 AR3与AR2、AR4的ospf邻居关系建立成功

2、在AR2、AR3、AR4上配置IBGP全互联,使用loopback 0地址作为更新源。

[AR2]bgp 234
[AR2-bgp]peer 3.3.3.3 as-number 234
[AR2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[AR2-bgp]peer 4.4.4.4 as-number 234
[AR2-bgp]peer 4.4.4.4 connect-interface loopback 0
[AR2-bgp]

[AR3]bgp 234
[AR3-bgp]peer 2.2.2.2 as-number 234
[AR3-bgp]peer 2.2.2.2 connect-interface loopback 0
[AR3-bgp]peer 4.4.4.4 as-number 234
[AR3-bgp]peer 4.4.4.4 connect-interface loopback 0
[AR3-bgp]

[AR4]bgp 234
[AR4-bgp]peer 2.2.2.2 as-number 234
[AR4-bgp]peer 2.2.2.2 connect-interface loopback 0
[AR4-bgp]peer 3.3.3.3 as-number 234
[AR4-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[AR4-bgp]

图7 AR3与AR2、AR4的IBGP邻居建立成功

步骤四 配置IPv6实现EBGP邻居 建立

[AR1]bgp 12
[AR1-bgp]peer 2001::2 as-number 234
[AR1-bgp]
 

[AR2-bgp]peer 2001::1 as-number 12
[AR2-bgp]

图8 AR1的bgp视图下一些命令解释

[AR1-bgp]ipv6-family unicast
[AR1-bgp-af-ipv6]peer 2001::2 enable
[AR1-bgp-af-ipv6]

[AR2-bgp]ipv6-family unicast
[AR2-bgp-af-ipv6]peer 2001::1 enable
[AR2-bgp-af-ipv6]

图9 AR1与AR2的IPv6成功建立EBGP邻居关系

步骤五 使用network命令注入路由信息

实验目的是实现AR1与AR5的loopback接口能通信。

等所有邻居起来之后,宣告路由,先将AR1的环回接口0地址,使用network命令将该网段注入BGP。

[AR1-bgp]network 1.1.1.1 32

[AR1-bgp]display bgp routing-table

 BGP Local router ID is 1.1.1.1 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


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

#有效且最优路由

 *>   1.1.1.1/32         0.0.0.0            0                                   0      i     #是通告network方式注入的路由
[AR1-bgp]                 # 看到下一跳是4个0表示该网段是在本地AS产生的

在AR2查看到该路由,如图10所示:12表示是AS12产生的,下一跳是10.1.12.1,i表示该路由是通告network方式注入到bgp的。路由继续传递,再去AR3上查看。

图10 AR2上的bgp路由信息

如图11所示:在AR3上,可以看到下一跳是10.1.12.1,对于AR3来说是不可达的,所以该路由无效,在AR2上运行的ospf协议并没有宣告10.1.12.0网段,所以对AR3来说,该10.1.12.1地址不可达。

注意:无效且不是最优:i      有效:*     最优:>       有效且是最优路由:*>

图11 AR3的bgp路由信息与10.1.12.1的联通性

从EBGP邻居学习路由,传给IBGP的时候,下一跳不变,为什么不变呢?

也就是说:AR2从它的EBGP邻居AR1学来的路由1.1.1.1传给它的IBGP邻居AR3的时候,下一跳没有变,还是10.1.12.1,为什么呢?

因为BGP是把整个AS看出一个整体、一个大路由器,而AR2 AR3 AR4在同一个AS内,所以它们的路由器都认为下一跳是10.1.12.1。

如图12所示:AR4的情况也是一样是无效路由。

 图12 AR4的bgp路由信息

所以AR2从ebgp邻居AR1上学习路由再传递给ibgp邻居AR3 、AR4下一跳不变,导致AR3、AR4下一跳不可达,出现无效路由。在AR5上查看BGP路由,是没有路由的,因为AR4上的路由是无效且不是最优路由,不会传出去。

解决:在AR2上修改下一跳路由,配置如下:

[AR2]bgp 234
[AR2-bgp]peer 3.3.3.3 next-hop-local     //告诉AR3下一跳是我,不是10.1.12.1
[AR2-bgp]peer 4.4.4.4 next-hop-local         //告诉AR4下一跳是我,不是10.1.12.1
[AR2-bgp]

 图13 AR4的bgp路由信息 

如图12所示: 在AR3上查看路由是3有效且最优路由。

但是从AR3从AR2学习的路由能发给AR4吗;

从IBGP邻居学习路由不会发给ibgp邻居,所以AR3从ibgp邻居AR2学习的路由不会发给ibgp邻居AR4

但是AR2与AR4也有ibgp邻居,如图14所示:AR4也可以从AR2上学习到该路由。

 图14 AR4的bgp路由信息 

 下一跳是2.2.2.2,有效且是最优路由,传递给AR5,在AR5上查看路由,如图15所示:

图15 AR5的bgp路由信息与全局IP路由表信息 

图16 测试AR5与AR1的环回接口联通性 

 因为AR5上出接口用的是g0/0/0的10.1.45.5去ping的,如图17所示:AR1上是没有10.1.45.0网段路由的,因为我们还没把10.1.45.0网段路由注入。

图17 AR1上的10.1.45.0路由情况 

 那么现在应该在AR4上还是AR5上注入10.1.45.0网段?

如果是在AR5上注入,配置如下:

[AR5]bgp 45 
[AR5-bgp] network 10.1.45.0 24
[AR5-bgp]

在AR5上的 10.1.45.0会通过EBGP传给AR4,如图18所示:10.1.45.0网段对于AR4来说是直连路由,直连路由是最优的,那么BGP就会被AR4放弃了。

图18 AR4的bgp路由信息与全局IP路由表信息 

 如图19所示:AR3的bgp路由表,因为是次优路由,AR4不会将其发给AR2、AR3。

 图19 AR3的bgp路由信息

所以选择在AR4上注入,配置如下:

[AR5]bgp 45 
[AR5-bgp]undo network 10.1.45.0 24
[AR5-bgp]

[AR4]bgp 234
[AR4-bgp]network 10.1.45.0 24
[AR4-bgp]

图20 AR4的bgp路由信息

 图21 AR3的bgp路由信息

图22 AR2的bgp路由信息

*>i  分别代表的是什么意思?

有效且最优路由:*>      从ibgp邻居学来的路由:i 

如图23所示:AR1上有10.1.45.0网段路由信息了。

图23 AR1的路由信息

如24所示:AR5上能ping通AR1的环回口。

 图24 在AR5上测试与AR1的环回口联通性

步骤六 使用import-route命令注入路由信息

 如果想用环回接口ping通,如图24所示:

图24 

还是不通,因为AR1上没有5.5.5.5路由,现在在AR4上注入还是AR5上注入?

因为在这之前AR4跟AR5上做了静态路由,静态路由的优先级为60,而BGP的优先级为255,静态路由更优,在这个前提下,要在AR4上注入。

[AR4]bgp 234
[AR4-bgp]import-route static 
[AR4-bgp]

BGP是个搬运工,只要路由表上有都它都可以搬运,不过在AR4上不用该network方式做用import-route方式,如图25所示:

图25

 在AR1上使用带源IP地址ping测试到AR5的loopback 0地址的联通性。

图26 测试联通性

 也可以尝试一下将AR2、AR3、AR4的环回接口都network注入bgp,会发现有的环回口路由信息根本没有被传出去。也就是前面实验详细讲解的是因为路由优选影响。下面再来分析一下,巩固一下:

[AR2]bgp 234

[AR2-bgp]network 2.2.2.2 32

[AR3]bgp 234

[AR3-bgp]network 3.3.3.3 32

[AR4]bgp 234

 [AR4-bgp]network 4.4.4.4 32

查看AR1的bgp路由信息,如图27所示:只看到了2.2.2.2/32网段传到AR1,并没有看到3.3.3.3/32跟4.4.4.4/32网段,前面也讲过了,AR2与AR3、AR4底层通信是使用ospf协议,那AR2已经通过ospf协议学习到3.3.3.3/32 ,4.4.4.4/32网段,那么AR2会优选通过ospf协议学来的,那么从它的IBGP邻居AR3、AR4学来的成为次优路由,就不会发布出去,AR1自然也不会收到。

 图27 AR1的bgp路由信息

所以选择在AR2上注入:配置操作如下: 

[AR3]bgp 234

[AR3-bgp]undo network 3.3.3.3 32

[AR4]bgp 234

 [AR4-bgp]undo network 4.4.4.4 32

[AR2]bgp 234

[AR2-bgp]network 3.3.3.3 32

 [AR2-bgp]network 4.4.4.4 32

 查看AR2的bgp路由信息,如图28所示:

 图28 AR2的bgp路由信息

 查看AR1的bgp协议的路由信息,如图29所示:

 图29 AR1上bgp协议的路由信息

AR4的路由表信息如图30所示:从bgp路由信息中可以看到2.2.2.2/32路由是无效路由,3.3.3.3/32路由有效且最优的,这里这两条路由都是通过它的ibgp邻居AR2传过来的,为什么2.2.2.2/32是无效,前面也讲过了,2.2.2.2/32是AR2的直连路由,直连路由是最优的,那么bgp路由成为了次优路由,并不会被传出去;

再看全局IP路由表中:3.3.3.3/32网段也是在AR2上network的,所以从ibgp邻AR1传过来的是有效且最优,前面也讲过了,AR4有从ospf协议先学来了3.3.3.3/32网段,而通过ospf学来的路由优选级高于bgp,所以看到AR4的全局IP路由表上3.3.3.3/32是显示通过ospf学来的,2.2.2.2/32网段也是。

 图30 AR4的bgp路由信息与全局IP路由表信息

再来看看AR5的全局IP路由表信息,如图31所示: 

 图31 AR5的全局IP路由表信息

想要AR5上有2.2.2.2/32网段的话,就得是在AR4上注入。配置操作如下:

[AR2]bgp 234

 [AR2-bgp]undo network 2.2.2.2 32

[AR4]bgp 234

 [AR4-bgp]network 2.2.2.2 32

再次查看AR4的bgp路由信息与全局IP路由表信息,如如图32所示:

图32 AR4的bgp路由信息·与全局IP路由表信息

 查看AR5的bgp路由信息与全局IP路由表信息,如如图33所示:

图33 AR5的bgp路由信息·与全局IP路由表信息

配置脚本

<AR1>display current-configuration 
[V200R003C00]
#
 sysname AR1
#
ipv6 
#
router id 1.1.1.1 
#
interface GigabitEthernet0/0/0
 ipv6 enable 
 ip address 10.1.12.1 255.255.255.0 
 ipv6 address 2001::1/64 
#
interface LoopBack0
 ip address 1.1.1.1 255.255.255.255 
#
bgp 12
 peer 10.1.12.2 as-number 234 
 peer 2001::2 as-number 234 
 #                                        
  network 1.1.1.1 255.255.255.255 
  peer 10.1.12.2 enable
 #
 ipv6-family unicast
  peer 2001::2 enable
#
return
<AR1> 

<AR2>display current-configuration 
[V200R003C00]
#
 sysname AR2
#
ipv6 
#
router id 2.2.2.2 
#
interface GigabitEthernet0/0/0
 ipv6 enable 
 ip address 10.1.12.2 255.255.255.0 
 ipv6 address 2001::2/64 
#
interface GigabitEthernet0/0/1
 ip address 10.1.23.2 255.255.255.0 
#
interface LoopBack0
 ip address 2.2.2.2 255.255.255.255 
#
bgp 234
 peer 3.3.3.3 as-number 234 
 peer 3.3.3.3 connect-interface LoopBack0 
 peer 4.4.4.4 as-number 234 
 peer 4.4.4.4 connect-interface LoopBack0
 peer 10.1.12.1 as-number 12 
 peer 2001::1 as-number 234 
 #
  network 3.3.3.3 255.255.255.255 
  network 4.4.4.4 255.255.255.255 
  peer 3.3.3.3 enable
  peer 3.3.3.3 next-hop-local 
  peer 4.4.4.4 enable
  peer 4.4.4.4 next-hop-local 
  peer 10.1.12.1 enable
 #
 ipv6-family unicast
  peer 2001::1 enable
#
ospf 1 
 area 0.0.0.0 
  network 2.2.2.2 0.0.0.0 
  network 10.1.23.2 0.0.0.0 
#                                         
return
<AR2>

<AR3>display current-configuration 
[V200R003C00]
#
 sysname AR3
#
router id 3.3.3.3 
#
interface GigabitEthernet0/0/1
 ip address 10.1.23.3 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 10.1.34.3 255.255.255.0 
#
interface LoopBack0
 ip address 3.3.3.3 255.255.255.255 
#
bgp 234
 peer 2.2.2.2 as-number 234 
 peer 2.2.2.2 connect-interface LoopBack0
 peer 4.4.4.4 as-number 234 
 peer 4.4.4.4 connect-interface LoopBack0       
#
ospf 1 
 area 0.0.0.0 
  network 3.3.3.3 0.0.0.0 
  network 10.1.23.3 0.0.0.0 
  network 10.1.34.3 0.0.0.0 
#
return
<AR3> 

[AR4]display current-configuration 
[V200R003C00]
#
 sysname AR4
#
router id 4.4.4.4 
#
interface GigabitEthernet0/0/0
 ip address 10.1.45.4 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 10.1.34.4 255.255.255.0 
#
interface LoopBack0
 ip address 4.4.4.4 255.255.255.255 
#
bgp 234
 peer 2.2.2.2 as-number 234 
 peer 2.2.2.2 connect-interface LoopBack0
 peer 3.3.3.3 as-number 234 
 peer 3.3.3.3 connect-interface LoopBack0
 peer 5.5.5.5 as-number 45 
 peer 5.5.5.5 ebgp-max-hop 2              
 peer 5.5.5.5 connect-interface LoopBack0
 #
  network 2.2.2.2 255.255.255.255 
  network 10.1.45.0 255.255.255.0 
  import-route static
  peer 2.2.2.2 enable
  peer 3.3.3.3 enable
  peer 5.5.5.5 enable
#
ospf 1 
 area 0.0.0.0 
  network 4.4.4.4 0.0.0.0 
  network 10.1.34.4 0.0.0.0 
#
ip route-static 5.5.5.5 255.255.255.255 10.1.45.5
#

return                                    
[AR4] 

[AR5]display current-configuration 
[V200R003C00]
#
 sysname AR5
#
router id 5.5.5.5 
#
interface GigabitEthernet0/0/0
 ip address 10.1.45.5 255.255.255.0 
#
interface LoopBack0
 ip address 5.5.5.5 255.255.255.255 
#
bgp 45
 peer 4.4.4.4 as-number 234 
 peer 4.4.4.4 ebgp-max-hop 255 
 peer 4.4.4.4 connect-interface LoopBack0                  
#
ip route-static 4.4.4.4 255.255.255.255 10.1.45.4
#
return
[AR5]

 知识点:路由优选级越小越优,可排列为直连路由>ospf>is-is>rip>bgp

(策略路由比路由更优先)

ProtoPre
Direct0
OSPF10
IS-IS15
Static60
RIP100
OSPF ASE、OSPF NSSA150
IBGP、EBGP255

有关BGP协议基础配置—学习的更多相关文章

  1. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  2. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  3. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  4. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  5. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  6. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  7. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  8. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  9. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

  10. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

随机推荐