2012/07/26

Coaching...


當同仁未達目標時,進行指導員工改進績效的過程。

溝通的需求
        實際需求:訂出可行的改進方案
        個人需求:被理解,有參與感
Add caption

溝通的流程
1. 展開討論
        明確的目的(對別人的好處)與重要性
2. 澄清資料
        - 蒐集事實與數據 了解情況
        - 提出問題與疑慮 潛在障礙
3. 發展方案
        提出問題與參與,創造力與承諾
4. 達成決議
        如何衡量標準?行動方案(What, Who, When):時程、做法、備用方案
                - ST:情況 & 任務
                - AR:行動/結果
5. 總結討論
        明白下一步要做什麼,重述行動方案

溝通的技巧
A. 自尊自信
        對事不對人,尊重,澄清原因 維護自尊
        認可想法,讚許成就(具體誠懇) 加強自信
B. 聆聽同理 (D相關)
        處理情緒 事實+感受
        消弭負面情緒,正向鼓勵
C. 協助參予 (E相關)
        鼓勵參與,努力提問[What,Why, Where, When, How]
D. 分享感想 (B相關)
        補充過去的感受、經驗、想法[誠實]
E. 鼓勵承擔 (C相關)
        給予具體支持,遵守承諾,自行解決
       
※:覆述 & 問問題
○:回到主題



2012/07/17

【IPv6 Ready Logo】Core互連性測試

在完成了IPv6 Core的符合性測試之後
就可以將測試報告寄給中華電信研究所
若沒有問題他們就會通知到所內進行互連性測試
互連性測試基本上要測試四種不同的作業系統進行對測
FreeBSD, Linux, NetBSD, USAGI
FreeBSD, NetBSD會設定為Router的腳色
Linux, USAGI會設定為Host的腳色
跟Router的測試項目比較多,Host的測試項目會比較少

以下介紹各個測項
● 與Router (NetBSD)對測
    1.1-D:ping link local address
    1.1-E:ping global address
    1.1-F:ping所有的Node (FF02::1)與 所有的Router (FF02::2)
    1.2-C:造成別人產生DAD (重複的網路位址偵測)
    1.2-D:自己發生的DAD
    1.3-A:Router送出一個 RA,另一台Host ping看看
    1.3-B: Router送出兩個 RA,另一台Host ping看
    1.3-C:測試RA的lifetime,超過了是否還存在
    1.4-A:測試RA的lifetime大於0,是否能互ping到對方
    1.4-B:送RA=0,ping設備;之後送RA=600,ping設備;最後送RA=0,ping設備
    1.5:Router1會送Redirect封包給Host,看看使否能轉到Router2
    1.6-A:host ping設備,設備回給host的封包太大,要能切割成小一點的封包
    1.6-D:當送的封包的MTU太大時,能切割並送出
● 與Host (Linux)對測
    1.1-A:ping 另一台host的link local address
    1.1-B:ping 另一台host的global address
    1.1-C:ping 所有的Node (FF02::1)
    1.2-A:router ping 設備與host,沒有DAD的狀況
    1.2-B:測試造成別人產生DAD與自己發生的DAD
    1.6-C:當網路的MTU為1280時,host 與設備互用大封包ping時,可以轉成1280的封包

● 與Router (FreeBSD)對測
    1.1-D:ping link local address
    1.1-E:ping global address
    1.1-F:ping所有的Node (FF02::1)與 所有的Router (FF02::2)
    1.2-C:造成別人產生DAD (重複的網路位址偵測)
    1.2-D:自己發生的DAD
    1.3-A:Router送出一個 RA,另一台Host ping看看
    1.3-B: Router送出兩個 RA,另一台Host ping看
    1.3-C:測試RA的lifetime,超過了是否還存在
    1.4-A:測試RA的lifetime大於0,是否能互ping到對方
    1.4-B:送RA=0,ping設備;之後送RA=600,ping設備;最後送RA=0,ping設備
    1.5:Router1會送Redirect封包給Host,看看使否能轉到Router2
    1.6-A:host ping設備,設備回給host的封包太大,要能切割成小一點的封包
    1.6-D:當送的封包的MTU太大時,能切割並送出
● 與Host (USAGI)對測
    1.1-A:ping 另一台host的link local address
    1.1-B:ping 另一台host的global address
    1.1-C:ping 所有的Node (FF02::1)
    1.2-A:router ping 設備與host,沒有DAD的狀況
    1.2-B:測試造成別人產生DAD與自己發生的DAD
    1.6-C:當網路的MTU為1280時,host 與設備互用大封包ping時,可以轉成1280的封包

