当前位置:首页 » 编程软件 » iproute2编译

iproute2编译

发布时间: 2024-10-04 03:38:29

❶ 什么是ECMPECMP的实现原理是什么

linux 平台上之 Multipath Routing 应用

--------------------------------------------------------------------------------
撰稿/整理: Rex Tsai <[email protected]>

HTML 版本:
http://kalug.linux.org.tw/sections.php?op=viewarticle&artid=4

TEXT 版本:
[Tips] Linux 平台上之 Multipath Routing 应用.

$Date: 2001/10/22 09:25:41 $

警告:
*****************************************************************************

您因使用或不能使用本文之教学而产生之任何软体、硬体损害(包括但不限
于直接或间接个人损害、营业利润之丧失、业务中断、营业资讯之遗失、或
任何其他金钱损失),概不负任何损害赔偿责任。

The author has taken care in the preparation of this paper, but
make no expressed or implied warranty of any kind and assume no
responsibility for errors or omissions. No liability is assumed for
incidental or consequential damages in connection with or arising
out of the use of the information or programs contained herein.

Linux is a registered trademark of Linus Torvalds. Other proct
and company names mentioned herein may be the trademarks of their
respective owners.
*****************************************************************************

撰稿/整理: Rex Tsai <[email protected]>
此文件应有许多技术上得问题. 请熟悉的朋友来信指教.

[Introction]

许多中小企业或是 Soho 甚至家庭, 会在家中装有一条以上宽频/宽带线路.
这篇 Tips 将介绍如何在 Linux 上, 好好的应用这些资源.

在你使用两家不同的 ISP 的时候, destination address-based load
balancing 将会是最好的解决方案. 你的封包可以即时透过不同的 ISP 线路
走出去. 当然这里所提的是从内部到外部, 如果你的专线提供不同的网路服
务提供给网路上得人存取, 那么接下来所说明的方式不适合您.
此篇文章只能提供内部网路对外的 load sharing.

以下文章以 GNU/Debian, Linux kernel 2.4.12, iproute-20001007-1 为
环境, 所有动作请在主机前面执行.

假设你有两条以上的网际网路数据线路 (xDSL, ISDN, Cable, whatever..),
想充分使用这些线路, 概观来看有三种方式

1. Multiplexing
2. Packet-wise load balancing
3. Destination address-based load balancing,
或称 Equal-Cost MultiPath Routing (ECMP)

稍微解释一下三种方式的不同

1. Multiplexing

Multiplexing, 这个方式提供某些路由器提供 offer-load balancing 或叫
做 load sharing. 这个方式可以让路由器将流量分给不同的外流 ports.
但是会造成每个 port 的传送上约有 30 % 的 overhead. 此外, 每家厂商的
实作都是独一的, 因次你会被锁在特定的解决方案上.

类似的技术是 "bonding" 或是 "multi-link". 这里所提得 Bonding 是一
个标准, 是由 Bandwidth on Demand Interoperability Group (一个大
概有四十个制造商的协会)所提. 已经提交给 American National Standards
Institute TR41.4 group. 这个通常的在于两条数据线路都是接在同一个
点(ISP)上的时候, 因此如果是两条不同 ISP 所提供的线路, 那么就没办法
达到这个目的. 当然, 如果你的 ISP 不提供此项技术服务, 那么也是没辙.
举个例子, 像是 stick multiple ISDN channels. 将几个慢速的线路合成为
快速的一条. 像是 ISDN H.221 规格即用到 inverse multiplexing. 但通常
用于视讯传输而不是电子资料.

2. Packet-wise load balancing:

这个在你可以得到所有的 ISP 协助的时候是可行的, 如果两家 ISP 都愿意
协助将其不同的路由器皆设定到同一个 IP 位址. 那么便可以这麼作.

在这个方式中, 你会用到像是 sch_teql (the TEQL scheler) 来创造一个
virtual device 将你的封包分散在不同的网路接口上.

一般来讲, 如果你是使用两家不同 ISP , 那么你不可以使用这个解决方案.
但, 你 "可以" 将所有的网路封包透过 IPIP or CIPE (Crypto IP Encapsu-
lation) 的方式来解决这个问题. 看看 Linux Kernel 中的 IP: tunneling.

3. Equal-Cost MultiPath:

在 Linux 核心中叫做 equal cost multipath (CONFIG_IP_ROUTE_MULTIPATH)
比较正确的说法应该是 "destination address-based load balancing". 一
般 Linux 想要为某个 IP 位址找到路由, 会因为效能的问题去查验暂存(cache)
中的资料, 如果目标 IP 并没有在暂存空间中, 那么他便会去查 routing table
来决定该 IP 位址的路由, 并将该路由放进 cache 中.

