荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: jjk (UNIX+C+XML+?? 傻了?), 信区: Linux
标  题: 一张内核路由部分的草图 :) (zz)
发信站: 荔园晨风BBS站 (Mon Apr 22 19:45:31 2002), 转信

【 以下文字转载自 jjk 的信箱 】
【 原文由 jjk.bbs@apue.dhs.org 所发表 】
发信人: ysqcn (ysq.cn), 信区: UKP
标  题: 一张内核路由部分的草图 :) (zz)
发信站: UNIX编程 (Tue Mar 26 17:45:28 2002) , 转信

发信人: shiabc (star), 信区: KernelTech
标  题: 一张内核路由部分的草图 :)
发信站: BBS 水木清华站 (Tue Mar 26 17:50:55 2002)

(struct fib_table *)
    fib_tables
+---------------+
|RT_TABLE_UNSPEC|
+---------------+
|     1         |
+---------------+  +------>...
|...user def... |  |
+---------------+  |
|    252        |  |
+---------------+  |
|RT_TABLE_DEFAULT--+    struct fib_table
+---------------+       +----------+
|RT_TABLE_MAIN -|------>|          |
+---------------+       |          |
|RT_TABLE_LOCAL |       |          |
+---------------+       |          |
256 elements in all     |          |
                        |          |
                        |          |
    +-------------------+----------+
    |                   |tb_data[0]|
+---|-------------------+----------+
|   |
|   |
|   |
|   |   struct fn_hash    (at most 33 nodes, 255.255.255.255---0.0.0.0)
|   +---+---------------+--
|       | fn_zones[0]  -|-------+
|       +---------------+       |
|       | fn_zones[1]   |       |
|       +---------------+       |
|       |  ...........  |       |
|       +---------------+       |
|       |  ........... -|-------|-------+
|       +---------------+       |       |
|       | fn_zones[31]  |       |       |
|       +---------------+       |       |
|       | fn_zones[32] -|-------|-------|---------------+
|     --+---------------+--     |       |               |
|       | fn_zone_list -|---+   |       |               |
+-------+---------------+   |   |       |               |
                            |   |       |               |
                            |   |       |               |
                            |   |       |               |
+---------------------------+   |       |               |
|                               |       |               |
|       +-----------------------+       |               |
|       |                               |               |
|       |                       +-------+               |
|       |                       |                       |
|       |                       |                       |
|       V                       V                       V
|       struct fn_zone          struct fn_zone          struct fn_zone
+------>+---------+             +---------+             +---------+
        | fz_next-|------------>| fz_next-|--- ....---->| fz_next-|----->NULL
        +---------+             +---------+             +---------+
        | fz_hash-|-----+       | fz_hash-|---+         | fz_hash-|---+
        +---------+     |       +---------+             +---------+
        |         |     |       |         |             |         |
        |         |     |       |         |             |         |
        +---------+     |       +---------+             +---------+
       0.0.0.0 or /0    |         .......            255.255.255.255 or /32
   route dst 's mask    |
                        |
                        |
                        |
+-----------------------+
|
|
|
|       // A hash table(size = fn_zone's fz_divisor)
|
+------>+-------+
        |       |
        +-------+                             (struct fib_node)
        |       |
        +-------+               +-------+       +-------+
        |     --+-------------->|fn_next|------>|fn_next|------->
        +-------+               |-------|       |-------|
        |       |               |fn_info|---+   |fn_info|-------+
        +-------+               |-------|   |   |-------|       |
        |       |               |       |   V   |       |       V
        +-------+               +-------+       +-------+
        |       |
        +-------+
        |       |
        +-------+               +-------+       +-------+
        |     --+-------------->|fn_next|------>|fn_next|------->
        +-------+               |-------|       |-------|
        |       |               |fn_info|---+   |fn_info|-------+
        +-------+               |-------|   |   |-------|       |
        |       |               |       |   V   |       |       |
        +-------+               +-------+       +-------+       |
        |       |                                               |
        +-------+                                               |
                                                                |
                                +-------------------------------+
                                |
                                |
                                |
(struct fib_info *)             |
fib_info_list                   |
    |                           V
    |                           (struct fib_info)
    +-->+----------+            +----------+            +----------+

+------>|-fib_next-|----------->|-fib_next-|----------->|-fib_next-|-->-+
| +-<---| fib_prev-|<-----------| fib_prev-|<-----------| fib_prev-|<---|-+
| |     +----------+            +----------+            +----------+    | |
| |     |          |            |          |            |          |    | |
| |     |          |            |          |            |          |    | |
| |     |          |            |          |            |          |    | |
| |     |          |            |          |            |          |    | |
| |     +----------+            +----------+            +----------+    | |
| |                                                                     | |
+-|---------------------------------------------------------------------+ |
  +-----------------------------------------------------------------------+


--



--
※ 来源:.UNIX编程WWW apue.dhs.org. [FROM: 202.114.2.11]
--
※ 转寄:·UNIX编程 apue.dhs.org·[FROM: 210.39.3.50]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.146]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店