Bài 2: Kết nối BGP giữa các AS IPv6

Sử dụng phần mềm router XORP để thiết lập kết nối BGP giữa AS1 & AS2 như hình vẽ bên trên. Các router R4 và R6 là các router biên của các AS. Bài này chỉ tập trung lan tỏa các thông tin định tuyến giữa các router biên nên không sử dụng IGP trong mỗi AS. Thay vào đó, phương pháp router tĩnh được sử dụng. Đương nhiên với router tĩnh, bảng định tuyến của các router nội bộ trong mỗi AS sẽ không được cập nhật tự động, tuy nhiên ta không quan tâm đến vấn đề đó trong bài thực hành này. Các bước tiến hành như sau:

  • Bước 1: Cài đặt XORP cho các router.
  • Bước 2: Thiết lập cấu hình các router XORP.
  • Bước 3: Vận hành BGP với router XORP.

Bước 1: Cài đặt XORP cho các router

eXtensible Open Router Platform (XORP) là router mã nguồn mở hỗ trợ BGP và các giao thức khác. Nó được trường đại học Berkeley xây dựng từ năm 2000 và hiện đang được trường University College Londonđã tiếp tục duy trì. XORP không được cung cấp theo các gói cài đặt sẵn với yum, ta cần dịch và build router này từ mã nguồn. Làm theo các bước hướng dẫn như trên trang web của XORP để tải mã nguồn và cài đặt (http://xorp.run.montefiore.ulg.ac.be/latex2wiki/getting_started):
Cài đặt git và tải mã nguồn XORP. Sau lệnh này, mã nguồn sẽ được tải về đặt trong thư mục xorp trên thư mục home của user.

[root@localhost ~]# yum install git
. . .
[root@localhost ~]# git clone git://github.com/greearb/xorp.ct.git
. . . 

Cài đặt công cụ biên dịch scons và các thư viện phần mềm cần thiết. Lưu ý rằng trên trang web của XORP đưa ra danh sách các phần mềm để dịch trên phiên bản Linux Fedora, để dịch được trên CentOS, cần các gói phần mềm tương đương:

[root@localhost ~]# yum install scons
. . .
[root@localhost ~]# yum groupinstall “Development Tools”  (tương đương thư viện build-esential)
. . .
[root@localhost ~]# yum install boost-devel (tương đương thư viện libboost-all-dev)
. . .
[root@localhost ~]# yum install openssl-devel (tương đương thư viện libssl-dev)
. . .
[root@localhost ~]# yum install ncurses-devel (tương đương thư viện libncurses5-dev)
. . .
[root@localhost ~]# yum libpcap-devel (tương đương thư viện libpcap-dev)
. . .
[root@localhost ~]# yum install traceroute

Dịch và cài đặt XORP:

[root@localhost ~]# cd xorp.ct/xorp
[root@localhost ~]# scons (mất khoảng hơn 1 tiếng đồng hồ)
[root@localhost ~]# scons check (bước này test các chức năng của router xorp, mất vài tiếng đồng hồ và có thể không cần thực hiện)
[root@localhost ~]# scons install

Bước 2: Thiết lập cấu hình các router XORP

Sau khi cài đặt, chương trình XORP được đưa vào thư mục /usr/local/xorp cùng với một số file hỗ trợ vẫn nằm trong thư mục mã nguồn. Để vận hành router, cần chuẩn bị quyền truy nhập cần thiết cho user root:

[root@localhost ~]# groupadd xorp
[root@localhost ~]# usermod -a -G xorp root

 
XORP được cung cấp với một số file cấu hình chuẩn để triển khai router này với các giao thức routing khác nhau như RIP, OSPF. Các file cấu hình này được để trong thư mục xorp.ct/xorp/rtrmgr/config. Sử dụng file cấu hình bgp.boot và sửa lại tên các giao diện kết nối mạng. File cấu hình GBP trên R6:

[root@R6 ~]# cat ./bgp.boot 
/* $XORP$ */

interfaces {
    interface eth4 {
	vif eth4 {
	    address 2000::3 {
		prefix-length: 64
	    }
	}
    }
}

fea {
    unicast-forwarding6 {
	disable: false
    }
}


policy {
   policy-statement "static-to-bgp" {
      term a {
        from {
          protocol: "static"
        }
        then {
          accept
        }
      }
   }
}

protocols {
    static {
	route fec7::/64 {
            next-hop: fec6::1
            metric: 1
        }
	route fec8::/64 {
            next-hop: fec6::1
        }
    }

  bgp {
	bgp-id: 10.10.10.10
	local-as: 65006
	export: "static-to-bgp"

	peer 2000::1 {
	    local-ip: 2000::3
	    as: 65004
	    next-hop: 10.10.10.1
            next-hop6: 2000::3

            ipv6-unicast: true
            ipv6-multicast: true
            ipv4-unicast: true
            ipv4-multicast: true

    }  
  }
}             

File cấu hình BGP trên R4:

[root@R4 ~]# cat ./bgp.boot 
/* $XORP$ */

interfaces {
    interface eth3 {
	vif eth3 {
	    address fec3::2 {
		prefix-length: 64
	    }
	}
    }
    interface eth4 {
	vif eth4 {
	    address 2000::1 {
		prefix-length: 64
	    }
	}
    }
}

fea {
    unicast-forwarding6 {
	disable: false
    }
}

policy {
   policy-statement "static-to-bgp" {
      term a {
        from {
          protocol: "static"
        }
        then {
          accept
        }
      }
   }
}


protocols {
    static {
        route fec0::/64 {
            next-hop: fec3::1
    	}
	route fec1::/64 {
	    next-hop: fec3::1
	}
	route fec2::/64 {
	    next-hop: fec3::1
	}
    }


    bgp {
	bgp-id: 10.10.10.1
	local-as: 65004
	export: "static-to-bgp"

	peer 2000::3 {
	    local-ip: 2000::1
	    as: 65006
	    next-hop: 10.10.10.2
	    next-hop6: 2000::1

	    ipv6-unicast: true
	    ipv6-multicast: true
	    ipv4-unicast: true
	    ipv4-multicast: true
	}
    }
}            

Bước 3: Vận hành BGP với router XORP

Lưu ý rằng các thông tin routing tĩnh phải được khai báo trong cấu hình XORP thay vì khai báo trực tiếp trong  kernel Linux như trong bài thực hành số 1. Điều này cho phép XORP nhận được các bảng routinh tĩnh này và gửi đến router biên trong AS khác. Chạy các router XORP (/usr/local/xorp/sbin/xorp_rtrmgr -b ./bgp.boot) với các file cấu hình trên các router biên rồi kiểm tra bảng định tuyến của chúng, các thông tin định tuyến đã được cập nhật từ AS láng riềng:

[root@R6 ~]# ip -6 route
2000::/64 dev eth4  proto kernel  metric 256  mtu 1500
fe80::/64 dev eth3  proto kernel  metric 256  mtu 1500
fe80::/64 dev eth4  proto kernel  metric 256  mtu 1500
fe80::/64 dev eth2  proto kernel  metric 256  mtu 1500
fe80::/64 dev eth1  proto kernel  metric 256  mtu 1500
fec0::/64 via 2000::1 dev eth4  proto xorp  metric 1024  mtu 1500
fec1::/64 via 2000::1 dev eth4  proto xorp  metric 1024  mtu 1500
fec2::/64 via 2000::1 dev eth4  proto xorp  metric 1024  mtu 1500
fec6::/64 dev eth3  proto kernel  metric 256  mtu 1500
default dev eth3  proto static  metric 1  mtu 1500

Các thông tin vận hành BGP có thể được kiểm tra với lệnh show bgp peer:

[root@R6> show bgp peers
Peer 1: local 2000::3/179 remote 2000::1/179

root@R6> show route table ipv6 unicast ebgp
fec0::/64       [ebgp(20)/0]
> to 2000::1 via eth4/eth4
fec1::/64       [ebgp(20)/0]
> to 2000::1 via eth4/eth4
fec2::/64       [ebgp(20)/0]
> to 2000::1 via eth4/eth4