一般来讲核心中的路由功能只能为某个封包决定唯一的方向. 如果使用 ECMP 并
有机会让某个 package pattern 具有好几种不同的方向, 可以让某个符合路由条
件的封包透过 "equal" cost 或是自订的权重来选择该走的路由.

[Howto]

如果你有数台电脑想使用外部网路, 一条 ADSL 不够你使用(例如某人抓档太凶)
那么这是你正在找的解决方案. 你所能做的作好的方式就是每个 connection 可以
以 "non-deterministic fashion" 的方式选择路由, 将 connection 分散到不同的
Router 上, 注意: 这里所说的不是 packets, 这样 TCP/IP session 将无法连续.

但是这整个路由程序有两个部份四个问题要解决.

1a. How to get your packets to the outside world,

1b. How the outside world replies to you,

2a. How the outside world sends packets to you,

2b. How you reply to the outside world.

Multipath 可以解决 1a 出去的问题. 一般的路由设定可以解决 1b 与 2a. 而 2b
则必须使用 policy routing (multiple tables)才能解决, Multiple Tables 可以
让你加入以封包来源位址为依据来决定路由.

以下的范例, 在核心中, 务必加入编译以下选项

必备:

CONFIG_NETLINK=y
这个选项是 Kernel/User netlink socket

CONFIG_RTNETLINK=y
Routing messages

CONFIG_INET=y
TCP/IP networking

CONFIG_IP_ADVANCED_ROUTER=y
IP: advanced router

CONFIG_IP_MULTIPLE_TABLES=y
IP: policy routing

CONFIG_IP_ROUTE_MULTIPATH=y
IP: equal cost multipath

选用:

CONFIG_IP_ROUTE_LARGE_TABLES=y
一般来讲 IP: large routing tables 也会勾选, 一方面 routing
zones 可以大于 64 笔, 这些资料存在 hash 资料结构中, 也可以
加速 "the routing process".

而 iproute 套件也是必须的软体. 这个软体的安装方式与位置请洽询提供
您所使用套件之厂商/组织. (Red Hat, Debian, Mandrake, SuSE, etc...)

重头戏来了, 这里假设你有三块网路卡, 分别给内部网路与两家 ISP. eth0
是内部网路, eth1 与 eth2 是其他两家 ISP 线路.

eth0 是内部网路, 范围是 10.0.0.0/255.255.255.0

eth1 其中一家 ISP, IP 是 1.1.1.1, 闸道器(gateway)是 1.1.1.253

eth2 另外一家 ISP, IP 是 2.2.2.2, 闸道器(gateway)是 2.2.2.253

# 列出所有的 rule
ip rule list

# table 后的 "10" 是 table identifer, 为数字.
# 注: 可用英文代称取代请看 /etc/iproute2/rt_tables
#
# table 10 是给在 gateway 后面的内部网路使用, 10.0.0.x 是 LAN 使用的 IP.
#
# pref 后面指定的 "10" 是 priority. 为 policy routing database 搜寻的次序

ip rule add pref 10 to 10.0.0.0/24 table 10
ip route add 10.0.0.0/24 table 10 dev eth1

# table 20 给 ISP #1, IP 1.1.1.1, gateway 1.1.1.253
# pref 后面指定的 "20" 是 priority. 为 policy routing database 搜寻的次序
ip rule add pref 20 from 1.1.1.1 table 20
ip route add default table 20 via 1.1.1.253

# table 30 is for ISP #2, IP 2.2.2.2, gateway 2.2.2.253
ip rule add pref 20 from 2.2.2.2 table 30
ip route add default table 30 via 2.2.2.253

# 列出所有的 rule
ip rule list
# 列出 table 10 的 rule
ip route list table 10
# 列出 table 20 的 rule
ip route list table 20

# If your ISP's have servers that authenticate by originating IP address,
# (e.g. SMTP or NNTP servers) you will want to explicitly list them here.

# 这里是静态的 routing table 设定. 如果你的 ISP 有提供某些网路服务, 必须该
# ISP 的 IP 才能使用, 那么你会想将它设定在这里
# (e.g. Proxy, SMTP or NNTP Server)
ip route add 1.1.1.0/24 dev eth1
ip route add 2.2.2.0/24 dev eth2

# 如果上面所有的 routing table 都没有吻合, 那么封包会走 default route
# 这里使用 "ECMP" 来选择上游路由器.

# "ip route repleace" 是用来取代原本的 default routi.
ip route replace default nexthop via 1.1.1.253 dev eth1 \
nexthop via 2.2.253 dev eth2

# 如果你想加上权重, 是这样使用的. 请依据你的线路网路频宽
# 频宽越大, 请把 weight 加大.
#ip route replace default nexthop via 1.1.1.253 dev eth1 weight 1 \
# nexthop via 2.2.253 dev eth2 weight 3

# Make it all happen. IMPORTANT! The above commands do NOT
# flush the route cache!
ip route flush cache
<-- 结束 -->

