今天学习使用frr搭建一个bgp网络环境,练习以下功能:shell
#bgp 配置 router bgp 7675 bgp router-id 192.168.59.128 neighbor 192.168.59.129 remote-as 7676 ! ! #配置一个host sudo ip netns add ns1 sudo ip link add veth1 type veth peer name eth0 netns ns1 sudo ip netns exec ns1 ip link set eth0 up sudo ip netns exec ns1 ip link set lo up sudo ip netns exec ns1 ip addr add 2.2.2.2/24 dev eth0 sudo ip netns exec ns1 ip route add default via 2.2.2.254 dev eth0 sudo ip link set veth1 up sudo ip link add br1 type bridge sudo ip link set br1 up sudo ip link set veth1 master br1 sudo ip addr add 2.2.2.254/24 dev br1 #打开转发开关 ubuntu@ubuntu:~$ sudo -i root@ubuntu:~# echo 1 > /proc/sys/net/ipv4/ip_forward #添加几个其它网段的路由 ubuntu@ubuntu:~$ sudo ip route add 2.2.3.0/24 via 192.168.59.129 dev ens34 ubuntu@ubuntu:~$ sudo ip route add 2.2.4.0/24 via 192.168.59.129 dev ens34 ubuntu@ubuntu:~$ sudo ip route add 2.2.5.0/24 via 192.168.59.129 dev ens34 ubuntu@ubuntu:~$ sudo ip route add 2.2.6.0/24 via 192.168.59.129 dev ens34
#bgp 配置 router bgp 7676 bgp router-id 192.168.59.129 neighbor 192.168.59.128 remote-as 7675 ! ! #配置一个host sudo ip netns add ns1 sudo ip link add veth1 type veth peer name eth0 netns ns1 sudo ip netns exec ns1 ip link set eth0 up sudo ip netns exec ns1 ip link set lo up sudo ip netns exec ns1 ip addr add 3.3.3.3/24 dev eth0 sudo ip netns exec ns1 ip route add default via 3.3.3.254 dev eth0 sudo ip link set veth1 up sudo ip link add br1 type bridge sudo ip link set br1 up sudo ip link set veth1 master br1 sudo ip addr add 3.3.3.254/24 dev br1 #打开转发开关 ubuntu@ubuntu:~$ sudo -i root@ubuntu:~# echo 1 > /proc/sys/net/ipv4/ip_forward
ubuntu(config-router)# aggregate-address 2.2.0.0/16 summary-only ubuntu(config-router)# network 2.2.3.0/24
ubuntu(config-router)# network 3.3.3.0/24
ubuntu# show ip bgp BGP table version is 25, local router ID is 192.168.59.128, vrf id 0 Default local pref 100, local AS 7675 Status codes: s suppressed, d damped, h history, * valid, > best, = multipath, i internal, r RIB-failure, S Stale, R Removed Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 2.2.0.0/16 0.0.0.0 32768 i s> 2.2.3.0/24 0.0.0.0 0 32768 i *> 3.3.3.0/24 192.168.59.129 0 0 7676 i Displayed 3 routes and 3 total paths ubuntu# #能够看到2.2.3.0/24前面有个s字母,表示更加具体的路由被抑制了。
ubuntu# show ip bgp BGP table version is 24, local router ID is 192.168.59.129, vrf id 0 Default local pref 100, local AS 7676 Status codes: s suppressed, d damped, h history, * valid, > best, = multipath, i internal, r RIB-failure, S Stale, R Removed Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 2.2.0.0/16 192.168.59.128 0 7675 i *> 3.3.3.0/24 0.0.0.0 0 32768 i Displayed 2 routes and 2 total paths ubuntu# #只收到对等体的聚合路由
从上面能够看出,summary-only选项,该选项只会宣告聚合地址,不会宣告更具体的地址。具体路由会被抑制,标号为s>。ubuntu
ubuntu@ubuntu:~$ sudo ip netns exec ns1 ping 3.3.3.3 -c 2 PING 3.3.3.3 (3.3.3.3) 56(84) bytes of data. 64 bytes from 3.3.3.3: icmp_seq=1 ttl=62 time=0.372 ms 64 bytes from 3.3.3.3: icmp_seq=2 ttl=62 time=0.339 ms --- 3.3.3.3 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 32ms rtt min/avg/max/mdev = 0.339/0.355/0.372/0.025 ms ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ sudo ip netns exec ns1 ping 2.2.2.2 -c 2 PING 2.2.2.2 (2.2.2.2) 56(84) bytes of data. 64 bytes from 2.2.2.2: icmp_seq=1 ttl=62 time=0.564 ms 64 bytes from 2.2.2.2: icmp_seq=2 ttl=62 time=0.359 ms --- 2.2.2.2 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 3ms rtt min/avg/max/mdev = 0.359/0.461/0.564/0.104 ms ubuntu@ubuntu:~$