上述的測試要兩天,等測試完成之後
就可以等報告拿Logo囉 ~ 

2012/07/02

【IPv6 Ready Logo】Core符合性測試 - Linux除錯

以下是小弟在用linux測試時的一些心得

基本上linux 2.2就有支援了
但是建議會使用2.6以上的版本
我是用linux 2.6.31的版本
因為要自己build in kernel所以有時候選錯項目會造成一些測試不過
這邊給大家做些參考


基本上在linux kernel中選了"CONFIG_IPV6"大部分的項目就可以過了
但是如果測試的時候發現
● Section1: 44, 45, 46, 49, 50, 51沒過
    → 請 Disable "CONFIG_NF_CONNTRACK_IPV6"
● Section2: 138沒過
    → 請Enable "CONFIG_IPV6_ROUTER_PREF"
● Section3: 3, 5, 14, 15, 23, 24沒過
    → 請在開機時執行,"# echo 2 > /proc/sys/net/ipv6/conf/eth0/accept_dad"
         啟動DAD功能,但Link-Local位址(由MAC所產生的)碰撞發生時,關閉IPv6功能

若還有相關的問題,可以留言,如果我知道會盡量幫忙

2012/07/01

DVMPR...

DVMRP (Distance Vector Multicast Routing Protocol)
在一個Automous System(AS)中路由"multicast data"
可以讓layer 3 switch 跑IP與IGMP的封包
利用Reverse Path Multicasting(RPM) 去建立IP multicast delivery tree
用IGMP去學習membership information


有以下四種封包
  - DVMRP probe:discover 鄰近的 switch
  - DVMRP report:交換routing info,用來建立DVMRP的tree,以及用Reverse Path Forward(RPF)來檢查進來的multicast peform(避免loop)
  - DVMRP prune:刪除此switch
  - DVMRP grafts:重新加入


有以下四個步驟
  1. 產生advertise multicast packet的broadcast封包
  2. 若沒有此multicast group的switch送出prune message
  3. 若後來加入了,則送graft message重新加入此tree
  4. 最後multicast 封包就知道要送給誰


2012/06/30

【IPv6 Ready Logo】Core符合性測試 - 自動測試

在上一篇提到了Core手動測試的步驟
這篇會介紹如何將手動測試改為自動測試

受測的設備(NUT)必須要有RS232的輸入方式
FreeBSD(TN)也必須要有RS232(console)的連線port
請參考下面的圖示

自動測試就是FreeBSD會透過Console Port去下指令
這樣使用者就不用一直呆在設備旁了

● v6eval-remote
請先去下載v6eval-remote (目前已經沒有在維護了)
並做以下的設定
# tar vfxz v6eval-remotes-3.0.tar.gz
# cd v6eval-remotes-3.0
# vi Makefile
    DOCFILES=00README.remotes INSTALL.remotes \
    COPYRIGHT
# vi ./bin/remotes/Makefile
    SUBDIR= unknown \ 
    manual \
    linux-v6 \
    usagi-i386 \
    usagi24-i386 \
    freebsd-i386 \
    freebsd43-i386 \
    kame-freebsd \
    ms-winxp \
    ms-win2k
# make
# make install

● /usr/local/v6eval/etc/nut.def
設定完成之後,請到/usr/local/v6eval/etc/nut.def
將System的值改為受測設備的作業系統
若是沒有相同的,則可以選近似的進行改寫
以下是針對linux做範例
System    linux-v6

● /usr/local/lib/perl5/site-perl/5.12.4/V6evalRemote.pm
在自動測試前,請勿必先看過這個檔案
還有/usr/local/v6eval/bin/裡面的檔案
若是有需要修改的請自行修正
下面是一定要修正的地方
$Device=”cuau0”
$User=”root”
$Password=”v6eval”

● RS-232測試
設定連線
# touch /var/log/aculog
# chown uucp:dialer /var/log/aculog
# chmod 660 /var/log/aculog
測試連線
# cu –l /dev/cuau0 –s 38400 (38400是 baud rate)
# ~. (終止連線)
測試是否能使用自動測試
# /usr/local/v6eavl/bin/linux-v6/loginout.rmt –o 1

上述都設定完成之後
就可以執行下述的指令進行自動測試了... gogogo ~
# cd Self_Test_5-0-0
# make clean
# make ipv6ready_p2_host



