0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)Linux主板多網(wǎng)絡的優(yōu)先級設置簡介

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-02-06 11:16 ? 次閱讀

支持多網(wǎng)絡是英創(chuàng)工控主板的特色之一,英創(chuàng)公司推出的ESMARC系列核心板,都帶有1路或者2路10M/100M以太網(wǎng)口網(wǎng)口,同時還可以支持wi-fi以及3G/4G模塊,而且ESM3354和ESM6802這兩款核心板還可以通過ISA總線擴展以太網(wǎng)口。在多種網(wǎng)口同時存在的情況下,如何設置路由規(guī)則以及網(wǎng)關(guān)也就成為了應用方案重要的一部分。

linux系統(tǒng)中,使用ifconfig命令給網(wǎng)口配置ip,系統(tǒng)會自動生成這個網(wǎng)卡的相關(guān)路由信息,可以使用命令route –n查看系統(tǒng)所有的路由信息,參數(shù)-n是不進行地址解析,如果不添加-n選項,route命令會根據(jù)/etc/resolv文件中配置的DNS服務器進行地址解析,所以返回時間跟DNS服務器的響應時間有關(guān)系:

系統(tǒng)自動生成eth0的路由信息

可以看到系統(tǒng)自動生成了201網(wǎng)段的路由信息,凡是201這個網(wǎng)段的數(shù)據(jù)包都會通過eth0這個網(wǎng)口。但是目前還沒有網(wǎng)關(guān)的信息,如果要通過eth0訪問外網(wǎng),還需要添加默認網(wǎng)關(guān),linux系統(tǒng)中可以通過命令ip route命令添加默認網(wǎng)關(guān),命令格式為ip route add default via dev :

eth0的路由信息

添加默認網(wǎng)關(guān)后的路由信息如上圖,其中Destination和Genmask為0.0.0.0的記錄表明這是系統(tǒng)默認網(wǎng)關(guān),默認網(wǎng)關(guān)的意思是當要發(fā)送數(shù)據(jù)包的目標網(wǎng)絡地址不在系統(tǒng)的路由記錄中時,系統(tǒng)會將該數(shù)據(jù)包通過默認網(wǎng)關(guān)對應的接口(網(wǎng)卡)發(fā)送出去,如果允許使用dhcp的話,還可以直接使用udhcpc命令,該命令會自動獲取ip并設置默認網(wǎng)關(guān):

使用udhcpc獲取ip和設置默認網(wǎng)關(guān)

在多網(wǎng)絡的情況下,比如以太網(wǎng)和wi-fi以及3G網(wǎng)絡同時存在的時候,就會有多個路由信息多個默認網(wǎng)關(guān)。下圖是核心板的以太網(wǎng)和wi-fi同時存在時的路由信息:

多網(wǎng)絡路由信息

可以看到以太網(wǎng)eth0和wi-fi網(wǎng)絡wlan0的路由信息都自動生成了,而且存在兩個默認網(wǎng)關(guān)。如果訪問外網(wǎng),系統(tǒng)會根據(jù)路由緩存信息和速度最優(yōu)的原則,通過速度更快的網(wǎng)關(guān)進行訪問。Linux系統(tǒng)支持對默認網(wǎng)關(guān)的優(yōu)先級進行設置,這時需要用到mteric這個參數(shù),metric為躍點數(shù),當系統(tǒng)中有多個默認網(wǎng)關(guān)時,數(shù)據(jù)包會通過metric更低的接口傳輸,通常情況下,默認的metric都為0,所以優(yōu)先級是相同的。還是可以通過linux的命令ip route命令設置metric,命令格式為ip route add default via dev metric ,下面我們就為eth0和wlan0設置優(yōu)

路由信息的優(yōu)先級

如圖所示我們?yōu)閑th0設置的metric為100,wlan0的metric為101,這樣以太網(wǎng)eth0的優(yōu)先級就高于wlan0,數(shù)據(jù)包就會有先通過eth0通訊,如果以太網(wǎng)eth0關(guān)閉,則相關(guān)路由信息也會被清除掉,這時metric為101的默認網(wǎng)關(guān)優(yōu)先級變?yōu)樽罡?,?shù)據(jù)包會自動改為通過wlan0通訊。通過traceroute命令可以驗證這一點:

數(shù)據(jù)包通訊信息

可以看到數(shù)據(jù)包默認是通過優(yōu)先級更高的網(wǎng)關(guān)通訊,當eth0關(guān)閉之后,數(shù)據(jù)就改為通過wi-fi網(wǎng)絡的網(wǎng)關(guān)了。同時為了方便客戶使用和參考,我們提供了一個管理路由信息的例程,讓程序在后臺運行,會檢查有沒有新的默認網(wǎng)關(guān),如果有新的默認網(wǎng)關(guān),則按照以太網(wǎng)>wi-fi>3G/4G網(wǎng)絡的優(yōu)先級順序自動設置metic的值,如果需要更改則可以通過參數(shù)來設置三種網(wǎng)絡的metric值:route_manager [metric for eth] [metric for wlan] [metric for ppp]

測試效果

路由信息在板卡重啟之后會消失,板卡上自帶以太網(wǎng)可以通過英創(chuàng)公司提供的userinfo.txt配置文件來設置以太網(wǎng)的ip和默認網(wǎng)關(guān),或者設置為dhcp的方式。如果有擴展的wi-fi模塊則可以通過腳本或自己保存一個配置文件來實現(xiàn)加載網(wǎng)口后自動進行設置ip和網(wǎng)關(guān)。3G/4G網(wǎng)絡是使用的ppp撥號,ppp會自動生成默認網(wǎng)關(guān)。

