如下的ip命令顯示的兩條路由,proto的值分別為21和kernel。
proto欄位的定義如下(部分):/ # ip -d route
unicast default via 192.168.1.1 dev ens33 proto 21 scope global
unicast 192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.118
/ #
proto欄位的定義在核心中並沒有實質的意義,只是乙個顯示字段。rtprot_unspec表示未指定;rtprot_redirect已經不再使用;核心自身新增的路由使用rtprot_kernel;rtprot_boot為在啟動過程中安裝的路由;#define rtprot_unspec 0
#define rtprot_redirect 1 /* route installed by icmp redirects; not used by current ipv4 */
#define rtprot_kernel 2 /* route installed by kernel */
#define rtprot_boot 3 /* route installed during boot */
#define rtprot_static 4 /* route installed by administrator */
例如對於rtprot_kernel型別,核心函式fib_magic新增的路由的protocol固定為rtprot_kernel。在為核心介面新增ip位址時,觸發此函式,用於新增相關的直連路由。
對於rtprot_boot型別,一方面通過ioctl介面(如route命令)新增的路由proto欄位會設定為rtprot_boot;此外,如果使能了ip位址自動配置功能,核心可在啟動過程中通過dhcp或者rarp等獲取ip位址資訊,此時,在新增與之相關的路由時,路由項也會使用rtprot_boot型別。static void fib_magic(int cmd, int type, __be32 dst, int dst_len, struct in_ifaddr *ifa, u32 rt_priority)
數值大於rtprot_static(4)的proto值,不由核心解釋。核心只是在路由下發時儲存此值,顯示時回顯此值。目前定義的值如下:
#define rtprot_ra 9 /* rdisc/nd router advertisements */
#define rtprot_mrt 10 /* merit mrt */
#define rtprot_zebra 11 /* zebra */
#define rtprot_bird 12 /* bird */
#define rtprot_dnrouted 13 /* decnet routing daemon */
#define rtprot_xorp 14 /* xorp */
#define rtprot_ntk 15 /* netsukuku */
#define rtprot_dhcp 16 /* dhcp client */
#define rtprot_mrouted 17 /* multicast daemon */
#define rtprot_babel 42 /* babel daemon */
#define rtprot_bgp 186 /* bgp routes */
#define rtprot_isis 187 /* isis routes */
#define rtprot_ospf 188 /* ospf routes */
#define rtprot_rip 189 /* rip routes */
#define rtprot_eigrp 192 /* eigrp routes */
比如quagga路由程式下發的動態路由(rip/ospf/bgp/isis)同一使用rtprot_zebra型別proto值。這也說明這個欄位的使用比較混亂。
核心版本 5.0
路由表的建立
1.路由表 由很多路由條目組成,每個條目都指明去往某個網路的資料報應該由哪個介面傳送,其中最後一條是預設路由條目。2.路由條目 路由表中一行,每個條目主要由目的網路位址 子網掩碼 下一跳位址 傳送介面四部分組成,如果要傳送的資料報的目的網路位址匹配路由表中的某一行,就按規定的介面傳送到下一跳位址。3...
WindowsXP中修改本地路由表
很多的vpn使用者會遇到這樣的情況 使用vpn玩國外遊戲的同時,需要使用qq或其他的國內網路 若是通過vpn訪問國內網路,不但延時高連線慢,還會增加vpn伺服器的負擔。這時候我們就需要修改本地路由表,讓訪問國內網路的應用程式不走vpn,改走本地網路。示例如下 要訪問的國內網路 219.0.0.0 本...
flake的路由表述方式
在flask中定義url路由規則有三種方法 1 使用flask.flask.route 裝飾器 2 使用flask.flask.add url rule函式 3 直接訪問底層的werkzeug路由系統 flask.flask.url map 下面就第1,2兩種方法進行講解 flask.flask.r...