2012/06/29

IPv6... ICMPv6


之前介紹了IPv6的定址方式,會建議先看過再來看這篇
接著介紹一些關於Neighbor Discovery的內容

Neighbor Discovery Protocol(NDP)是用來偵測周圍的IPv6設備與位址是否重複的功能
利用以下的五種封包:
● Neighbor Solicitation(NS): Host送給link layer的request
● Neighbor Advertisement(NA): Host送給link layer的response
● Router Solicitation(RS): Host送給Router的request
● Router Advertisement(RA): Router回給Host的response & 定期的multicast封包
● Redirect: Router

下面是IPv6 Cache Table的內容
● Neighbor Cache: 類似IPv4的MAC Table
- Neighbor: 鄰居的IPv6 address
- MAC: 鄰居的MAC
- State: reachable(可收到), stale(過期), delay(到stale才回應), proble(等回應), invalid, unknown, incomplete
- Flags: router 或 host

● Prefix List: 看哪些IP的prefix是在同一個domain(不須經由router)
- Prefix: prefix與prefix length
- vltime(valid time): 此prefix還可以合理的存活多久
- pltime(preferred life time):  透過stateless configuration(DHCP或Router)所給的存活時間
- onlink: on-link(同一個domain), off-link(不同domain)
- autonomous: 是不是DHCP或Router所給的prefix

● Destination Cache: 目標IP與Next Hop的對應
- Destination Address:  目標IP
- Next Hop Address:  送的下一個IP,可以為目標的IP

● Route List: IPv6的routing table
- Address: 目標IP或prefix
- Gateway/Interface: gateway或interface

● Default Router List:
- Address: router的IP
- Preference: high, medium, low (如果有多個router都在同個level,就輪流)
- Lifetime: 可存活多久
- Flag: statefuk address, additional configuration setting

IPv6網路卡起始的流程
1. 自動生成link local address
2. 送出NS,看看有沒有設備的link local address跟自己的一樣
3. 收到NA之後,存到Neighbor Cache
4. 送出RS,收到Router回送的RA,存到neighbor Cache, prefix list, destination cache

當一個switch要送封包的時候
1. 看Destination Cache決定Next Hop
- 有,直接送到Next Hop送出資料
- 沒有,到第2步
2. 看Prefix List是否在同一個Domain
- 有,就可以直接送給它(代表在同一個Domain)
- 沒有,到第3步
3. 看Router List
- 有,用Neighbor Cache找出MAC,並送出資料
- 沒有,開始IPv6 resolution的過程
透過以上的步驟,可以減少IPv6的封包

2012/06/20

【IPv6 Ready Logo】Core符合性測試

這篇要介紹如何建置IPv6符合性的測試環境
因為Core的測試設備分為兩種:Host與Router
我先以簡單的Host來做範例
先介紹一下兩個名詞:TN (Test Node) 與 NUT
TN:就是下面介紹的FreeBSD的主機
NUT:則是我們所要受測的IPv6設備

首先要找一台不要太新的電腦
如果有COM Port更好,因為自動測試會需要它
接著去下載FreeBSD 9.0
http://www.freebsd.org/where.html
因為測試的環境必須在這個OS下面
安裝完成之後
還必須要安裝Perl-5.12與Perl的相關模組
因為測試程式的語法是由Perl寫出來的

● Perl-5.12.4
# cd /usr/ports/lang/perl5.12
# make
# make install
如果無法連上網路請自行下載BSDPAN-20111107.tar.bz2與perl-5.12.4.tar.bz2,並執行以下指令之後,再重新試上面的指令
# cp perl-5.12.4.tar.bz2 /usr/ports/distfiles/perl
# cp BSDPAN-20111107.tar.bz2 /usr/ports/distfiles/perl
● Expect
# cd /usr/ports/lang/p5-Expect
# make
# make install
如果無法連上網路請自行下載IO-Tty-1.10.tar.gz與Expect-1.21.tar.gz,並執行以下指令之後,再重新試上面的指令
# cp Expect-1.21.tar.gz /usr/ports/distfiles
# cp IO-Tty-1.10.tar.gz /usr/ports/distfiles
● Digest-MD5
# cd /usr/ports/security/p5-Digest-MD5
# make
# make install
如果無法連上網路請自行下載Digest-MD5-2.51.tar.gz,並執行以下指令之後,再重新試上面的指令
# cp Digest-MD5-2.51.tar.gz /usr/ports/distfiles
● YAML
# cd /usr/ports/textproc/p5-YAML
# make
# make install
如果無法連上網路請自行下載YAML-0.77.tar.gz,並執行以下指令之後,再重新試上面的指令
# cp YAML-0.77.tar.gz /usr/ports/distfiles

