加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • Part 01●??FRRouting概述?●
    • Part 02●??FRRouting支持的特性?●
    • Part 03●??FRRouting的架構(gòu)?●
    • Part 04●?如何快速搭建FRRouting??●
    • Part 05●??構(gòu)建實(shí)驗(yàn)測(cè)試環(huán)境?●
    • Part 06●??結(jié)語?●
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

五分鐘技術(shù)趣談 | 讓你的Linux-PC變成一臺(tái)簡(jiǎn)單的企業(yè)級(jí)路由器

2023/08/23
4489
閱讀需 16 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

作者:蔡伸,單位:中國(guó)移動(dòng)智慧家庭運(yùn)營(yíng)中心成都分公司

FRRouting (FRR)可以在本機(jī)Linux/Unix進(jìn)行部署,使機(jī)器快速具備各種路由協(xié)議交互功能,讓設(shè)備成為一個(gè)簡(jiǎn)單的企業(yè)界路由器。很多設(shè)備商的路由器產(chǎn)品就是基于FRR進(jìn)行二次開發(fā)的,可見對(duì)FRR的認(rèn)可度之高。

Part 01●??FRRouting概述?

FRRouting (FRR) 是一個(gè)免費(fèi)、開源互聯(lián)網(wǎng)路由協(xié)議套件,適用于Linux和Unix平臺(tái)。它實(shí)現(xiàn)了BGP、OSPF、RIP、IS-IS、PIM、LDP、BFD、Babel、PBR、OpenFabric 和 VRRP 等路由協(xié)議,并提供了alpha版本支持EIGRP和NHRP。

FRR無縫集成了本機(jī)Linux/Unix IP網(wǎng)絡(luò)堆棧,使其成為通用路由堆棧,適用于各種用例,包括將主機(jī)、虛擬機(jī)和容器連接到網(wǎng)絡(luò)、通告網(wǎng)絡(luò)服務(wù)、LAN交換和路由、互聯(lián)網(wǎng)接入路由器和互聯(lián)網(wǎng)對(duì)等互連等能力。

簡(jiǎn)而言之,F(xiàn)RR可以在本機(jī)Linux/Unix進(jìn)行部署,使機(jī)器快速具備各種路由協(xié)議交互功能,讓設(shè)備成為一個(gè)簡(jiǎn)單的企業(yè)界路由器。很多設(shè)備商的路由器產(chǎn)品就是基于FRR進(jìn)行二次開發(fā)的,可見對(duì)FRR的認(rèn)可度之高。

FRR主要集成了網(wǎng)絡(luò)三層路由協(xié)議,其中最重要且常用的如下:

OSPF(Open Shortest Path First):OSPF路由協(xié)議是用于網(wǎng)際協(xié)議(IP)網(wǎng)絡(luò)的鏈路狀態(tài)路由協(xié)議。該協(xié)議使用鏈路狀態(tài)路由算法的內(nèi)部網(wǎng)關(guān)協(xié)議(IGP),在單一自治系統(tǒng)(AS)內(nèi)部工作。適用于IPv4的OSPFv2協(xié)議定義于RFC 2328,RFC 5340定義了適用于IPv6的OSPFv3。

IS-IS(Intermediate system to intermediate system):中間系統(tǒng)到中間系統(tǒng)是一種內(nèi)部網(wǎng)關(guān)協(xié)議,是電信運(yùn)營(yíng)商普遍采用的內(nèi)部網(wǎng)關(guān)協(xié)議之一。標(biāo)準(zhǔn)的IS-IS協(xié)議是由國(guó)際標(biāo)準(zhǔn)化組織制定的ISO/IEC 10589:2002 所規(guī)范的。但是標(biāo)準(zhǔn)的IS-IS協(xié)議是為無連接網(wǎng)絡(luò)服務(wù)(CLNS)設(shè)計(jì)的,并不直接適合于IP網(wǎng)絡(luò),因此互聯(lián)網(wǎng)工程任務(wù)組制定可以適用于IP網(wǎng)絡(luò)的集成化的IS-IS協(xié)議,稱為集成IS-IS,它由RFC 1195等RFC文檔所規(guī)范。由于IP網(wǎng)絡(luò)的普遍存在,一般所稱的IS-IS協(xié)議,通常是指集成IS-IS協(xié)議。

BGP(Border Gateway Protocol):邊界網(wǎng)關(guān)協(xié)議(BGP)是運(yùn)行于 TCP 上的一種自治系統(tǒng)的路由協(xié)議。BGP 是一種用來處理像因特網(wǎng)大小的網(wǎng)絡(luò)的協(xié)議,也是一種能夠妥善處理好不相關(guān)路由域間的多路連接的協(xié)議。BGP 構(gòu)建在 EGP 的經(jīng)驗(yàn)之上。BGP 系統(tǒng)的主要功能是和其他的 BGP 系統(tǒng)交換網(wǎng)絡(luò)可達(dá)信息。網(wǎng)絡(luò)可達(dá)信息包括列出的自治系統(tǒng)(AS)的信息。這些信息有效地構(gòu)造了 AS 互聯(lián)的拓?fù)鋱D并由此清除了路由環(huán)路,同時(shí)在 AS 級(jí)別上可實(shí)施策略決策。