Linux 上得 ECMP implementation 的实作有一个特色, 当你的上游网路接口
使用 ARP (e.g. 使用传统 IP-over-Ethernet)时, 如果其中一个网路接口阵
亡时, Linux kernel 会自动把该接口 "shutdown", 并停止那些需要经过该
接口的 "nexthops". 但是要附注一提的是, 如果你使用的是 "网路型" ADSL
服务, 你会取得一个 ADSL 路由器, 你可能会架设一个 NAT 服务器与 ADSL
路由器放在同一个 Ethernet Hub 上, 如果这个时候 ADSL 断线, 但是 Hub
并未断线, Linux 会认为该网路卡仍在 on-line 状态. 除非是该 hub 或是网
路卡故障, kernel 才会 shutdown 该网路接口.

因此如果你需要确实的 "failover", 请动手写一个小 script, 定时用 ping
或称 "icmp echo request" 来询问 ISP 端的闸道器是否正常的运作, 并用
"ip route replace" 来置换那些确定可通的路由. 这里就请您自行处理了.

Enjoy it, Rex.

[Reference]
[1] Linux-Net mailing list. http://www.uwsg.iu.e/hypermail/linux/net/
原文 http://www.uwsg.iu.e/hypermail/linux/net/0107.3/0028.html

[2] Alexey N. Kuznetsov, April 14, 1999, IP Command Reference

[Futrher reading]
[1] Jack Coates , Load-Balancing on LRP HOWTO

[2] Netherlabs BV (bert hubert ),
Gregory Maxwell ,
Remco van Mook ,
Martijn van Oosterhout ,
Paul B Schroeder ,
Jasper Spaans , [email protected],
Linux 2.4 Advanced Routing Howto

[3] Horacio J. Pe?a, [email protected], 05/Apr/2000
Policy based routing MICRO-HOWTO,
http://www.compendium.com.ar/policy-routing.txt

[Keywords]
Linux, Routeing, 路由, ADSL, 宽频, 宽带, 频宽, 合并, 分流, 共用

[Acknowledgements]
Zygo Blaxell ([email protected]) 在 Linux-net 的说明
Digital Sesame, Inc - http://www.d11e.com 提供环境测试.

--
Best Regards.
Rex Tsai <chihchun_at_kalug.linux.org.tw>
--

❷ 电信华为光猫Hg8245C破解过程中出现WAP(Dopra Linux)#后面输什么