接下來要安裝測試的軟體了
● v6eval (用來收送IPv6封包用的)
請去此處下載:v6eval-3.3.2
因為FreeBSD9.0在make這套時會有Error Message: "CmMain.cc:51:18: error: utmp.h: No such file or directory",所以請下載:v6eval.diff_.gz
# tar zxvf v6eval-3.3.2.tar.gz
# cp v6eval.diff_.gz v6eval-3.3.2
# cd v6eval-3.3.2
# gunzip v6eval.diff_.gz
# patch -p0 < v6eval.diff_
# make
# make install
● Self Test Tool (Perl寫的Script用來執行v6eval讓它去收送封包)
請去此處下載:Self_Test_5.0.0
# tar vxfz Self_Test_5-0-0.tgz

在安裝完所有的軟體之後,就要設定相關的檔案了
● /etc/rc.conf (請修改rl0為連接NUT的port)
ipv6_enable=”NO”
ifconfig_rl0=”up”
devfs_system_ruleset=“devfsrules_unhide_bpf”
● /etc/devfs.rules
[devfsrules_unhide_bpf=1025]
add path ‘bpf0’ user root group wheel mode 0660 unhide
add path ‘bpf1’ user root group wheel mode 0660 unhide
add path ‘bpf2’ user root group wheel mode 0660 unhide
add path ‘bpf3’ user root group wheel mode 0660 unhide
add path ‘bpf4’ user root group wheel mode 0660 unhide
add path ‘bpf5’ user root group wheel mode 0660 unhide
add path ‘bpf6’ user root group wheel mode 0660 unhide
add path ‘bpf7’ user root group wheel mode 0660 unhide
● /etc/group
wheel
● /usr/local/v6eval/etc/tn.def (請修改rl0為連接NUT的port)
RemoteDevice  cuau0
RemoteDebug  0
RemoteIntDebug 0
RemoteLog  1
RemoteSpeed  0
RemoteLogout  0
RemoteMethod serial
filter    ipv6
Link0  rl0  00:00:00:00:01:00
● /usr/local/v6eval/etc/nut.def (TargetName與HostName設定要測試設備的名稱,Link0請設定NUT的port與MAC)
System    manual
TargetName   abc
HostName   abc
Type    host
User    root
Password   v6eval
Link0  eth0  00:00:92:a7:6d:f5

以上就是將測試的環境給設定好了~

接著將我們要測試的設備接上FreeBSD主機
就可以進行下面的測試指令了
因為一共分五大項,若要一次測試
# cd Self_Test_5-0-0
# make clean
# make ipv6ready_p2_host
若要分項測試,針對Spec作測試
# cd Self_Test_5-0-0/spec.p2
# make clean
# make ipv6ready_p2_host
若要針對Spec的17~24項作測試
# cd Self_Test_5-0-0/spec.p2
# make clean
# make AROPT="-s 17 -e 24" ipv6ready_p2_host

在手動的測試中會有三種狀況會等您的動作
● 等開機完成到Login的畫面,再按下Enter
reboot> Reboot NUT.
reboot>     * Wait until NUT boot up completely.
reboot>         Ex.) Wait until catch up login prompt.
reboot> 
reboot> Press Enter key for continue. 
● 重新開機之後,馬上按下Enter
reboot_async> Reboot NUT.
reboot_async>     * You don't need to wait NUT untill boot up completely.
reboot_async>     * You have to exit this script quickly.
reboot_async>     * This script is used for catching up boot sequence.
reboot_async>         Ex.) DAD, MLD Report, ...
reboot_async> 
reboot_async> Press Enter key for continue. 
● 先輸入好ping6的指令,按下Enter的五秒內,執行ping6的指令
ping6> Press enter key, and excute the following commands within 5 seconds.
ping6> Do ``ping6  DataSize= 1352, Send Count= 1, Interface= bfe0, Destination= FF1E::1:2''

【IPv6 Ready Logo】Core 測試流程