Part 02●??FRRouting支持的特性?

FRR支持豐富的特性和許多平臺(tái),不同平臺(tái)支持的特性有所不同,下表為FRR具體支持的特性。

Part 03●??FRRouting的架構(gòu)?

傳統(tǒng)的路由軟件通常是單個(gè)進(jìn)程程序,負(fù)責(zé)所有路由協(xié)議功能。相比之下,F(xiàn)RR使用了一種不同的方法。它由多個(gè)守護(hù)程序組成,共同構(gòu)建路由表。每個(gè)重要的協(xié)議都在它自己的守護(hù)程序中實(shí)現(xiàn),這些守護(hù)程序與一個(gè)中間守護(hù)程序(zebra)通信,協(xié)調(diào)路由決策并與數(shù)據(jù)平面通信。

FRR采用模塊化架構(gòu),具有高度的靈活性和可擴(kuò)展性。它的模塊化設(shè)計(jì)使得添加新的協(xié)議或功能非常容易。每個(gè)守護(hù)程序都實(shí)現(xiàn)了插件系統(tǒng),可以在運(yùn)行時(shí)加載新功能,從而擴(kuò)展整個(gè)套件而無需重新編譯整個(gè)程序。

FRR的架構(gòu)具有模塊化特點(diǎn),因此單個(gè)協(xié)議守護(hù)程序的錯(cuò)誤、崩潰或漏洞通常不會(huì)影響其他協(xié)議,提高了整個(gè)系統(tǒng)的彈性和可靠性。另外,F(xiàn)RR的靈活性使得它可以根據(jù)不同網(wǎng)絡(luò)的特定路由需求進(jìn)行定制。FRR的整體框架如下圖:

Zebra:Zebra 是一個(gè) IP 路由管理器。它提供內(nèi)核路由表更新、接口查找以及不同路由協(xié)議之間的路由重新分發(fā)。它是一個(gè)獨(dú)立進(jìn)程,所有進(jìn)程之間通信都通過zebra進(jìn)行。

BGPD、OSPFD:這些獨(dú)立的進(jìn)程代表了不同協(xié)議的處理進(jìn)程,以上兩個(gè)進(jìn)程分別實(shí)現(xiàn)了BGP和OSPF。

Part 04●?如何快速搭建FRRouting??

(1)獲取FRRouting源碼

從FRR官方網(wǎng)站上獲取FRRouting的git地址或者安裝包

https://frrouting.org/

以GitHub獲取源碼安裝為例:

git clone https://github.com/FRRouting/frr.git

(2)創(chuàng)建configuration

FRRouing下載后會(huì)提供一個(gè)配置腳本,可自動(dòng)檢測(cè)大多數(shù)主機(jī)配置。有幾個(gè)其他配置選項(xiàng)可用于自定義生成以包含或排除特定功能和依賴項(xiàng)。

./bootstrap.sh

在配置完成后,可以設(shè)置各類config屬性,如下表:

(3)打開內(nèi)核轉(zhuǎn)發(fā)功能

/etc/sysctl.conf或者/etc/sysctl.d/90-routing-sysctl.conf

打開ipv4和ipv6轉(zhuǎn)發(fā):

net.ipv4.conf.all.forwarding=1net.ipv6.conf.all.forwarding=1

(4)開始構(gòu)建

選擇配置選項(xiàng)后,運(yùn)行配置腳本并傳遞所選選項(xiàng),示例如下:

./configure     --prefix=/usr     --localstatedir=/var/run/frr     --sbindir=/usr/lib/frr     --sysconfdir=/etc/frr     --enable-pimd     --enable-watchfrr     ...

配置軟件后,就可以在系統(tǒng)中構(gòu)建和安裝它了。

make && sudo make install

一切成功之后,F(xiàn)RRouting就安裝成功了,可以開始設(shè)置FRRouting的配置文件了。

(5)進(jìn)程配置文件設(shè)置

剛安裝完后,啟動(dòng) FRR 不會(huì)執(zhí)行任何操作。這是因?yàn)楸仨毻ㄟ^編輯配置目錄中的文件來顯式啟用守護(hù)程序。此文件通常位于 /etc/frr/daemons 中,用于確定通過 init 或 systemd 發(fā)出服務(wù)啟動(dòng)/停止命令時(shí)激活哪些守護(hù)進(jìn)程。如下所示:

