FRR BGP 协议分析2 -- 创建对等体的命令分析

本次继续分析BGP最简单的配置的代码实现,这样大家对BGP的框架会有进一步的熟悉:

router bgp 200

bgp router-id 2.2.2.2

 neighbor 3.3.3.3 remote-as 200

 neighbor 3.3.3.3 update-source 2.2.2.2

 

router bgp XX

命令执行函数是router_bgp_cmd,主要完成以下几点:

  1. 根据参数查找bgp 对象是否存在,第一个配置的route bgp XX将作为default,后续带vrf的将作为新的bgp对象
  2. 如果bgp对象不存在,则需要重新创建一个bgp对象,struct bgp *bgp,所有的bgp对象存放在struct bgp_master *bm链表里面,此时BGP 最重要,贯穿全局的顶级结构体struct bgp闪亮登场,后续都会和这个结构体打交道,和bgp相关的几乎都在这里面,也是BGP最大的一个结构体。

 

3、创建bgp对象是bgp_get函数,调用如下的几个函数:

  1. bgp_create 函数会创建新的struct bgp结构,并初始化里面很多的值和数据结构,其中最重要的peer对象,我们在下一个命令在分析
  2. bgp_router_id_set 处理router_id
  3. bgp_address_init 建立 bgp address的HASH ??什么地址?
  4. bgp_tip_hash_init ??
  5. bgp_scan_init 没懂,后续再补充
  6. 处理VRF相关的事情
  7. bgp_handle_socket 创建对应的socket,bgp是使用TCP 建立连接的,建立socker服务端,监听179端口,等待peer端的connect接入,其中会处理和VRF相关的socker创建的细节
  8. listnode_add(bm->bgp, bgp) -》加入全局的bgp链表

 

neighbor 3.3.3.3 remote-as 200

neighbor peer remote-as 命令就是配置一个对等体,peer是指对等体的地址(ipv4,ipv6地址),可以看到,bgp对等体之间是单播通信和OSPF协议的组播是不一样的。

对于路由协议,不管是基于3层的还是2层的,都需要建立自己的寻路数据库,也就是通过邻居找到下一跳,你要走的远,你就得认识更多邻居,以及邻居的邻居,好比一句老话,在家靠父母,出门靠朋友,朋友多路好走,就这么一个道理。

那么话又说回来了,创建对等体呢,就是给自己找邻居,找朋友,不过呢,BGP这个人呢,更像一个干中介的,比如卖房的中介,他自己不建房子,只把建好的房源介绍给要买房的人,同时还维护这个房源信息库,及时更新已经卖掉的房子。

peer_remote_as_vty处理CLI的命令,

如果传给peer的值不是一个合法的地址,那么会被当做是一个peer group/interface名称来处理,如果是合法的,检查下地址是否是本地的,如果不是,peer_remote_as 则开始peer创建的奇妙之旅。

按照国际惯例,查找一下是不是已经为这个peer地址创建了peer,如果peer地址相同,as值不一样,就修改一下peer的as值,如果这个peer已经是某个group的成员,那么就不能成功创建对等体关系了。

如果上面的事情都没有发生,那么就可以创建一个新的对等体了,peer_create负责创我们的peer:

  • 创建一个新的peer结构,并给里面的status赋值为Idle,端口号 BGP_PORT_DEFAULT = 179,初始化大部分的数据结构。
  • 初始化peer的ibuf和obuf来收发报文

  • peer会加入bgp->peer的链表,以及peerhash的HASH表里面
  • 在把peer加入对应的地址族里面

  • 最后,将这个peer加入到定时器任务中:

 

开启start timer定时器,定时器到期后,开始peer的状态机协商,最简单的配置已经分析完成,后面开始BGP 状态机的协商和分析。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值