當自己的產品已經有支援IPv6之後
要如何證明呢?
當然是送到最有公信力的機構去做認證
台灣有一個IPv6的認證中心:中華電信研究所IPv6測試實驗室
透過這個實驗室的協助,我們的設備就可以宣稱有IPv6的功能了

測試的項目很多有
● Core:測試基本IPv6的功能
● IPSec:測試IPv6加密與安全性的部分
● DHCP:測試自動取得IPv6與DNS的功能
● SNMP:測試IPv6網路管理的部分
● ...
每一個項目都有一張貼紙
Core的測試是最基本的
有了Core之後才能用同一台去取得其他的項目

那要怎麼通過認證呢? 
簡單來說分為兩個步驟:
第一個步驟就是符合性測試的部分 (Conformance Test)
一共有五大項,三百多個測試項目
這部分要自己測試的,當所有的測試項目通過了
再將報告寄給中華電信研究所
他們審查過之後就可以到他們那邊進行互連性的測試 (Interoperability Test)
要跟其他四種不同的OS進行測試
當測試完之後沒有問題
就可以請他們協助將文件寄到國外去申請Logo了

2012/06/06

VRRP...


VRRP (Virtual Router Redundency Protocol)

每個網路都會指定default gateway
若default gateway壞了所有的對外網路就完全不通了
所以VRRP(rfc2338)就是用來避免這樣的事情發生

Virtual Router是由一群實體的layer 3 device所組成
這些網路設備都有相同的IP
但是只有設定為master的那台會有作用
master也會固定送hello message給其他的設備
其他的設備都處在stand by的狀態
當master掛了之後
其中的一台就會取代master的角色

2012/03/03

【Linux】IPv6 Stateful Auto Configuration

在上一篇我有提到IPv6有另一種自動設定IP的方式

● Stateful
透過DHCP server所給的網路位址 + EUI-64所產生出的網卡位址
看DHCP server的設定,有時也會給定全部的位址而不用網卡位址
 


基本上跟IPv4獲得IP的方式雷同
但是IPv6的DHCP Server可以選擇要只給網路位址或給全部的位址
既然已經有了router給網路位址的作法
為什麼還要出現一個DHCPv6的功能呢?
這樣來說MIS可以更方便的管理設備
反正網址這麼多, 一台設備又可以有很多的IP
所以就沒差了...

下面的範例Server可以送IPv6的address給PC




● Server
# yum remove dhclinet
# yum install dhcp
# vi /etc/dhcp/dhcpd6.conf
    option dhcp6.rapid-commit;
    default-lease-time 120;                  
    ddns-update-style interim;
    ddns-domainname example.com";      
    authoritative;                                    
    subnet6 2011:1:2::/48 {
        range6 2011:1:2::129 2011:1:2::254;
        option dhcp6.name-servers 2011:1:2::2012;
        option dhcp6.domain-serach "ipv6.domain.example";
    }
# ifconfig eth0 inet6 add 2011:1:2::123/48
# service dhcpd6 start

● PC
# dhclient -6 eth0
# ifconfig

透過上面的設定PC就可以拿到IPv6的網路位址
會介於2011:1:2::129到2011:1:2::254之間

2012/02/24

【Linux】IPv6 Stateless Auto Configuration

之前在IPv6那篇文章中有提到
有兩個自動設定IP的方式

● Stateless
網路的位址是由 router所給的 + EUI-64所產生出的網卡位址
這樣就是一個完整的IPv6 address
● Stateful
透過DHCP server所給的網路位址 + EUI-64所產生出的網卡位址
看DHCP server的設定,有時也會給定全部的位址而不用網卡位址



這篇先介紹如何將Linux的設備變成IPv6 Router
可以送出IPv6的網路位址
讓PC可以收到IPv6的網路位址再加上自己的MAC自動產生IPv6的IP


Linux Server這邊要安裝radvd這套軟體
這套軟體可以發送Network address並且做IPv6的Routing

● Server
# yum install radvd
# vi /etc/radvd.conf
interface eth0
{
    AdvSendAdvert     on;
    MinRtrAdvInterval   3;
    MaxRtrAdvInternal 10;
    prefix 2001:db8:0:f101::/64
    {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;
    };
};
# echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
# echo 1 > /proc/sys/net/ipv6/conf/default/forwarding
# vi /etc/sysconfig/network
NETWORKING_IPV6=yes
# service radvd start


接這就可以用 # ifconfig 去看到新的IPv6 address (2001:db8:0:f101::interface address)
● PC
# ifconfig




2012/02/23