zebra=nobgpd=noospfd=noospf6d=noripd=noripngd=noisisd=nopimd=noldpd=nonhrpd=noeigrpd=nobabeld=nosharpd=nostaticd=nopbrd=nobfdd=nofabricd=no# If this option is set the /etc/init.d/frr script automatically loads# the config via "vtysh -b" when the servers are started.# Check /etc/pam.d/frr if you intend to use "vtysh"!vtysh_enable=yeszebra_options=" -s 90000000 --daemon -A 127.0.0.1"bgpd_options="   --daemon -A 127.0.0.1"ospfd_options="  --daemon -A 127.0.0.1"ospf6d_options=" --daemon -A ::1"ripd_options="   --daemon -A 127.0.0.1"ripngd_options=" --daemon -A ::1"isisd_options="  --daemon -A 127.0.0.1"pimd_options="  --daemon -A 127.0.0.1"ldpd_options="  --daemon -A 127.0.0.1"nhrpd_options="  --daemon -A 127.0.0.1"eigrpd_options="  --daemon -A 127.0.0.1"babeld_options="  --daemon -A 127.0.0.1"sharpd_options="  --daemon -A 127.0.0.1"staticd_options="  --daemon -A 127.0.0.1"pbrd_options="  --daemon -A 127.0.0.1"bfdd_options="  --daemon -A 127.0.0.1"fabricd_options="  --daemon -A 127.0.0.1"#MAX_FDS=1024# The list of daemons to watch is automatically generated by the init script.#watchfrr_options=""# for debugging purposes, you can specify a "wrap" command to start instead# of starting the daemon directly, e.g. to use valgrind on ospfd:#   ospfd_wrap="/usr/bin/valgrind"# or you can use "all_wrap" for all daemons, e.g. to use perf record:#   all_wrap="/usr/bin/perf record --call-graph -"# the normal daemon command is added to this at the end.

將需要打開的進(jìn)程設(shè)置為“yes”,然后執(zhí)行服務(wù)啟動(dòng)命令。

systemctl daemon-reloadsystemctl start frr

(6)使用界面

FRR的使用界面基本同cisco的路由器配置界面一致,安裝完后通過在系統(tǒng)中敲入vtysh進(jìn)入FRRouting管理界面,如下圖:

圖片來自筆者測(cè)試截圖,Ubuntu18.04

敲入configure terminal進(jìn)入配置管理模式,敲入?顯示支持的配置模塊,如下圖:

圖片來自筆者測(cè)試截圖,Ubuntu18.04

至此,Linux-PC已經(jīng)能夠配置各種路由協(xié)議和各類路由設(shè)備對(duì)接了。

Part 05●??構(gòu)建實(shí)驗(yàn)測(cè)試環(huán)境?

圖片來自筆者測(cè)試截圖,eNSP構(gòu)建

其中外省一路由設(shè)備通過CLOUD1用安裝了FRR的Linux-PC模擬,其他路設(shè)備均為華為路由設(shè)備。

外省1的配置如下:

圖片來自筆者測(cè)試截圖,Ubuntu18.04

實(shí)驗(yàn)結(jié)論:通過正常配置BGP命令,確保對(duì)端配置正常的情況下,在端到端進(jìn)行抓包,發(fā)現(xiàn)BGP完成了控制報(bào)文交互,BGP鄰居正常建立,端到端訪問正常,BGP發(fā)布的路由其他路由設(shè)備能正確學(xué)習(xí)到。

Part 06●??結(jié)語?

FRR是一個(gè)非常出色的開源軟件,它可以將普通的Linux-PC快速轉(zhuǎn)變成一臺(tái)功能強(qiáng)大的企業(yè)級(jí)路由器,滿足日常網(wǎng)絡(luò)需求。盡管如此,為了提高FRR的性能和穩(wěn)定性,我們需要研發(fā)人員投入更多的時(shí)間和精力,在不斷地研究和開發(fā)上不斷優(yōu)化完善。

未來,隨著數(shù)字化時(shí)代的到來和互聯(lián)網(wǎng)應(yīng)用領(lǐng)域的不斷擴(kuò)大,F(xiàn)RR將迎來巨大的機(jī)遇和挑戰(zhàn)。我們期待看到更多的高質(zhì)量特性被添加到FRR中,從而滿足不斷變化的市場(chǎng)需求。同時(shí),我們也預(yù)計(jì)FRR將吸引更多的行業(yè)專家參與其中,共同推動(dòng)其發(fā)展,為用戶帶來更加優(yōu)質(zhì)、安全、高效的使用體驗(yàn)。

參考文獻(xiàn)

[1] FRRouting技術(shù)文檔[EB/OL].[2023-06-20].https://docs.frrouting.org/projects/dev-guide/en/latest/.

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
ADM3053BRWZ 1 Analog Devices Inc Signal and Power Isolated CAN Transceiver with Integrated Isolated DC-to-DC Converter

ECAD模型

下載ECAD模型
$9.17 查看
KSZ8873MLL 1 Microchip Technology Inc DATACOM, LAN SWITCHING CIRCUIT, PQFP64

ECAD模型

下載ECAD模型
$5.42 查看
TLE6250GXUMA1 1 Infineon Technologies AG Interface Circuit, BICMOS, PDSO8, GREEN, PLASTIC, SOP-8
$1.08 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

移動(dòng)Labs是中國(guó)移動(dòng)的社交化新媒體平臺(tái),是面向外部行業(yè)及產(chǎn)業(yè)鏈合作伙伴的信息發(fā)布、業(yè)務(wù)發(fā)展和產(chǎn)業(yè)推進(jìn)門戶。