0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术Linux主板多网络的优先级设置简介

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-06 11:16 次阅读

支持多网络是英创工控主板的特色之一,英创公司推出的ESMARC系列核心板,都带有1路或者2路10M/100M以太网口网口,同时还可以支持wi-fi以及3G/4G模块,而且ESM3354和ESM6802这两款核心板还可以通过ISA总线扩展以太网口。在多种网口同时存在的情况下,如何设置路由规则以及网关也就成为了应用方案重要的一部分。

linux系统中,使用ifconfig命令给网口配置ip,系统会自动生成这个网卡的相关路由信息,可以使用命令route –n查看系统所有的路由信息,参数-n是不进行地址解析,如果不添加-n选项,route命令会根据/etc/resolv文件中配置的DNS服务器进行地址解析,所以返回时间跟DNS服务器的响应时间有关系:

系统自动生成eth0的路由信息

可以看到系统自动生成了201网段的路由信息,凡是201这个网段的数据包都会通过eth0这个网口。但是目前还没有网关的信息,如果要通过eth0访问外网,还需要添加默认网关,linux系统中可以通过命令ip route命令添加默认网关,命令格式为ip route add default via dev :

eth0的路由信息

添加默认网关后的路由信息如上图,其中Destination和Genmask为0.0.0.0的记录表明这是系统默认网关,默认网关的意思是当要发送数据包的目标网络地址不在系统的路由记录中时,系统会将该数据包通过默认网关对应的接口(网卡)发送出去,如果允许使用dhcp的话,还可以直接使用udhcpc命令,该命令会自动获取ip并设置默认网关:

使用udhcpc获取ip和设置默认网关

在多网络的情况下,比如以太网和wi-fi以及3G网络同时存在的时候,就会有多个路由信息多个默认网关。下图是核心板的以太网和wi-fi同时存在时的路由信息:

多网络路由信息

可以看到以太网eth0和wi-fi网络wlan0的路由信息都自动生成了,而且存在两个默认网关。如果访问外网,系统会根据路由缓存信息和速度最优的原则,通过速度更快的网关进行访问。Linux系统支持对默认网关的优先级进行设置,这时需要用到mteric这个参数,metric为跃点数,当系统中有多个默认网关时,数据包会通过metric更低的接口传输,通常情况下,默认的metric都为0,所以优先级是相同的。还是可以通过linux的命令ip route命令设置metric,命令格式为ip route add default via dev metric ,下面我们就为eth0和wlan0设置优

路由信息的优先级

如图所示我们为eth0设置的metric为100,wlan0的metric为101,这样以太网eth0的优先级就高于wlan0,数据包就会有先通过eth0通讯,如果以太网eth0关闭,则相关路由信息也会被清除掉,这时metric为101的默认网关优先级变为最高,数据包会自动改为通过wlan0通讯。通过traceroute命令可以验证这一点:

数据包通讯信息

可以看到数据包默认是通过优先级更高的网关通讯,当eth0关闭之后,数据就改为通过wi-fi网络的网关了。同时为了方便客户使用和参考,我们提供了一个管理路由信息的例程,让程序在后台运行,会检查有没有新的默认网关,如果有新的默认网关,则按照以太网>wi-fi>3G/4G网络的优先级顺序自动设置metic的值,如果需要更改则可以通过参数来设置三种网络的metric值:route_manager [metric for eth] [metric for wlan] [metric for ppp]

测试效果

路由信息在板卡重启之后会消失,板卡上自带以太网可以通过英创公司提供的userinfo.txt配置文件来设置以太网的ip和默认网关,或者设置为dhcp的方式。如果有扩展的wi-fi模块则可以通过脚本或自己保存一个配置文件来实现加载网口后自动进行设置ip和网关。3G/4G网络是使用的ppp拨号,ppp会自动生成默认网关。

感兴趣的客户可以联系英创的工程师,我们会提供相应的例程代码。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10981

    浏览量

    206687
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6063

    浏览量

    34596
收藏 人收藏

    评论

    相关推荐

    STM32F103的寄存器NVIC_IPRx抢占优先级和子优先级是怎么设置的?

    STM32F103的寄存器NVIC_IPRx有些不明白,抢占优先级和子优先级是怎么设置的? 如果,中断分组2,抢占优先级3,子优先级3
    发表于 03-27 07:48

    Hightec对芯片中断优先级分配时,中断号越高中断优先级越高吗?

    请问大佬,Hightec对芯片中断优先级分配时,中断号越高中断优先级越高吗?看网上的帖子说中断号越低优先级越高。
    发表于 02-27 06:13

    RTTnano的用户main函数中的优先级是多少?

    RTTnano 的用户main函数中的优先级是多少?为什么会出现创建新的task之后,main函数会抢占掉低优先级的task,例如RT_THREAD_PRIORITY_MAX设置为8 ,低于3
    发表于 02-26 08:01

    M0516中断优先级怎么设置

    新唐M0516中断优先级设置,有没有示例,没找到相关接口,谢谢!
    发表于 01-16 07:25

    单片机的中断优先级是怎么确定的?

    单片机的中断优先级是怎么确定的,如果设定优先级后怎么确定设定的对不对?
    发表于 11-03 06:32

    freertos中的任务优先级通过什么函数设置

    任务优先级怎么设置成最高
    发表于 11-02 07:40

    ucos怎么设置任务的优先级

    这个优先级怎么设置
    发表于 10-30 06:18

    STM8中断优先级怎么设置

    STM8中断优先级怎么设置
    发表于 10-25 06:49

    谈谈MCU看门狗任务优先级设置

    一个学员在学习 uCOS 系统过程中,对看门狗任务的优先级产生了疑惑,到底该把喂狗任务优先级设置成最高还是最低好?
    发表于 09-15 09:32 370次阅读

    到底该把喂狗任务优先级设置成最高还是最低好?

    一个学员在学习 uCOS 系统过程中,对看门狗任务的优先级产生了疑惑,到底该把喂狗任务优先级设置成最高还是最低好?
    的头像 发表于 09-13 09:10 576次阅读

    求助,新唐M0516中断优先级设置有没有示例?

    新唐M0516中断优先级设置,有没有示例,没找到相关接口,谢谢!
    发表于 08-24 07:29

    请问M0系列的中断优先级在哪儿设置啊?

    M0系列的中断优先级在哪儿设置
    发表于 06-16 07:52

    m029lan中断优先级设置与实际对不上是什么原因?

    优先级有0-3,共4,0最高,3最低。现在用函数:NVIC_SetPriority(UART0_IRQn, 1);本想设置串口优先级为1,可实查看时,成了***?
    发表于 06-16 06:19

    tmr计时器警报回调以什么优先级运行?

    快速提问:tmr 计时器警报回调以什么优先级运行?我试图从源头上追踪它,但一直迷失在杂草中。我从 FAQ 中的信息猜测它正在将任务发布到中等优先级队列,但由于任务队列具有非常不同的时间限制,我想确定一下。
    发表于 04-27 06:23

    什么是优先级反转

    假设现在有三个任务TaskA(优先级高)、TaskB(优先级中)、TaskC(优先级低),一个信号量(Semaphore),此信号量用于任务之间争夺某个资源。在某一时刻,高优先级的Ta
    的头像 发表于 04-24 13:01 1594次阅读
    什么是<b class='flag-5'>优先级</b>反转