【Linux】設定IPv6

最近的工作有設定到一些IPv6的相關功能
寫下來做個紀錄
順便跟大家分享一下

這兩台都是Linux的設備
一開始要先將IPv4與IPv6設定好,之後才可以用ping的方式看看有沒有連起來

● PC
# ifconfig eth0 192.168.1.2                      
# ifconfig eth0 inet6 add 3ff1:1:2::2/64               
# service iptables stop                              
# service ip6tables stop                            

● Server
# ifconfig eth0 192.168.1.1                             
# ifconfig eth0 inet6 add 3ff1:1:2::1/64                
# service iptables stop                                 
# service ip6tables stop                                

接下來就可以ping看看有沒有連起來
● PC
# ping 192.168.1.1                             
# ping6 -I eth0 3ffe:1:2::1

● Server
# ping 192.168.1.2
# ping6 -I eth0 3ffe:1:2::2

2011/12/21

IPv6...

由於IPv4的網路位址已經耗盡了
所以下一代的網路定址IPv6顯得更為重要
 IPv6與IPv4最主要的差別是
網路位址的大小由32bits升級到128bits

網路的位址就變成下面的格式
2001:0db8:1a2b:0015:0000:0000:1a2f:0000
因為真的太難記了
所以有了下面兩種縮寫的規則
● 開頭0可以被忽略,多個0可縮寫成為一個
2001:db8:1a2b:15:0:0:1a2f:0
● 多個0的blocks可以被組成 :: (只能出現一次)
2001:db8:1a2b:15::1a2f:0

IPv6一樣有網路遮罩(Netmask)的概念
被稱作Prefix,在這個prefix所包含的位址皆為網路位址
2001:db8:1a2b:15::1a2f:0/64
上面的例子就是說前面的64個bits為網路位址

以前在IPv4有unicat, multicast以及broadcast
現在IPv6把最耗網路頻寬的broadcast改為anycast
這個anycast只有router能發出
是用來發給最近的router
這樣就可以知道最近的router是哪個
之後再傳遞封包的時候就可以用這台router傳送資料

unicast的網路位址分為兩種型態
● Global Address
全世界唯一
開頭位址為2或3,最後64bits是網卡位址
● Local Link Address
不能出router
fe80開頭,最後64bits是網卡位址 (只要有enable IPv6就會自動生成)
那要如何將網卡的位址(48bits)轉為IPv6的網卡位址(64bits)呢?
EUI-64就是要負責這樣的轉換規則
  - 第7個bit為補數
  - 加入FFFE到第3與第4個位址中
00:ab:cd:12:34:56 → 02ab:cdff:fe12:3456

由於IPv6的位址真的太複雜了
所以不希望大家用手動的方式設定網址 (也可以自己手動設定)
除了上面轉換MAC為IPv6 interface address的方法之外
IPv6還定義了兩個auto-configuration的方法 (自動設定IP)
● Stateless
網路的位址是由 router所給的 + EUI-64所產生出的網卡位址
這樣就是一個完整的IPv6 address
● Stateful
透過DHCP server所給的網路位址 + EUI-64所產生出的網卡位址
看DHCP server的設定,有時也會給定全部的位址而不用網卡位址





2010/10/26

DHCP...

DHCP (Dynamic Host Configuration Protocol)
是用來自動取得IP的一種通訊協定
定義在RFC2131 & RFC2132
在switch中有提供兩種DHCP的作法
● DHCP server : 提供client所需的ip
● DHCP relay agent : 將client所送出的dhcp request轉送到網路上(因為DHCP client & DHCP server在不同的broadcast domain), 並且將broadcast的封包轉成unicast的封包

可以依據不同的Relay Agent Information 來分配IP以及做認證的用途 (RFC3046)
Relat Agent Information的資訊加到option82這個DHCP header的欄位中
包含了
> Slot ID(1byte) : 沒有插卡的設備為0
> Port ID(1byte) : DHCP client所接的port
> VLAN ID(2bytes) : DHCP client所屬的vlan
> Information(15bytes) : 可已自行key入的資訊

DHCP relay分為兩種mode
> Global mode : 所有的DHCP request都送到相同的DHCP server
(如果不同的VLAN要assign不同的IP range, 請將option82的選像打開。才會將vlan的資訊送給DHCP server)


> VLAN mode : 收到來自不同VLAN的DHCP request會轉送到不同VLAN的DHCP server (在設定前必須先將每個vlan的IP設好)