很简单,这个嵌入式系统是华为官方定制的。有没有这个命令无非就看/bin目录下有没有相应的可执行程序。按照上图看,很明显你的光猫没有grep命令。你可以ls一下bin目录就知道这个光猫支持哪些命令。其他人回答基本抄别人。。也是很尴尬。。这是我光猫的可执行程序如下。如果牛逼的话,可以挂在U盘,编译对应的可执行程序跑。没问题的。这个命令不可以,你完全可以找个替代的。骚微变通一下下就好了
WAP(Dopra Linux) # ls bin/
Bbspcmd httpc
Broadband hush
ConvertLog2Dst hw_ldsp_cfg
Customize hw_ldsp_xpon_adpt
Equip.sh hw_restore_manufactory.sh
EquipMode.sh id
LdspCmd.sh igmp
LdspCmdA.sh ip
OntMaintain.sh ipaddr
Wifi2GSsidSet.sh ipcrm
Wifi5GSsidSet.sh ipcs
WifiChipInit2G5G.sh iplink
WifiRXInit.sh iproute
WifiRxTestModeSet2G.sh iprule
WifiRxTestModeSet5G.sh iptables-xml
WifiSsidSet.sh iptunnel
WifiTXInit.sh iwconfig
WifiTxTestModeSet2G.sh iwpriv
WifiTxTestModeSet5G.sh jbpara.sh
[ kill
[[ killall
addgroup killall.sh
adser killall5
aescrypt2 kmsgread
aging ldspcli
amp ln
ampcmd logger
ampcmdClrEmacStat.sh login
ampcmdClrLog.sh ls
ampcmdDebugOff.sh lsusb
ampcmdDebugOn.sh lzop
ampcmdSelfTest.sh lzopcat
ampcmdSetEmacDbg.sh maintain
ampcmdShowCarAll.sh md
ampcmdShowCarIndex.sh mid
ampcmdShowDopeFlow.sh mkdir
ampcmdShowEmacCfg.sh mknod
ampcmdShowEmacStat.sh mktemp
ampcmdShowEthStatAll.sh more
ampcmdShowEthStatIndex.sh mount
ampcmdShowEthStatsCfgAll.sh mu
ampcmdShowFlowAll.sh mv
ampcmdShowFlowIndex.sh mw
ampcmdShowGemStatAll.sh netstat
ampcmdShowGemStatIndex.sh nmbd
ampcmdShowGemStatsCfgAll.sh ntfs-3g
ampcmdShowLog.sh oam
ampcmdShowQueAll.sh oamcmd
ampcmdShowQueIndex.sh oamcmdPdtClrLog.sh
ampcmdTrace.sh oamcmdPdtShowLog.sh
ampcmdTraceAll.sh omci
ampcmdTraceCli.sh omcicmd
ampcmdTraceDpoe.sh omcicmdPdtClrLog.sh
ampcmdTraceDrv.sh omcicmdPdtShowLog.sh
ampcmdTraceEmac.sh

❸ 编译移植busybox出错,arm-linux-gcc版本4.3.3 busybox版本1.16.0 错误代码如下:

找不到链接库,不这些都是数学库,加参数 -lm 应该就能解决。
但编译过程这个东西应该是自己加。

busybox 一般都是静态的,编译静态程序,很多时候需要他以来的函数库也是静态的。你这个问题应该是编译环境不匹配。你编译了 uclibc 并且正确安装了没?

不过话说,不过是个编译,人家本来就支持 arm ,“移植”这两个字应该是不需要用了。

❹ 运维工程师必须掌握的基础技能有哪些

运维工程师必须掌握的基础技能有:基础命令、基础服务、自动化技能、安全。

1、基础命令:

这个基础就包括:用户管理命令,文件管理命令,权限管理命令,软件包管理命令,vim命令,网络管理命令等。这些命令好学,因为每个命令都有相应的help帮助文档,而且很多网站都集成了命令帮助,把这些站点进行收藏,时不时的查下就记住了。

2、基础服务:

企业常用的基础服务就包括DHCP,NTP,DNS,Nginx,Apache,Mysql,Redis,Vsftpd,Nfs。基础服务的掌握,相比命令稍微的难一点,但是同样有很多技巧。比如可以去各大视频站获取优质的免费视频学习。

3、自动化技能:

这个自动化就包括脚本自动化,需要熟悉掌握shell脚本或者Python脚本;包括监控自动化,不能靠传统的点击页面,查看进程来判断服务是否在线,需要熟悉掌握zabbix,Prometheus等主流监控软件;还包括工具自动化,需要掌握向ansible,puppet,Jenkins等自动化软件,实现服务的批量部署与业务的自动化。

4、安全:

作为运维工程师,首先就要时刻保障公司业务系统,服务器安全稳定运行。所以安全至关重要,主流的iptables,firewalld防火墙技术要熟练掌握,有必要的话常见的挖矿病毒,ddos等攻击有段也要有所了解。

运维工程师(Operations),负责维护并确保整个服务的高可用性,同时不断优化系统架构提升部署效率、优化资源利用率提高整体的ROI。

运维工程师面对的最大挑战是大规模集群的管理问题,如何管理好几十万台服务器上的服务,同时保障服务的高可用性,是运维工程师面临的最大挑战。

❺ 构建一个Linux最小系统,能从U盘启动Linux,把Linux原码编译后放入U盘,并可从U盘启

你下载一个linux的发行版的iso文件,如ubuntu.
再在你的windows电脑上安装utlraiso,版本必须9.12及以上。
1、 运行UltraISO

2、 在主菜单选“文件”-〉“打开”,出现“打开ISO文件对话框”

3、 选择镜像文件(ubuntu-8.04-desktop-i386.iso)点击“打开”按钮

4、 在主菜单选“启动光盘”-〉“写入硬盘映像”,出现“写入硬盘映像”对话框

5、 出现上面界面的时候,在“硬盘驱动器”选项里,要选择U盘的盘符,在“写入方式”里,选择USB-HDD+或USB-ZIP+模式,并点击“便捷启动”按钮——写入新的硬盘主引导记录——USB-HDD+或USB-ZIP+。

6、 再点击写入,开始ISO文件写入到U盘。

7、 制作完成后拔出U盘

8、 设置电脑启动为usb-hdd或usb-zip启动即可。
另外,站长团上有产品团购,便宜有保证

热点内容
江苏云服务器散热器定制 发布:2024-11-05 18:50:15 浏览:718
投资分红网站源码 发布:2024-11-05 18:36:38 浏览:502
我的世界推荐适合萌新的服务器 发布:2024-11-05 18:30:03 浏览:576
c语言考级 发布:2024-11-05 18:16:54 浏览:503
易语言不能编译安卓app吗 发布:2024-11-05 18:14:11 浏览:835
c语言重点知识 发布:2024-11-05 18:04:53 浏览:640
算法分家 发布:2024-11-05 17:55:39 浏览:469
手游云顶怎么确定服务器 发布:2024-11-05 17:52:03 浏览:777
天籁选哪个配置2021 发布:2024-11-05 17:50:26 浏览:812
rust怎么找服务器 发布:2024-11-05 17:49:45 浏览:487