1. 程式人生 > >使用Quagga測試IPv4/IPv6 BGP雙棧動態路由(by quqi99)

使用Quagga測試IPv4/IPv6 BGP雙棧動態路由(by quqi99)

作者:張華  發表於:2016-07-04
版權宣告:可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本版權宣告

( http://blog.csdn.net/quqi99 )


測試環境 

測試環境依然用上次測STT的兩臺物理機, 已有的網路環境如下:


node1, duduo.seg, 

  • eth0: 10.230.56.14,   1000Mb/s,  br-ex
  • eth6: 10.230.56.15,  10000Mb/s, out-off-band management
  • eth7: 192.168.122.2, 10000Mb/s, br-phy
sudo ovs-vsctl -- --may-exist add-br br-ex
sudo ovs-vsctl -- --may-exist add-port br-ex eth0
sudo ifconfig eth0 0.0.0.0 up
sudo ifconfig br-ex 10.230.56.233/21
sudo ovs-vsctl -- --may-exist add-br br-phy
sudo ovs-vsctl -- --may-exist add-port br-phy eth7
sudo ifconfig eth7 0.0.0.0 up
sudo ifconfig br-phy 192.168.122.2/24
node2, voltorb.seg,
  • eth0: 10.230.56.21,   1000Mb/s, out-off-band management
  • eth4: 192.168.122.3, 10000Mb/s, br-phy
sudo ovs-vsctl -- --may-exist add-br br-phy
sudo ovs-vsctl -- --may-exist add-port br-phy eth4
sudo ifconfig eth4 0.0.0.0 up
sudo ifconfig br-phy 192.168.122.3/24
這次BGP實驗規劃的新增的網路環境如下:-------------------------------       -------------------------------
|   eth6: 10.230.56.15/21     |-------|   eth0: 10.230.56.21/21     |
|   eth6: 2001:db8:3::1/64    |       |   eth0: 2001:db8:3::2/64    |
|     AS: 100                 |       |     AS: 200                 |
| br-phy: 2001:db8:1::1/64    |-------| br-phy: 2001:db8:2::1/64    |       
| br-phy: 192.168.1.1/24      |       | br-phy: 192.168.2.1/24      |
-------------------------------       -------------------------------
sudo ip addr add 2001:db8:3::1/64 dev eth6
sudo ip addr add 2001:db8:1::1/64 dev br-phy
sudo ip addr add 192.168.1.1/24 dev br-phy
sudo ip addr add 2001:db8:3::2/64 dev eth0
sudo ip addr add 2001:db8:2::1/64 dev br-phy
sudo ip addr add 192.168.2.1/24 dev br-phy

Quagga安裝及防火牆配置

sudo apt-get install quagga 
sudo chown quagga.quaggavty /etc/quagga/*.conf
sudo chmod 640 /etc/quagga/*.conf

echo "net.ipv4.conf.all.forwarding=1" | sudo tee -a /etc/sysctl.conf 
echo "net.ipv4.conf.default.forwarding=1" | sudo tee -a /etc/sysctl.conf 
sed 's/#net.ipv6.conf.all.forwarding=1/net.ipv6.conf.all.forwarding=1/g' /etc/sysctl.conf | sudo tee /etc/sysctl.conf
echo "net.ipv6.conf.default.forwarding=1" | sudo tee -a /etc/sysctl.conf 
sudo sysctl -p
sudo ip6tables -F
# BGP sessions
sudo iptables -A INPUT -p tcp --dport 179 -j ACCEPT
sudo iptables -A INPUT -p tcp --sport 179 -j ACCEPT
# Telnet session to zebra
sudo iptables -A INPUT -p tcp --dport 2601 -j ACCEPT
# Telnet session to quagga/bgpd
sudo iptables -A INPUT -p tcp --dport 2605 -j ACCEPT

Quagga配置檔案

1, 兩節點上的配置檔案/etc/quagga/zebra.confsudo cp /usr/share/doc/quagga/examples/zebra.conf.sample /etc/quagga/zebra.conf
[email protected]:~$ sudo cat /etc/quagga/zebra.conf
hostname duduo         #另一臺節點修改為voltorb
password zebra
enable password zebra
log file /var/log/quagga/zebra.log
1, 兩節點上的配置檔案/etc/quagga/daemons
[email protected]:~$ sudo cat /etc/quagga/daemons 
zebra=yes
bgpd=yes

ospfd=no
ospf6d=no
ripd=no
ripngd=no
isisd=no
babeld=no
3, 兩節點上的配置檔案/etc/quagga/bgpd.conf如下:
[email protected]:~$ sudo cat /etc/quagga/bgpd.conf 
hostname duduo
password zebra
log file /var/log/quagga/bgpd.log
log stdout
!
router bgp 100 
no synchronization 
bgp router-id 10.230.56.15
network 192.168.1.0/24
neighbor 10.230.56.21 remote-as 200
neighbor 10.230.56.21 description test-v4
neighbor 2001:db8:3::2 remote-as 200
neighbor 2001:db8:3::2 description test-v6
no auto-summary
no neighbor 2001:db8:3::2 activate
!
address-family ipv6
network 2001:db8:1::/48
network 2001:db8:1::/56
network 2001:db8:1::/64
neighbor 2001:db8:3::2 activate
neighbor 2001:db8:3::2 route-map IPV6-OUT out
exit-address-family
!
ipv6 prefix-list pl-ipv6 seq 10 permit 2001:db8:1::/56 le 64
route-map IPV6-OUT permit 10
match ipv6 address prefix-list pl-ipv6
set ipv6 next-hop global 2001:db8:3::1
!
line vty
!
debug bgp events
debug bgp filters
!debug bgp fsm
!debug bgp keepalives
debug bgp updates
[email protected]:~$ sudo cat /etc/quagga/bgpd.conf
hostname voltorb
password zebra
log file /var/log/quagga/bgpd.log
log stdout
!
router bgp 200
no synchronization
bgp router-id 10.230.56.21
network 192.168.2.0/24
neighbor 10.230.56.15 remote-as 100
neighbor 10.230.56.15 description test-v4
neighbor 2001:db8:3::1 remote-as 100
neighbor 2001:db8:3::1 description test-v6
no auto-summary
no neighbor 2001:db8:3::1 activate
!
address-family ipv6
network 2001:db8:2::/48
network 2001:db8:2::/56
network 2001:db8:2::/64
neighbor 2001:db8:3::1 activate
neighbor 2001:db8:3::1 route-map IPV6-OUT out
exit-address-family
!
ipv6 prefix-list pl-ipv6 seq 10 permit 2001:db8:2::/56 le 64
route-map IPV6-OUT permit 10
match ipv6 address prefix-list pl-ipv6
set ipv6 next-hop global 2001:db8:3::2
!
line vty
!
debug bgp events
debug bgp filters
!debug bgp fsm
!debug bgp keepalives
debug bgp updates


驗證結果

兩節點上重啟quagga程序(sudo service quagga restart)後觀察到的鄰居資訊如下:
[email protected]:~$ sudo vtysh

Hello, this is Quagga (version 0.99.22.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

duduo# show bgp summary
BGP router identifier 10.230.56.15, local AS number 100
RIB entries 6, using 672 bytes of memory
Peers 2, using 9120 bytes of memory

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
2001:db8:3::2   4   200      10      11        0    0    0 00:06:30        2

Total number of neighbors 1


[email protected]:~$ sudo vtysh

Hello, this is Quagga (version 0.99.22.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

voltorb# show bgp summary
BGP router identifier 10.230.56.21, local AS number 200
RIB entries 6, using 672 bytes of memory
Peers 2, using 9120 bytes of memory

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
2001:db8:3::1   4   100      11      14        0    0    0 00:08:22        2

Total number of neighbors 1
兩節點觀察到的日誌分別如下:
2016/07/04 09:29:46 BGP: BGPd 0.99.22.4 starting: [email protected], [email protected]<all>:179
2016/07/04 09:29:46 BGP: Import timer expired.
2016/07/04 09:29:49 BGP: [Event] BGP connection from host 2001:db8:3::2
2016/07/04 09:29:49 BGP: [Event] BGP connection IP address 2001:db8:3::2 is Idle state
2016/07/04 09:29:50 BGP: 2001:db8:3::2 [Event] Connect start to 2001:db8:3::2 fd 13
2016/07/04 09:29:51 BGP: 2001:db8:3::2 send UPDATE 2001:db8:1::/56
2016/07/04 09:29:51 BGP: 2001:db8:3::2 send UPDATE 2001:db8:1::/64
2016/07/04 09:29:51 BGP: 2001:db8:3::2 rcvd UPDATE w/ attr: , origin i, mp_nexthop 2001:db8:3::2(fe80::3ea8:2aff:fe21:9908), metric 0, path 200
2016/07/04 09:29:51 BGP: 2001:db8:3::2 rcvd 2001:db8:2::/56
2016/07/04 09:29:51 BGP: 2001:db8:3::2 rcvd UPDATE w/ attr: , origin i, mp_nexthop 2001:db8:3::2(fe80::3ea8:2aff:fe21:9908), metric 0, path 200
2016/07/04 09:29:51 BGP: 2001:db8:3::2 rcvd 2001:db8:2::/64
2016/07/04 09:29:53 BGP: 10.230.56.21 [Event] Connect start to 10.230.56.21 fd 14
2016/07/04 09:29:54 BGP: 10.230.56.21 send UPDATE 192.168.1.0/24
2016/07/04 09:29:54 BGP: 10.230.56.21 rcvd UPDATE w/ attr: nexthop 10.230.56.21, origin i, metric 0, path 200
2016/07/04 09:29:54 BGP: 10.230.56.21 rcvd 192.168.2.0/24


2016/07/04 09:29:11 BGP: 2001:db8:3::1 [Event] Connect start to 2001:db8:3::1 fd 13
2016/07/04 09:29:11 BGP: stream_read_try: read failed on fd 13: Connection reset by peer
2016/07/04 09:29:11 BGP: 2001:db8:3::1 [Error] bgp_read_packet error: Connection reset by peer
2016/07/04 09:29:12 BGP: [Event] BGP connection from host 2001:db8:3::1
2016/07/04 09:29:12 BGP: [Event] Make dummy peer structure until read Open packet
2016/07/04 09:29:12 BGP: 2001:db8:3::1 [Event] Transfer accept BGP peer to real (state Active)
2016/07/04 09:29:12 BGP: 2001:db8:3::1 [Event] Accepting BGP peer delete
2016/07/04 09:29:13 BGP: 2001:db8:3::1 send UPDATE 2001:db8:2::/56
2016/07/04 09:29:13 BGP: 2001:db8:3::1 send UPDATE 2001:db8:2::/64
2016/07/04 09:29:13 BGP: 2001:db8:3::1 rcvd UPDATE w/ attr: , origin i, mp_nexthop 2001:db8:3::1(fe80::8edc:d4ff:feb3:9c3c), metric 0, path 100
2016/07/04 09:29:13 BGP: 2001:db8:3::1 rcvd 2001:db8:1::/56
2016/07/04 09:29:13 BGP: 2001:db8:3::1 rcvd UPDATE w/ attr: , origin i, mp_nexthop 2001:db8:3::1(fe80::8edc:d4ff:feb3:9c3c), metric 0, path 100
2016/07/04 09:29:13 BGP: 2001:db8:3::1 rcvd 2001:db8:1::/64
2016/07/04 09:29:15 BGP: [Event] BGP connection from host 10.230.56.15
2016/07/04 09:29:15 BGP: [Event] Make dummy peer structure until read Open packet
2016/07/04 09:29:15 BGP: 10.230.56.15 [Event] Transfer accept BGP peer to real (state Active)
2016/07/04 09:29:15 BGP: 10.230.56.15 [Event] Accepting BGP peer delete
2016/07/04 09:29:16 BGP: 10.230.56.15 send UPDATE 192.168.2.0/24
2016/07/04 09:29:16 BGP: 10.230.56.15 rcvd UPDATE w/ attr: nexthop 10.230.56.15, origin i, metric 0, path 100
2016/07/04 09:29:16 BGP: 10.230.56.15 rcvd 192.168.1.0/24

路由變化如下:
[email protected]:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.230.56.1     0.0.0.0         UG    0      0        0 eth6
10.230.56.0     0.0.0.0         255.255.248.0   U     0      0        0 eth6
10.230.56.0     0.0.0.0         255.255.248.0   U     0      0        0 br-ex
10.230.56.0     0.0.0.0         255.255.248.0   U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 br-phy
192.168.2.0     10.230.56.21    255.255.255.0   UG    0      0        0 eth6
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 br-phy
[email protected]:~$ route -n |grep 192.168.2
192.168.2.0     10.230.56.21    255.255.255.0   UG    0      0        0 eth6
[email protected]:~$ ping -c 1 192.168.2.1
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=0.232 ms

--- 192.168.2.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.232/0.232/0.232/0.000 ms
[email protected]:~$ ping6 -c 1 2001:db8:2::1
PING 2001:db8:2::1(2001:db8:2::1) 56 data bytes
64 bytes from 2001:db8:2::1: icmp_seq=1 ttl=64 time=0.287 ms

--- 2001:db8:2::1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.287/0.287/0.287/0.000 ms

[email protected]:~$ route -n -6 |grep 2001:db8:2
2001:db8:2::/64                fe80::3ea8:2aff:fe21:9908  UG   1024 1     0 eth6
2001:db8:2::/56                fe80::3ea8:2aff:fe21:9908  UG   1024 0     0 eth6

相關推薦

使用Quagga測試IPv4/IPv6 BGP動態路由(by quqi99)

作者:張華  發表於:2016-07-04版權宣告:可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本版權宣告( http://blog.csdn.net/quqi99 )測試環境 測試環境依然用上次測STT的兩臺物理機, 已有的網路環境如下:node1,

配置IPv4/IPv6 BGP動態路由

IPv6 BGP簡介 BGP-4 是一種用於不同自治系統之間的動態路由協議,只能管理 IPv4 的路由資訊。對於使用其它網路層協議(如 IPv6 等)的應用,在跨自治系統傳播時就受到一定限制。 為了提供對多種網路層協議的支援,IETF 對 BGP-4 進行了

IPv6與隧道

由於Internet的規模以及目前網路中數量龐大的IPv4使用者和裝置,IPv4到v6的過渡不可能一次性實現。而且,目前許多企業和使用者的日常工作越來越依賴於Internet,它們無法容忍在協議過渡過程中出現的問題。所以IPv4到v6的過渡必須是一個循序漸進的過程,在體

第11章 拾遺4:IPv6IPv4共存技術(1)_技術和6to4隧道技術

說明 images 測試結果 ges conf alt style dns服務 數據 6. IPv6和IPv4共存技術 6.1 雙棧技術 (1)雙協議主機的協議結構 (2)雙協議棧示意圖   ①雙協議主機在通信時首先通過支持雙協議的DNS服務器查詢與目的主機名對應的

第11章 拾遺5:IPv6IPv4共存技術(1)_技術和6to4隧道技術

6. IPv6和IPv4共存技術 6.1 雙棧技術 (1)雙協議主機的協議結構 (2)雙協議棧示意圖   ①雙協議主機在通訊時首先通過支援雙協議的DNS伺服器查詢與目的主機名對應的IP地址。   ②再根據指定的IPv6或IPv4地址開始通訊。   ③Win2008

OSS支援IPV6/IPV4訪問域名

摘要: OSS開放IPv6/IPv4雙棧域名,可同時支援IPv6/IPv4客戶端的訪問,支援下一代網際網路技術IPv6,可服務海量物理網裝置連線等應用場景。 下一代IP協議 IPv4地址已接近枯竭,被譽為下一代網際網路技術的IPv6成為新的“全球網際網路門牌號”,它可以讓地球上

IPv6技術系列⑨——IPv6IPv4實驗

water 基於 傳輸層 設備配置 地址 ips fig -o tps 一、技術簡介 雙協議棧是指在單個節點同時支持IPv4和IPv6兩種協議棧。由於IPv6和IPv4是功能相近的網絡層協議, 兩者都基於相同的物理平臺, 而且加載於其上的傳輸層協議TCP和UDP也基本沒有區

企業IPv6部署及IPv6-ospf

    IPv6雙棧部署 概述此實驗模擬一個企業外部入口網站進行IPv6改造,採用雙棧方案,即網站IPv4與IPv6共存。實驗還同時模擬了運營商網路,採用的是IPv6 OSPF。實際環境中可能不同的運營商會有不同的網路接入模式,需要根據自己的實際情況來進

Java算式解釋器

java 解釋器 import java.util.Stack; // import java.util.regex.*; import java.util.Stack; /** * This class use for get calculate result from the Strin

P1155 排序

sta stack log print hide lan pre sin target 雙棧排序 洛谷鏈接 用雙棧進行排序,也就是給出一個序列,讓你用兩個棧來排序,輸出排序的操作類型。 實現也比較簡單,如果存在一個k,使得i<j<k且a[k]<a[i]&l

洛谷——P1155 排序

是什麽 hellip das ron sta ash nbsp 壓入 front 題目描述 Tom最近在研究一個有趣的排序問題。如圖所示,通過2個棧S1和S2,Tom希望借助以下4種操作實現將輸入序列升序排序。 操作a 如果輸入序列不為空,將第一個元素壓入棧S1

bgp線是什麽意思,bgp線的優勢

實力 冗余備份 路由 strong 大致 系統資源 best 外部 加速 近年來,在談到服務器租用托管的時候,我們經常看到雙線、bgp雙線之類的詞匯;那麽,bgp雙線是什麽意思,雙線和bgp的區別,bgp雙線的優勢有什麽? 下面來為大家具體介紹! BGP(Border Ga

NOIP2008 排序

染色 void 順序輸出 操作 getchar 這樣的 con 復雜度 stack 題目描述 Tom最近在研究一個有趣的排序問題。如圖所示,通過2個棧S1和S2,Tom希望借助以下4種操作實現將輸入序列升序排序。 操作a 如果輸入序列不為空,將第一個元素壓入棧S1

模擬WALMART網絡架構-冗余

網絡綜合應用 bgp應用 重分布 SiteA and Site B 通信SiteA: 192.168.1.X 192.168.3.XSiteB: 192.168.2.X 192.168.4.X =====MPLS Router Configuration=====R1 2 3 4 5 6 ====

Dijkstra的算術表達式求值算法

pre ble alua nbsp 算術 如果 ack 壓入 rar 1 public static double evaluate(String inStr) { 2 Stack<String> ops = new Sta

排序 2008年NOIP全國聯賽提高組(二分圖染色)

push space style efault panel none ive hint slide 雙棧排序 2008年NOIP全國聯賽提高組 時間限制: 1 s 空間限制: 128000 KB 題目等級 : 大師 M

ipv4 ipv6數據庫存儲

str them tor strings seve 數據庫 eve dig bit If you‘re storing them as strings rather than bit patterns: IPv4 addresses consist of four 3-di

TCP/UDP,動態路由,RIP/OSPF/BGP簡述

動態 節點和 變化 繼續 穩定 實時 ipv 傳輸 spf 1、TCP/UDP的區別:TCP相對UDP相對安全;但傳輸效率慢2、什麽是靜態路由靜態路由就是必須手工配置,無法適應網絡拓撲變化,變化一次就得修改一次什麽是動態路由路由器自動建立自己的路由表,並且能夠根據實際情況的

noip 2008 排序

AI 用兩個 main () 入棧 top 現在 數字 AC 題目大意: 給定n和一串數字,這串數字是一個1~n的排列。現在要用兩個棧給這些數字排序。首先先判斷是否有解,有解的話再輸出字典序最小的方案: 入棧1,輸出a,出棧1,輸出b 入棧2,輸出c,出棧2,輸出d 分析:

IPv6靜態路由動態路由

下一跳 如果 ipv pre 原因 onf 地址 路由 數據包 實驗涉及命令以及知識補充 IPv6 接口必須配置 IPv6 地址和子網掩碼 使用 ipv6 address ipv6-address/prefix-length [link-local | eui-64]