2010/10/24

30歲前一定要搞懂的自己...

這本書是我一個很好的朋友借給我看的
是一位心理醫生所寫得書
在這個青黃不接的三十歲時
有機會可以看一下
以下是我對這本書的一些歸納與整理
分為五個大的段落
(1) 面臨的問題
(2) 防衛機制的檢視
(3) 工作 & 人際
(4) 愛情 & 婚姻
(5) go~

(1) 面臨的問題
● 酷 ←→ 自戀
為了不受傷害 → 不執著於任何事物
追求快樂 (享樂)
● 情緒問題 ( 傾聽 → 找出原因)
● 夢想 & 現實產生衝突 (過度期)
獨立 (告別保護 & 背負責任)
● 選擇的自主權
不確定性
責任
選擇後會覺得其他也許更好
● 想逃避,請思考目的地
● 自我中心 (判斷別人的標準與自己的標準不同)
→ 克制自己的欲望
● 有問題,請提出煩惱
1. 拋棄主觀 & 偏見,觀察別人
2. 找出信賴 & 尊重的人
3. 將煩惱提出
(腳踏實地生活的安定 & 自信以及愛護自己的心)
(彼此席席相關,可能在無意中傷害對方所以要更謹慎、溫和看待他人 & 這個世界)
(嬰兒 = 天使,因為小嬰兒需要愛才能活下來)

(2) 防衛機制的檢視
● 不相信世界
因為傷害來自親近的人 (沒有絕對安全的地方,但是這個世界好人比壞人多)
1. 保持謙虛,尊重別人
2. 受到傷害要適當回應
● 過去的影響 (受傷的小孩→不成熟的防衛)
1. 盡情的哭泣
2. 找出痛點,並且上藥
● 負面的防衛機制
投射:無法接受→都是別人的錯
投設性認同:引出別人的錯
戲畫化:將害怕的人變成滑稽的人,降低恐懼
逃避:保持安全的距離
退化:回到幼年時期
攻擊性轉向自我:自我毀滅
否認:無法接受的想法,直接否決
隔離:從想法中抽離,只保留單純
抵銷:會導致別人受傷,試圖回復原狀
反應結構:做出與內心不同的舉動
● 正面的防衛機制
壓抑:痛苦 & 慾望壓抑在內心 → 衝撞
認同、象徵化、昇華、合理化、代替形成、利他主義 → 溫暖 & 多情

(3) 工作 & 人際
● 問題
找不到方向 (不是努力就可以)
不同世代價值觀 & 生活方式的衝突
禁不起責備
沒有決定權的中堅
● 自我期許過高 ←→ 自我形象差距
知足:人不可能完美,有成就就享受喜悅
● 天使(道德受虐狂) → 非我不可
犧牲當成愛的交換條件 → 失去自我、憤怒、空虛、憂鬱
● 不相信別人 (強迫症)
→ 內心孤單、疲倦、憤怒
● 倦怠期 (因為不斷重複的事物)
→ 內心再整合吸收
● 比較
短期:帶動競爭力
長期:失去挑戰精神,剝奪新事物的樂趣
→ 感受人生、享受人生
● 工作 & 生活均衡
1. 休假計畫
2. 自己人生的主人
3. 沒有"非你不可"
4. 工作 → 幸福
● 辭職 → 為自己的決定負責
有衝突請數到三再開口
● 職場上面沒有親情
1. 設身處地尊重別人
2. 對自己分內的工作盡心負責
3. 言行不要傷害別人
4. 尊重彼此的私領域

(4) 愛情 & 婚姻
● 害怕被拒絕
配不上對方的自卑 & 罪惡
在被拋棄前離開對方
● 在意過去
佔有對方的過去,缺乏自信
● 確認愛情
戀愛的過程 ( 陷入→ 談 → 停留 [分享生活、給予溫暖、了解肯定對方])
● 停止忌妒 → 享受愛情
男性care 肉體外遇
女性care 精神外遇

● 理想情人 (人是不完美的)
心懷感謝 & 體貼對方
接受現實,接受對方
● 要求情人扮演父母的腳色
必須相互調和,非單方要求
● 別離 (失去) → 心理狀態:否認→憤怒→悲傷&接受→送往&出發
告別父母親
告別理想自我
● 親密關係 (真正關心自己命運的人)
1. 穩固自我認同
2. 與對方持續交流 (分享內心深處的自我)
● 媽媽女孩 & 男孩
缺乏自主性 → 自卑感
最好的孝順
1. 自己幸福
2. 感恩 & 照顧
3. 將愛傳給孩子
● 共鳴 (同理心) → 相互了解
● 受傷症候群 (因為過去受傷,所以可以任意要求)
1. 對自己現在行為負責
2. 不代表傷害別人的行為可以原諒
3. 不能不顧自己,一心只想犧牲