感興趣的客戶可以聯(lián)系英創(chuàng)的工程師,我們會提供相應的例程代碼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207920
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6081

    瀏覽量

    34942
收藏 人收藏

    評論

    相關(guān)推薦

    freertos中斷優(yōu)先級在哪設置

    FreeRTOS是一個流行的實時操作系統(tǒng),它廣泛應用于嵌入式系統(tǒng)開發(fā)。在FreeRTOS中,中斷優(yōu)先級是一個重要的概念,因為它決定了中斷處理的順序和響應時間。 1. 理解中斷優(yōu)先級 在討論如何設置
    的頭像 發(fā)表于 09-02 14:17 ?234次閱讀

    ESP32S2如何設置中斷優(yōu)先級?

    ESP32S2有六中斷, 如何設置中斷優(yōu)先級? 比如在GPIO例程里 ,這種中斷優(yōu)先級是如何設置的呢? 中斷寄存器列表里 ,只有簡稱,哪里
    發(fā)表于 06-21 07:59

    systick的中斷優(yōu)先級是否應該設置為最高優(yōu)先級的嵌套中斷?

    最近在學習ucosii有這樣一個疑問,關(guān)于stm32的systick作為ucosii的基準時鐘,systick的中斷優(yōu)先級是否應該設置為最高優(yōu)先級的嵌套中斷。理由是什么?各位大俠求指教?。?!
    發(fā)表于 05-16 06:44

    關(guān)于stm32cube中freertos的優(yōu)先級設置問題求解

    在用stm32cube中freertos,在配置界面里設置為12任務優(yōu)先級,但是在cube中配置每個任務優(yōu)先級時還是只能選擇7種優(yōu)先級,分
    發(fā)表于 04-22 07:25

    STM32F103的寄存器NVIC_IPRx搶占優(yōu)先級和子優(yōu)先級是怎么設置的?

    STM32F103的寄存器NVIC_IPRx有些不明白,搶占優(yōu)先級和子優(yōu)先級是怎么設置的? 如果,中斷分組2,搶占優(yōu)先級3,子優(yōu)先級3
    發(fā)表于 03-27 07:48

    RTTnano的用戶main函數(shù)中的優(yōu)先級是多少?

    RTTnano 的用戶main函數(shù)中的優(yōu)先級是多少?為什么會出現(xiàn)創(chuàng)建新的task之后,main函數(shù)會搶占掉低優(yōu)先級的task,例如RT_THREAD_PRIORITY_MAX設置為8 ,低于3
    發(fā)表于 02-26 08:01

    M0516中斷優(yōu)先級怎么設置?

    新唐M0516中斷優(yōu)先級設置,有沒有示例,沒找到相關(guān)接口,謝謝!
    發(fā)表于 01-16 07:25

    華為和思科默認路由優(yōu)先級

    優(yōu)先級值不同,則優(yōu)先級值最小的為最優(yōu)路由(無論開銷值是否相同,另一種理解就是對不同路由來源或路由協(xié)議之間的比較)。
    的頭像 發(fā)表于 01-11 10:47 ?876次閱讀

    GD32如何配置中斷優(yōu)先級分組以及中斷優(yōu)先級

    使用GD32 MCU的過程中,大家可能會有以下疑問:中斷優(yōu)先級如何配置和使用?
    的頭像 發(fā)表于 01-10 10:30 ?2548次閱讀
    GD32如何配置中斷<b class='flag-5'>優(yōu)先級</b>分組以及中斷<b class='flag-5'>優(yōu)先級</b>

    python中運算符的優(yōu)先級大小

    Python中運算符的優(yōu)先級決定了表達式中各個運算符的計算順序。了解運算符的優(yōu)先級對于正確理解和編寫復雜的表達式非常重要。本文將詳細介紹Python中運算符的優(yōu)先級,并給出一些示例來幫助讀者更好地理
    的頭像 發(fā)表于 11-29 16:21 ?1882次閱讀

    freertos中的任務優(yōu)先級通過什么函數(shù)設置?

    任務優(yōu)先級怎么設置成最高
    發(fā)表于 11-02 07:40

    ucos怎么設置任務的優(yōu)先級?

    這個優(yōu)先級怎么設置
    發(fā)表于 10-30 06:18

    STM8中斷優(yōu)先級怎么設置?

    STM8中斷優(yōu)先級怎么設置
    發(fā)表于 10-25 06:49

    為什么有些STM32中斷沒有子優(yōu)先級?

    看到一個交流群在討論關(guān)于【關(guān)于STM32中斷優(yōu)先級的話題】,其中就有小伙伴提到:為什么有些STM32中斷沒有【子優(yōu)先級】?
    的頭像 發(fā)表于 10-17 15:50 ?697次閱讀
    為什么有些STM32中斷沒有子<b class='flag-5'>優(yōu)先級</b>?

    STM32中斷沒有子優(yōu)先級

    比如,有時候你在使用STM32CubeMX配置時,你會發(fā)現(xiàn)只有Preemption Priority【搶占優(yōu)先級】,而沒有Sub Priority【次優(yōu)先級
    的頭像 發(fā)表于 10-17 15:50 ?670次閱讀
    STM32中斷沒有子<b class='flag-5'>優(yōu)先級</b>?