首页 > 代码库 > quagga源码学习--BGP协议创建对等体

quagga源码学习--BGP协议创建对等体

现有的路由协议都是通过分布式协议逐个配置协商运行的,协议协议,一个就不需要协议咯,至少2个才能够协议着做事情嘛,不过呢,这样就出现网元过多配置困难的问题,对网管软件要求也越来越高,

SDN或许可能改变这个局面,但不管软件如何定义,报文还是在一个一个网络节点传输的,所以我们看到quagga这样多的传统网络配置命令不要觉得繁琐,不配置的话,协议不会工作哦。

 

嗯,这章的主题是创建对等体,就是通过配置命令来完成的。

“neighbor peer remote-as asn”

router bgp 1
neighbor 10.0.0.1 remote-as 2

neighbor peer remote-as 命令就是配置一个对等体,peer是指对等体的地址(ipv4,ipv6地址)。


接下来我们看代码是如何创建对等体的,入口函数:

1 DEFUN(neighbor_remote_as,
2       neighbor_remote_as_cmd,
3       NEIGHBOR_CMD2 "remote-as " CMD_AS_RANGE,
4       NEIGHBOR_STR
5       NEIGHBOR_ADDR_STR2
6       "Specify a BGP neighbor\n"
7       AS_STR) {
8     return peer_remote_as_vty(vty, argv[0], argv[1], AFI_IP, SAFI_UNICAST);
9 }

可以看到,bgp对等体之间是单播通信。

1 /* If peer does not exist, create new one.  If peer already exists,
2    set AS number to the peer.  */
3 int
4 peer_remote_as(struct bgp *bgp, union sockunion *su, as_t *as,
5                afi_t afi, safi_t safi)

peer_remote_as函数来完成创建新对等体或者为对等体设置新的as号。

 

quagga源码学习--BGP协议创建对等体