● 婚姻 (愛)
1. 現實層面(經濟)
2. 文化層面
3. 心理層面(潛意識)
吵架時,讓對方看到自幼稚&小氣,因為具備了愛與信任 → 會包容,互相體諒尊重
給孩子愛但是別太多期待
做好克服現實障礙的準備
接受 & 尊重彼此的差異
1. 承認愛情的限制
2. 縮小彼此的差異
3. 隱瞞對方

(5) go~
1. 下定決心就能成功 (熱情、準備、心態)
2. 愛得更熱烈、更誠摯
3. 下定決心就能幸福
發現自己對他人而言很重要
把該做的事情做完
4. 你的都是對的,毫不猶豫勇往直前 (自由)

2010/10/11

專案管理 - Closing

在專案的結束時
要進行文件的建檔
並進行結束會議
最後要給自己 & 所有參予專案的成員一點小小的鼓勵

專案管理 - Execting

這個步驟就是做事情啦
並且回報目前的狀況給上面知道

要回報的內容分為兩種
● Hard Dada (定量):數量 [%, 開始/結束日期]

● Soft Data (定性):品質 (有問題的點) [文字描述]

專案管理 - Monitoring

這個標題應該還要包括 controlling & changing兩個
這個階段是要了解目前專案執行的狀況
並進行修正與處理

當有changing發生時,請務必參考下列兩點
1. 請將變更的原因寫下來
2. 根據下列的構面去評估對專案的影響
● technical
● finicial
● scheduling
● quality

專案管理 - Planning

在Planning這個階段一共有下列六個步驟
(1) Work Breakdown Structure
這個步驟是將所有的要執行的任務都列出來
在這個步驟完整性是最重要
請將major deliverable細分成各個task
在分出所有的task之後
要建立WBS dirctionary
要將執行的任務、產出、負責的人員定義在此表中

rule type:Responsible(做事的人), Accountable(負責成敗的人), Consult(顧問), Inform

(2) Activity Duration Estimate
在這邊要評估每個任務的時間
要考慮下列因素:歷史資料、專案特性、人員變數、非內部因素
可以參考下列的作法
● PERT三點不確定法:E=(O+4M+P)/6
E:最後估計的時間
O:最樂觀的時間
M:一般需要的時間
P:最悲觀的時間

(3) Activity Sequencing
排出各task之間的順序,並定義中間的checkpoint[milestone]
有下列兩個步驟
1. 確認每個task之間的順序 & 先後關係
2. 決定critical path (花費最長時間的路徑)

(4) Schedule Development
根據步驟(3)的結果,試圖將schedule的時間縮短一個比例
可以透過下面的幾個作法
a. 減少task時間
b. 增加人力
c. 將CP的path變成平行
在決定好時間之後,描繪Gantt Chart

(5) Risk Management
進行風險的評估與管理
所謂的風險就是:未來發生 & 對專案有負面影響的事情
有兩種風險管理的作法
a. 預防措施preventive actions (cause)
b. 應變措施contingency plan (effect)
風險管理有下面幾個步驟
1. 透過大腦激盪定義出可能會發生的風險
2. 安排 & 排序風險的影響 & 發生機率
3. 指派風險負責人,並發展"預防措施" & "應變措施"

(6) Obtain a paln approval
開一個專案介紹的會議給老闆
要介紹此專案的目的、資源、可行性、主要的分類、需要多長的時間、風險等等...
讓老闆允諾這個計畫...

2010/10/10

專案管理 - Initiating

在專案開始的階段中
有下列四個步驟要完成
(1) Project Scope Statement
定義這次專案的目標
盡量在25個字之內就描述完畢
簡單清楚
務必只有一個目標

(2) Flexibility Analysis Matrix
建立分析圖來決定哪個是最重要的以及之間的順序
下圖的話就是Scope是最重要的
而Resource是最不重要的


(3) Major Deliverable
將主要的目標進行大致的分類

(4) Completion Criteria
設定每個Major deliverable所要的產出 & 時間
最好透過被動式的方式描述