ᚑくᄢቇℂᎿቇ⎇ⓥႎ๔
J. Fac. Sci. Tech., Seikei Univ.
Vol.47 No.1 (2010) pp.33-38

ઍℂಣℂߩ▸࿐᜛ᄢߦࠃࠆࠨ࡯ࡃ㔚ജ૶↪㊂೥ᷫߩߚ߼ߩၮ␆ᬌ⸛㐳ฬ ଻▸ 㧘㋈ᧁ 㗼㧖㧘ᩙᨋ િ৻㧖
㧖1Preliminary study on a power reduction method for servers by an active use of proxy operationYasunori OSANA㧖1, Ken SUZUKI㧖, Shin-ichi KURIBAYASHI㧖,ABSTRACT㧦 Most servers on the Internet is in 365x24 operation to provide service at anytime, while
computers usually consume 50 to 100W even in their idle state. This work proposes a novel method toreduce servers' power consumption. In this method, an intelligent NIC with simplified TCP/IP support
controls the sleep/awake state of the server. While the server is in sleep state, the NIC processes thearrival packet then respond by itself, transfer to the designated proxy server, or make the server awaken.
This paper shows the result of preliminary statistics based evaluation of the method and reports current
status of NIC implementation. From the evaluation, fraction of available time to sleep extends from
5-10% to 30-50% with this proposed method even on busier server.
Keywords㧦power reduction, servers, proxy operation.
㧔Received March 25, 2010㧕㧝㧚ߪߓ߼ߦRouter ᄢቇߥߤߩ⎇ⓥᯏ㑐ߦ߅޿ߡߪ㧘⎇ⓥᚑᨐ౏㐿ߥߤߩߚ߼ߦᢙᄙߊߩࠨ࡯ࡃ߇Ⓙ௛ߒߡ޿ࠆ߇㧘ߎࠇࠄߩࠨ࡯ࡃߩឭଏߔࠆࠨ࡯ࡆࠬߦኻߔࠆࠕࠢ࠮ࠬߪታ㓙ߦߪߘࠇ߶ߤᄙߊߥ޿႐ว߽޽ࠅ㧘⋭ࠛࡀ࡞ࠡ࡯ߩⷰὐ߆ࠄߪᅢ߹ߒߊߥ޿‫৻ߩߘߒ߆ߒޕ‬ᣇߢ㧘ߎࠇࠄߩࠨ࡯ࡃߪ㜞ᐲߦኾ㐷⊛ߥࠨ࡯ࡆࠬࠍឭଏߔࠆߚ߼࠰ࡈ࠻࠙ࠚࠕߩ᭴ᚑ߇ⶄ㔀ߢ޽ࠆ႐ว߇ᄙߊ㧘౒↪ߩࠨ࡯ࡃߦ㓸⚂ߔࠆߎߣ: traffic monitor߇࿎㔍ߢ޽ࠆ‫ޕ‬

Servers ߎߩࠃ߁ߥࠨ࡯ࡃ⟲ߩ㔚Ḯࠍേ⊛ߦࠝࡦ࡮ࠝࡈߔࠆߎߣ߇ߢ߈ࠇ߫ᶖ⾌㔚ജࠍᛥ೙ߔࠆߎߣ߇น⢻ߦߥࠆ߇㧘࿑㧝 ឭ᩺ᚻᴺ㧦ಽᢔ࠻࡜ࡅ࠶ࠢ⋙ⷞߘߩ႐วߦߪࠨ࡯ࡃߩ஗ᱛਛ߽૗ࠄ߆ߩᣇᴺߢࡀ࠶࠻ࡢ࡯ࠢߩᄖㇱ߆ࠄߺߚ࡝ࡦࠢ⁁ᘒࠍ⛽ᜬߒ㧘ᔅⷐߦᔕߓߡࠃࠅ⚦߆޿☸ᐲߢᨵエߥ೙ᓮࠍⴕ߁ᣇᑼ߇ᔅⷐߢ޽ߞߚ‫ޕ‬⿠േߔࠆᣇᴺ߇ᔅⷐߦߥࠆ1)‫ޕ‬ᓥ᧪㧘࡞࡯࠲ߥߤᄖㇱߩ ᧄ⎇ⓥߢߪ㧘IP ࡟ࠗࡗߩಣℂ⢻ജࠍ߽ߟࠗࡦ࠹࡝ࠫࠚࡀ࠶࠻ࡢ࡯ࠢᯏེ਄ߦ࠻࡜ࡅ࠶ࠢ⋙ⷞᯏ⢻ࠍߟߌߡ߅߈㧘ࡦ࠻ߥࡀ࠶࠻ࡢ࡯ࠢࠗࡦ࠲ࡈࠚࠗࠬࠞ࡯࠼(NIC)ࠍ㐿⊒ߔࠆߎߣߢ㧘࿑ 1 ߩࠃ߁ߦࠨ࡯ࡃߏߣߦ࠻࡜ࡅ࠶ࠢ⋙ⷞ㐳ᤨ㑆ࠨ࡯ࡆࠬⷐ᳞߇ߥ޿႐วߦߪࠨ࡯ࡃࠍࠬ࡝࡯ࡊߐ
ߖ㧘ᔅⷐߦߥߞߚࠄࡀ࠶࠻ࡢ࡯ࠢ⚻↱ߢ⿠േߩᜰ઎ࠍⴕ

ࠍⴕ޿㧘ᔅⷐߩߥ޿႐วߦߪⓍᭂ⊛ߦࠨ࡯ࡃࠍࠬ࡝࡯ࡊ

߁ᣇᑼ2)ߥߤ߇ណࠄࠇߡ߈ߚ߇㧘ߎߩᣇᑼߢߪࡀ࠶࠻ࡢߐߖࠆߎߣߢᶖ⾌㔚ജߩૐᷫࠍ࿑ࠆᣇᑼߩታ⃻ࠍ⋡ᜰߒ࡯ࠢౝㇱߢߩࠕࠢ࠮ࠬߦኻᔕߢ߈ߥ޿ߥߤߩ໧㗴߇޽ࠅ㧘ߡ޿ࠆ‫ߩߎޕ‬ᣇᑼߢߪ㧘ࠨ࡯ࡃߩࠬ࡝࡯ࡊਛߦࡄࠤ࠶࠻㧖߇೔⌕ߒߚ႐วߦ (1) NIC ߛߌߢಣℂࠍⴕ߁㧘(2) ઁߩ㧦ᖱႎ⑼ቇ⑼ഥᢎࠨ࡯ࡃ߳ォㅍߒߡઍℂಣℂࠍⴕ߁㧘(3) ࠨ࡯ࡃߩࠬ࡝࡯㧖㧦ᖱႎ⑼ቇ⑼ቇ↢㧦ᖱႎ⑼ቇ⑼ᢎ᝼ (kuribayashi@st.seikei.ac.jp)㧖ࡊ⁁ᘒࠍ⸃㒰ߒߡ࠰ࡈ࠻࠙ࠚࠕߦࠃࠆಣℂࠍⴕ߁㧘ߩ 3㧙㧙Supportprogram

Ethernet PHY

L2 Frontend

OSL3 Stack

Simplified L3 Stack

Driver
L2 Software
NIC
L2 Hardware

Ethernet MAC

L2 Backend
Simplified
L3 stack

FPGANIC

PCIe Endpoint࿑㧞 ឭ᩺ߔࠆࠪࠬ࠹ࡓߩ࡟ࠗࡗ᭴ᚑ࿑㧟 ឭ᩺ߔࠆ 0+% ߩ᭴ᚑㅢࠅࠍᗐቯߒߡ߅ࠅ㧘․ߦ(1)ߣ(2)ߩಣℂ▸࿐ࠍ᜛ᄢߔࠆ
ߎߣߢᶖ⾌㔚ജߩૐᷫࠍ࿑ࠆߎߣࠍਥ⌒ߣߒߡ޿ࠆ‫ޕ‬ో૕ߩᣇᑼ᭎ⷐߦߟ޿ߡߪᣢߦᢥ₂3)4) ߦ⊒⴫ߒߡ޿Gigabit Ethernet MAC ࠍ FPGA ਄ߦ៞タߒߡ޿ࠆ‫߅ߥޕ‬㧘ᦨ ᣂ ߩ ૐ ଔ ᩰ Ꮺ ࠺ ࡃ ࠗ ࠬ ߢ ޽ ࠆ Spartan-6 LXT6) ߿Cyclone IV GX7) ߥߤߢ߽ห᭽ߩ᭴ᚑࠍታ⃻ߢ߈ࠆ‫ޕ‬FPGA ߩ ࡙ ࡯ ࠩ ࡠ ࠫ ࠶ ࠢ ㇱ ߦ ߪ Ethernet MAC ߣࠆߩߢ㧘ᧄⓂߢߪ㧘㐿⊒ਛߩNICߩ᭴ᚑߦߟ޿ߡㅀߴࠆߣߣ߽ߦ㧘ቇౝߢ᷹ቯߒߚ࠻࡜ࡅ࠶ࠢ⛔⸘ߦၮߠߊ㧘ᣇ

PCI-Express ࠍធ⛯ߔࠆߚ߼ߩ࿁〝(L2 Frontend/Backend)ࠍ᭴ᚑߒ㧘ߎࠇߪ࠺ࡃࠗࠬ࠼࡜ࠗࡃ෸߮ OS ߩ IP overᑼߩ᦭ലᕈᬌ⸽ߩ⚿ᨐࠍႎ๔ߔࠆ‫ޕ‬Ethernet ࠬ࠲࠶ࠢࠍ⚻↱ߒߡ㧘ㅢᏱߩ Gigabit Ethernet NIC
ߣห᭽ߩ௛߈ࠍߔࠆ‫ޕ‬FPGA ࠍ↪޿ߡኾ↪࿁〝ߦࠃࠆࡄ㧞㧚ឭ᩺ᚻᴺߣࠪࠬ࠹ࡓ᭴ᚑࠤ࠶࠻ಣℂࠍⴕ߁ߎߣߢ㧘ࡑࠗࠢࡠࡊࡠ࠮࠶ࠨࠃࠅ߽ૐ
ᧄ⎇ⓥႎ๔ߢឭ᩺ߔࠆᚻᴺߩਥ⌒ߪ㧘NIC ࠍࠗࡦ࠹࡝޿േ૞๟ᵄᢙߢߩಣℂ߇น⢻ߦߥࠅ㧘㔚ജല₸߇ะ਄ߔࠫࠚࡦ࠻ൻߔࠆߎߣߢ㧘ࡎࠬ࠻ߩࠬ࡝࡯ࡊਛߪ NIC ߇ࡎࠆ‫ߚ߹ޕ‬㧘ኾ↪࿁〝ߢߪ޽ࠆ߇ౣ᭴ᚑ߇น⢻ߥߚ߼㧘ᔅࠬ࠻ߩઍࠊࠅߦᔕ╵ߒߚࠅ㧘޽ࠆ޿ߪ NIC ߇ઁߩࡎࠬ࠻ⷐߥࡊࡠ࠻ࠦ࡞ߩߚ߼ߩ࿁〝ߛߌࠍㆬࠎߢ៞タߒߚࠅ㧘ߦઍℂᔕ╵ࠍଐ㗬ߒ㧘ᔅⷐߦᔕߓߡࡎࠬ࠻ࠍࠬ࡝࡯ࡊ⸃ᣂߚߥᯏ⢻ࠍㅊടߒߚࠅߔࠆߎߣ߽ߢ߈ࠆ‫ޕ‬FPGA ߩᶖ㒰ߔࠆߎߣߢ㧘(1) ᄖㇱ߆ࠄߩಣℂⷐ᳞ߦࠪ࡯ࡓ࡟ࠬߦ
ኻᔕߢ߈ࠆߎߣߣ㧘(2) ห᭽ߦࡎࠬ࠻਄ߢേ૞ߒߡ޿ࠆ࠰ࡈ࠻࠙ࠚࠕߦ߽․೎ߦᚻࠍട߃ࠆߎߣߥߊ㧘ࠬ࡝࡯ࡊ⾌㔚ജߪ㧘PCI Express-Gigabit Ethernet ߩࠗࡦ࠲ࡈࠚࠗࠬ

ߛߌࠍ᭴ᚑߒߚ႐วߦ 1.5W ⒟ᐲߣߐࠇߡ߅ࠅ㧘ㅊടߩ࿁〝ࠍ฽߼ߡ߽ 2ޯ3W ߩ▸࿐ߦ෼߹ࠆߣ⠨߃ࠄࠇࠆ‫ޕ‬߹ߚ㧘FPGA ਄ߦߪ◲නߥ L3 ೙ᓮ࿁〝 (Simplified L3⁁ᘒߣേ૞⁁ᘒߩಾࠅᦧ߃ࠍታ⃻ߔࠆߎߣߦ޽ࠆ‫ޕ‬ឭ᩺ߔࠆࠪࠬ࠹ࡓߩ᭴ᚑࠍ࿑ 2, NIC ߩ᭴ᚑࠍ࿑ 3 ߦ␜stack) ࠍ៞タߒ㧘ߎࠇࠍ↪޿ߡㅢା⁁ᘒߩ⋙ⷞ߿㧘ࡎࠬߔ‫ޕ‬NIC ߪኾ↪ߩࡂ࡯࠼࠙ࠚࠕࠍታ⃻ߔࠆᔅⷐ߇޽ࠆߚ࠻߇ࠬ࡝࡯ࡊߒߡ޿ࠆ㑆ߩઍℂᔕ╵ߣࡎࠬ࠻ߩࠬ࡝࡯ࡊ߼㧘છᗧߩ⺰ℂ࿁〝ࠍ᭴ᚑน⢻ߥ LSI ߢ޽ࠆ FPGA (Field⸃㒰ߥߤߩ೙ᓮࠍⴕ߁‫ߩߎޕ‬㧘FPGA ਄ߩ L3 ೙ᓮ࿁〝ߣProgrammable Gate Array)ࠍ៞タߒߚ PCI-Express ࠞ࡯࠼ᖱႎࠍ߿ࠅߣࠅߔࠆߚ߼ߩࠨࡐ࡯࠻࠰ࡈ࠻࠙ࠚࠕࠍࡎࠬ

ࠍ↪޿ࠆ‫⃻ޕ‬࿷↪޿ߡ޿ࠆ FPGA ࡏ࡯࠼ߪ Xilinx ␠ߩ࠻ OS ਄ߢ⿠േߒߡ߅ߊ‫ޕ‬⵾ߩ PCI-Express ⹏ଔࡏ࡯࠼(࿑ 4)ߢ޽ࠅ㧘PCI-Express ߣߒߚࠅ㧘ࡎࠬ࠻ߩࠬ࡝࡯ࡊਛߦߪ೔⌕ࡄࠤ࠶࠻ߩಣℂࠍ

Virtex-5 LXT5) ࠍ៞タߒߚ᧲੩ࠛ࡟ࠢ࠻ࡠࡦ࠺ࡃࠗࠬ␠

NIC ਄ߩ L3 ೙ᓮ࿁〝ߪ㧘ㅍฃାߔࠆࡄࠤ࠶࠻ࠍ⋙ⷞ࿑㧠 8KTVGZ ៞タ2%+'ZRTGUU ⹏ଔࡏ࡯࠼㧙㧙

4080806060

404020Power20

CPU load

01020304050

CPU load (%)

100

Power (W)

100Incoming Frames/sec: average in 10min1206070All
HTTP ProxyHTTP
SMTP
POP35302520
15105006121824

Hour

Transactions/sec.

࿑㧣 ࠨ࡯ࡃ $ ߦ߅ߌࠆ  ᤨ㑆ߩฃାࡈ࡟࡯ࡓᢙ࿑㧡 ࠨ࡯ࡃ߳ߩ࡝ࠢࠛࠬ࠻⊒↢㊂ߣᶖ⾌㔚ജ
148AllHTTP ProxyHTTPSMTP
POP

12HTTP

10

7

Incoming Frames/sec

Incoming Frames/sec: average in 10min

96
5
4
3

864
2

2
10:09:00
06

12
Hour

180:09:10

0:09:20

0:09:30

0:09:40

0:09:50

0:10:00

Hour24࿑㧤 ࿑㧣ߩ㧝ಽ㑆ಽߩ᜛ᄢ࿑࿑㧢 ࠨ࡯ࡃ # ߦ߅ߌࠆ  ᤨ㑆ߩ
HTTP ߩ࠻࡜ࡦ࡚ࠩࠢࠪࡦ⊒↢ᢙࠍᄌൻߐߖߡ࿑ 5 ࠍᓧฃା *662 ࡈ࡟࡯ࡓᢙߚ‫ޕ‬CPU ⽶⩄ߪᤨ㑆ᒰߚࠅߩ࠻࡜ࡦ࡚ࠩࠢࠪࡦᢙߦ߶߷Ყ଀ߔࠆ৻ᣇ㧘ᶖ⾌㔚ജߪ CPU ⽶⩄߇ૐߊߥߞߡ߽ࡇ࡯

ⴕ߁‫⸃ߩ࠳࠶ࡋޕ‬ᨆ߿㧘ᔕ╵ࡄࠤ࠶࠻ߩ↢ᚑߥߤߩಣℂࠢᤨߩ 2/3 એ਄ߢ޽ࠆ‫⁁ࡊ࡯࡝ࠬߪࡃ࡯ࠨߩߎޕ‬ᘒߦ⒖ߪᒰೋ㧘ၮᧄ⊛ߦኾ↪ߩ࿁〝ߢታ⃻ߔࠆ੍ቯߢ޽ࠆ߇㧘዁᧪⊛ߦߪࠃࠅⶄ㔀ߥࡊࡠ࠻ࠦ࡞ߥߤߦኻᔕߔࠆߚ߼ߦ㧘
MicroBlaze ߥߤߩ࠰ࡈ࠻ࠦࠕࡊࡠ࠮࠶ࠨࠍ FPGA ਄ߦⴕߒߚ႐วߦߪ 5W ⒟ᐲߩᶖ⾌㔚ജߦߥࠆߩߢ㧘ᔅⷐ߇ߥ޿႐วߦߪࠨ࡯ࡃࠍ஗ᱛ㧘޽ࠆ޿ߪࠬ࡝࡯ࡊߐߖߡᶖዉ౉ߒߡ࠰ࡈ࠻࠙ࠚࠕߢಣℂߔࠆߎߣ߽⠨߃ࠄࠇࠆ‫ޕ‬⾌㔚ജࠍ೥ᷫߔࠆߎߣ߇ലᨐ⊛ߢ޽ࠆߎߣ߇ࠊ߆ࠆ‫ޕ‬ߥ߅㧘ࡎࠬ࠻߇⿠േߒߡ޿ࠆ㑆ߩㅢାߦߟ޿ߡߪ㧘FPGA ਄ߩ L3 ೙ᓮ࿁〝ߪㅘㆊ⊛ߦേ૞ߒ㧘OS ߣࡀ࠶࠻ ࠬ࡝࡯ࡊน⢻ߥᤨ㑆ߩ⷗Ⓧ߽ࠅࡢ࡯ࠢߩ㑆ߩㅢାߦߪ੺౉ߒߥ޿‫ޕ‬ ߎߎߢߪ㧘A, B 2 บߩࠨ࡯ࡃߩ೔⌕ࡄࠤ࠶࠻ࠍ 24 ᤨ㑆ߦࠊߚߞߡࠠࡖࡊ࠴ࡖߒ㧘ߘߩಽ㘃ࠍⴕߞߚ‫߅ߥޕ‬㧘᷹㧟㧚੍஻⹏ଔߣ⠨ኤ

ቯߪ Ethernet ߩࡈ࡟࡯ࡓᢙන૏ߢⴕߞߚ‫ޕ‬̗ ࠨ࡯ࡃ⽶⩄ߣᶖ⾌㔚ജ ੍஻⹏ଔߩᦨೋߩࠬ࠹࠶ࡊߣߒߡ㧘ࡀ࠶࠻ࡢ࡯ࠢߩ⽶̗⩄⁁ᴫߣࠨ࡯ࡃߩ CPU ⽶⩄㧘ᶖ⾌㔚ജߩ㑐ଥࠍ⺞ߴߚ‫ޕ‬

̗
̗
̗

CPU: Intel Celeron D 2.53GHz

RAM: 512MB DDR-2 SDRAM

OS: FreeBSD 8.0-RELEASEHTTPD: Apache 2.2.11

ߩࠃ߁ߦߥߞߡ޿ࠆ‫ߩࠄ߆࠻ࡦࠕࠗ࡜ࠢߢࡃ࡯ࠨߩߎޕ‬-Web (࠺࡯࠲ࡌ࡯ࠬࠍ฽߻)-Web proxy-ࡔ࡯࡞ (SMTP/POP)

ࠨ࡯ࡃ B-⸘᷹ߦ↪޿ߚࠨ࡯ࡃߩ᭴ᚑߪ㧘̗ࠨ࡯ࡃ A-WebDNSࠨ࡯ࡃ A ߪන⁛ߩࠨ࡯ࡆࠬߩߺࠍឭଏߔࠆࠨ࡯ࡃ㧘ࠨ࡯ࡃ B ߪቇ⑼ౝߢ౒᦭ߐࠇߐ߹ߑ߹ߥࠨ࡯ࡆࠬࠍឭଏߒߡ

޿ࠆࠨ࡯ࡃߢ޽ࠆ‫ޕ‬㧙㧙


2030
25

1520
10151050506121802435

࿑㧥 ࡈࠖ࡞࠲ࠍㆡ↪ߒߚ࠻࡜ࡅ࠶ࠢ㊂ߣࠬ࡝࡯ࡊน⢻ߥᤨ㑆ߩഀว

70

30

60

2550

2040

1530

1020

51000

6Hour



80

Unfiltered traffic
Filtered (ARP, ICMP, DNS, HTTP Proxy) traffic
Sleep time > 10sec

121824

Percentage of available time to sleep



35

40

Incoming Frames/sec: average in 10minIncoming Frames/sec: average in 10min

25

Unfiltered traffic
Filtered (ARP, ICMP, DNS) traffic
Sleep time > 10secPercentage of available time to sleep40

0Hour࿑  ࿑㧥ࠍߐࠄߦࡈࠖ࡞࠲ߒߚ႐ว

⴫㧝 0+%ߩฦࡕࠫࡘ࡯࡞ߩ࿁〝ⷙᮨ ࠨ࡯ࡃ # ߩ႐ว ࠨ࡯ࡃ A ߪ㧘޽ࠆ౏㐿࠺࡯࠲ࡌ࡯ࠬࠍ HTTP ⚻↱ߢឭଏߔࠆߚ߼ߦⒿ௛ߒߡ߅ࠅ㧘ࠕࠢ࠮ࠬᢙߪߘࠇ߶ߤᄙߊߥ޿‫ ߩߘޕ‬24 ᤨ㑆ߩ೔⌕ࡈ࡟࡯ࡓᢙߩ߁ߜ㧘HTTP ߩ߽ߩߪ࿑ 6 ߩࠃ߁ߢ޽ߞߚ‫ ߪࡈ࡜ࠣߩߎޕ‬10 ಽߏߣߩࡈ࡟࡯ࡓᢙࠍ⴫ߒߡ߅ࠅ㧘ߎߩ߁ߜ 10 ಽ㑆ߩ೔⌕ࡈ࡟࡯ࡓᢙ

߇ 0 ߢ޽ࠆ඙㑆ߪ 85% ߢ޽ߞߚ‫⚿ߩߎޕ‬ᨐ߆ࠄ㧘85% ߩᤨ㑆ߪࠬ࡝࡯ࡊ⁁ᘒߦ⒖ⴕߢ߈ࠆน⢻ᕈ߇޽ࠆߎߣ߇ࠊ߆ࠆ߇㧘ߎߩࠨ࡯ࡃߩ଀ߪ㕖Ᏹߦ⽶⩄߇ૐ޿଀ߣ⠨߃ࠄ

SliceFPGA ో૕

7,200

60

DMAC

1,990

11ARP

484

10

Ethernet Rx

159

1

Routing table
Ethernet Tx

Ethernet MAC

ࠇࠆߩߢ㧘ᰴ▵ߢߪࠃࠅᄙߊߩࠨ࡯ࡆࠬࠍឭଏߒߡ߅ࠅ
⽶⩄ߩ㜞޿ࠨ࡯ࡃ B ߩ᷹ቯ⚿ᨐߦߟ޿ߡㅀߴࠆ‫ޕ‬

BlockRAM

ว⸘

205
115

388

3,341

01528ߐࠄߦߎߩ⠨߃ࠍផߒㅴ߼ߡ㧘ARP, ICMP, DNS query ࠨ࡯ࡃ $ ߩ႐ว ࠨ࡯ࡃ B ߢߪⶄᢙߩࠨ࡯ࡆࠬ߇Ⓙ௛ߒߡ߅ࠅ㧘ࠨ࡯ࡃߦട߃ߡ Web proxy ߦ㑐ㅪߔࠆ࠻࡜ࡅ࠶ࠢࠍࡈࠖ࡞࠲ߒ

ାࡈ࡟࡯ࡓᢙߩ✚㊂ߣ㧘ߘߩ߁ߜਥⷐߥࡊࡠ࠻ࠦ࡞ߩභ

ࡅ࠶ࠢߩᄙ޿ᤨ㑆Ꮺߦߪࡀ࠶࠻ࡢ࡯ࠢߩᷙ㔀ࠍ✭๺ߔࠆ

߼ࠆ㊂ࠍ࿑ 7 ߦ␜ߔ‫ࠍࡈ࡜ࠣߩߎޕ‬᜛ᄢߒߡ㧘޽ࠆ 1 ಽߚ߼ߦ᦭ലߥᓎഀࠍᨐߚߔ߇㧘࠻࡜ࡅ࠶ࠢ߇ዋߥߊߥࠆA ߦᲧߴࠆߣࠕࠢ࠮ࠬ߇ᄙ޿‫ ߩࡃ࡯ࠨߩߎޕ‬24 ᤨ㑆ߩฃ㑆ߩಽߛߌࠍ␜ߒߚߩ߇࿑ 8 ߢ޽ࠆ‫ޕ‬࿑ 8 ߆ࠄ㧘ࡈ࡟࡯

ࡓࠍ 1 ⑽㑆߹ߞߚߊฃାߒߥ޿ߎߣ߇૗ᐲ߆޽ࠅ㧘ߘࠇએᄖߦ߽޿ߊߟ߆ߩࡊࡠ࠻ࠦ࡞ߦ㑐ࠊࠆㅢାߛߌ߇ⴕࠊ

ߚ߽ߩࠍ࿑ 10 ߦ␜ߔ‫ޕ‬Web proxy ߩࠠࡖ࠶ࠪࡘߪ㧘࠻࡜ߦߟࠇߡߘߩ㊀ⷐᕈߪ⭯ߊߥࠆ‫ߡߞ߇ߚߒޕ‬㧘࠻࡜ࡅ࠶ࠢ߇ዋߥ޿႐วߦߪ Web proxy ߩࠠࡖ࠶ࠪࡘࠨ࡯ࡃࠍ஗ᱛߒߡ㧘Web proxy ߳ߩ࡝ࠢࠛࠬ࠻ߪ NIC ߿ઍℂࠨ࡯ࡃࠇߡ޿ࠆᤨ㑆߇޽ࠆߎߣ߇ࠊ߆ࠆ‫ޕ‬ᓟ⠪ߦߟ޿ߡߪ㧘ߘ

߇ಣℂߔࠆߎߣߢ㧘ࠠࡖ࠶ࠪࡘߩ᦭ലᕈࠃࠅ߽ᶖ⾌㔚ജࠇࠄߩࡊࡠ࠻ࠦ࡞ࠍ NIC ߿ઍℂࠨ࡯ࡃߢಣℂߔࠆߎߣ߇

ߩ೥ᷫࠍఝవߔࠆߎߣߪᅷᒰߥㆬᛯߢ޽ࠆߣ⠨߃ࠄࠇࠆ‫ޕ‬ߢ߈ࠇ߫㧘ࠨ࡯ࡃߪࠬ࡝࡯ࡊ⁁ᘒߦ⒖ⴕߒߡ߽ࠃ޿‫ޕ‬
ߘߎߢ㧘NIC ߿ઍℂࠨ࡯ࡃߦࠃࠆಣℂࠍㆡ↪ߒߚ㓙ߩലᨐࠍ⺞ߴࠆߚ߼ߦ㧘NIC ਄ߩ࿁〝ߢߩᔕ╵߇ኈᤃߣ⠨߃ࠄࠇࠆ ARP, ICMP, DNS query ߣ޿ߞߚࡊࡠ࠻ࠦ࡞ߩ࠻

࡜ࡅ࠶ࠢࠍ࿑ 7 ߆ࠄ㒰෰ߒߚ߽ߩ߇࿑ 9 ߢ޽ࠆ‫ߩߎޕ‬࿑Web proxy ࠍ㒰޿ߚ႐วߦߪ㧘࿑ 10 ߆ࠄ㧘10 ⑽એ਄࠻࡜
ࡅ࠶ࠢߩߥ޿ᤨ㑆ߩഀวߪ 30ޯ50%⒟ᐲߦߥࠆߩߢ㧘ᣧᦺ࡮ᄛ㑆ߪ NIC ߿ઍℂࠨ࡯ࡃߦࠃࠆઍℂᔕ╵ߩ▸࿐ࠍ᜛ᄢߔࠆߎߣߢ㧘ࠨ࡯ࡆࠬຠ⾰ࠍ⪭ߣߐߕߦߐࠄߦᶖ⾌㔚ജࠍ೥ᷫߢ߈ࠆߎߣ߇ࠊ߆ࠆ‫ޕ‬ߦߪ߹ߚ㧘ࡈࠖ࡞࠲ㆡ↪ᓟߦ 10 ⑽એ਄ฃା߇ߥ޿႐วߪ

ࠬ࡝࡯ࡊ⁁ᘒߦ⒖ⴕน⢻ߢ޽ࠆߣߒ㧘ߘߩᤨ㑆ߩභ߼ࠆ 0+% ߩታⵝ⁁ᴫഀวࠍ␜ߒߡ߅ࠅ㧘Ყセ⊛࠻࡜ࡅ࠶ࠢ㊂ߩዋߥ޿ᤨ㑆Ꮺ ࿑ 4 ߦ␜ߒߚ FPGA ⹏ଔࡏ࡯࠼ߪ Xilinx ␠ߩ Virtex-5

ߢ޽ࠇ߫න⚐ߥઍℂಣℂߢ޽ߞߡ߽ 5ޯ10%ߩᤨ㑆ߪࠬ࡝࡯ࡊ⁁ᘒߦ⒖ⴕߒߡᶖ⾌㔚ജࠍ⪭ߣߔߎߣ߇น⢻ߢ޽ࠪ࡝࡯࠭ FPGA ߢ޽ࠆ㧘XC5VLX50T-1FF1136 ࠍ៞タߒߡ߅ࠅ㧘ߎࠇߦ NIC ߩฦ⒳ᯏ⢻ࠍታⵝਛߢ޽ࠆ‫ޕ‬FPGA ਄ ߩ ࿁ 〝 ߪ ߔ ߴ ߡ 125MHz ߢ േ ૞ ߒ 㧘ࠆߣ⠨߃ࠄࠇࠆ‫ޕ‬㧙㧙

RegisterCAM
IP address

32DinMatch

A

RAM
4A

Dout

Tag

32

8

Next hop32

IP address

IP address

32

32

32

8DinA

CAM
Dwrite
Match

648

ADout

RAM
Dwrite48

Tag
MAC address

80Din࿑  ࡞࡯࠹ࠖࡦࠣ࠹࡯ࡉ࡞ߩ᭴ᚑWERequest
FIFO

PCI-Express ஥ߪ 64bit ᏷ (ᦨᄢ 8Gbps)㧘Ethernet ஥ߪ 8bitDout

᏷ (ᦨᄢ 1Gbps)ߩ㧘ߘࠇߙࠇㅍฃା೎ߩାภ✢ࠍ૶ߞߡ

Din

WE

Dout

Pending
List

Reply
FIFO

Dout

ARP Request
packetDin

ARP Request
packet࠺࡯࠲ߩㅍฃାࠍⴕ߁‫⃻ޕ‬࿷߹ߢߦ㧘̗

PCI-Express ࠍ੺ߒߡࡎࠬ࠻ PC ߣߩ࠺࡯࠲ࠍㅍฃା࿑  #42 ࠹࡯ࡉ࡞▤ℂᯏ᭴ߩ᭴ᚑ

ߔࠆ DMA controller (DMAC)̗IP ࡄࠤ࠶࠻ߩㅍฃାࠍⴕ߁ߚ߼ߩ࡞࡯࠹ࠖࡦࠣ࠹ߥ޿߇㧘ተవߣߒߡ⥄ࠨࡉࡀ࠶࠻ౝߩ IP ࠕ࠼࡟ࠬࠍਈ߃

࡯ࡉ࡞߅ࠃ߮ ARP ࠹࡯ࡉ࡞▤ℂᯏ᭴
̗̗ߚ႐วߦߪ㧘ᰴࡎ࠶ࡊߩࠕ࠼࡟ࠬߣߒߡተవࠕ࠼࡟ࠬ߇

Ethernet ࡄࠤ࠶࠻ߩ↢ᚑ࡮ಽ⸃ߣㅍฃାࠍⴕ߁ᯏ᭴

ߘߩ߹߹಴ജߐࠇࠆ‫ޕ‬

Ethernet MAC

࡞࡯࠹ࠖࡦࠣ࠹࡯ࡉ࡞ߢߪ㧘ዋߥ޿ࠛࡦ࠻࡝ᢙߣ㧘ਃߩታⵝ߇߶߷ቢੌߒߡ߅ࠅ㧘ߘࠇߙࠇߩ࿁〝ⷙᮨߪ⴫ 1୯ㅪᗐࡔࡕ࡝ߩᔅⷐᕈࠍ⠨ᘦߒߡ㧘FPGA ߦ៞タߐࠇߡߦ␜ߔㅢࠅߦߥߞߡ޿ࠆ‫ ߪߢ⁁⃻ޕ‬FPGA ߩᜬߟ⺰ℂࡉ޿ࠆࡔࡕ࡝ᯏ⢻ኾ↪ࡉࡠ࠶ࠢߢ޽ࠆ BlockRAM ߪ↪޿ߕ㧘ࠇඨಽᒙ૶↪ߒߡ߅ࠅ㧘਄૏ጀߩࡊࡠ࠻ࠦ࡞ࠍታⵝߔࠆ޿ࠆ‫ޕ‬ߚ߼ߦలಽߥ࿁〝࡝࠰࡯ࠬߩ૛⵨߇ᱷߞߡ޿ࠆ‫ޕ‬ ߥ߅㧘࡞࡯࠹ࠖࡦࠣ࠹࡯ࡉ࡞ߩೋᦼൻߪࡎࠬ࠻߆ࠄ࠼

ࡠ࠶ࠢ (Slice) ߣࡔࡕ࡝ࡉࡠ࠶ࠢ (BlockRAM)ࠍߘࠇߙ

ㅢᏱߩࡠࠫ࠶ࠢߦ↪޿ࠆ LUT ࠍࡔࡕ࡝ߣߒߡ૶↪ߒߡએਅߢ㧘L3 ࠬ࠲࠶ࠢߩ߁ߜታⵝ߇ቢੌߒߡ޿ࠆ࡞࡯࠹࡜ࠗࡃࠍ੺ߒߡⴕ߁‫ޕ‬ࠖࡦࠣ࠹࡯ࡉ࡞ߣ㧘ARP ࠹࡯ࡉ࡞▤ℂᯏ᭴ߩ᭴ᚑߦߟ޿

 #42 ࠹࡯ࡉ࡞▤ℂᯏ᭴ߡ⺑᣿ߔࠆ‫ޕ‬IP ࡄࠤ࠶࠻ࠍㅍାߔࠆߦߪ࡞࡯࠹ࠖࡦࠣ࠹

 ARP ࠹࡯ࡉ࡞ߪ࡞࡯࠹ࠖࡦࠣ࠹࡯ࡉ࡞ߣ⇣ߥࠅേ⊛࡯ࡉ࡞ࠍෳᾖߒߡᰴࡎ࠶ࡊߩ IP ࠕ࠼࡟ࠬࠍᓧߚᓟߦ㧘

ARP ࠹࡯ࡉ࡞ߢተవߩ Ethernet MAC ࠕ࠼࡟ࠬࠍෳᾖߒ㧘ߘߎ߳ߣㅍࠄࠇࠆߚ߼㧘ߎࠇࠄ߰ߚߟߩᯏ᭴ߪ L3 ࠬ࠲ߦᦝᣂߐࠇࠆߚ߼㧘࿑ 12 ߩࠃ߁ߦⶄ㔀ߥ᭴ᚑࠍߣߞߡ޿

ࠆ‫ޕ‬CAM ߣ RAM ࠍ⚵ߺวࠊߖߡተవߩࠕ࠼࡟ࠬࠍᓧࠆ
ὐߪ࡞࡯࠹ࠖࡦࠣ࠹࡯ࡉ࡞ߣห᭽ߢ޽ࠆ߇㧘⹥ᒰߔࠆࠛ

࠶ࠢߩታⵝߦ߅޿ߡ߈ࠊ߼ߡ㊀ⷐߢ޽ࠆ‫ޕ‬ࡦ࠻࡝߇ CAM ߦሽ࿷ߒߥ޿႐วߪ ARP ߩ query packet ࡞࡯࠹ࠖࡦࠣ࠹࡯ࡉ࡞▤ℂᯏ᭴ࠍ⊒ⴕߒ㧘ߘࠇߦኻߔࠆᔕ╵ࠍᓙߟὐ߇ᄢ߈ߊ⇣ߥࠆ‫ޕ‬

࿑ 11 ߦ࡞࡯࠹ࠖࡦࠣ࠹࡯ࡉ࡞ߩ᭴ᚑࠍ␜ߔ‫ࠖ࠹࡯࡞ޕ‬ߎߎߢ㧘
ARP ߩ query ࠍⴕ߁႐วߦ㧘ᔕ╵߇޽ࠆ߹ߢ ARPࡦࠣ࠹࡯ࡉ࡞ߪ㧘࡞࡯࠲ߩࠕ࠼࡟ࠬࠍᩰ⚊ߔࠆㅢᏱߩࡔ

࠹࡯ࡉ࡞߇ࡉࡠ࠶ࠢߐࠇߡߒ߹߁ߣᕈ⢻ߩૐਅࠍᒁ߈⿠

ࡕ࡝ߣ㧘ተవ IP ࠕ࠼࡟ࠬ߆ࠄߎߩࡔࡕ࡝ࠍෳᾖߔࠆࡐࠗߎߔน⢻ᕈ߇޽ࠆߚ߼㧘ᔕ╵ࡄࠤ࠶࠻ࠍᓙߞߡ޿ࠆ㑆ߦࡦ࠲ࠍᓧࠆߚ߼ߩㅪᗐࡔࡕ࡝(CAM)߆ࠄᚑࠆ‫ޕ‬CAM ߩ಴ജߣ RAM ߩࠕ࠼࡟ࠬࠍធ⛯ߒߡ߅ߊߎߣߢ㧘CAM ߦተ

వ IP ࠕ࠼࡟ࠬࠍ౉ജߔࠆߎߣߢ㧘RAM ߩ಴ജ߆ࠄᰴࡎ࠶ࡊߩ࡞࡯࠲ߩࠕ࠼࡟ࠬࠍᓧࠆߎߣ߇ߢ߈㧘౉ജ߆ࠄ಴

ജ߹ߢߩㆃᑧߪ CAM, RAM ߣ߽ߦ 1 ࠢࡠ࠶ࠢࠨࠗࠢ࡞߽ಣℂࠍ⛯ߌࠄࠇࠆࠃ߁ߥ⸳⸘ߦߥߞߡ޿ࠆ‫ޕ‬ߒߚ߇ߞߡ㧘౉಴ജߩ㗅ᐨ߇଻⸽ߐࠇߥ޿ߚ߼㧘ARP࠹࡯ࡉ࡞ࠍෳᾖߔࠆ႐วߦߪተవ IP ࠕ࠼࡟ࠬߣ౒ߦ 8bitߩ࠲ࠣࠍ౉ജߒ㧘಴ജߐࠇࠆ MAC ࠕ࠼࡟ࠬߦߪෳᾖᤨߦ౉ജߐࠇߚ࠲ࠣࠍઃਈߔࠆߎߣߢ౉಴ജ㑆ߩኻᔕࠍߣߢ㧘ว⸘ 2 ࠢࡠ࠶ࠢࠨࠗࠢ࡞ߢ޽ࠆ‫ޕ‬ߞߡ޿ࠆ‫ޕ‬0, 1 ߩ୯ߩઁߦ don't care ࠍ଻ᜬߔࠆߎߣߩߢ߈ࠆਃ୯ㅪBlockRAM ࠍ↪޿ߡ޿ࠆ‫ޕ‬CAM ߪേ૞๟ᵄᢙࠍ⛽ᜬߔࠆᗐࡔࡕ࡝ࠍ↪޿ߡࠨࡉࡀ࠶࠻ࡑࠬࠢߩขࠅᛒ޿ࠍታ⃻ߒߚ߼ߦࡄࠗࡊ࡜ࠗࡦൻߐࠇߡ߅ࠅ㧘2 ࠢࡠ࠶ࠢࠨࠗࠢ࡞ߡ޿ࠆ‫ߚ߹ޕ‬㧘࠺ࡈࠜ࡞࠻࡞࡯࠻ߩขࠅᛒ޿ߪኾ↪ߩ࡟ߩㆃᑧࠍ઻߁ߚ߼㧘CAM ߦ⹥ᒰߔࠆࠕ࠼࡟ࠬ߇޽ߞߚࠫࠬ࠲ߦ࡞࡯࠲ߩࠕ࠼࡟ࠬࠍᩰ⚊ߒߡ߅߈㧘CAM ߦࡑ႐วߦߪ 3 ࠢࡠ࠶ࠢࠨࠗࠢ࡞ߢተవ MAC ࠕ࠼࡟ࠬࠍᓧ࠶࠴ߒߥ߆ߞߚ႐วߦߎࠇࠍᰴࡎ࠶ࡊߩࠕ࠼࡟ࠬߣߒߡ

ࠆߎߣ߇ߢ߈ࠆ‫ޕ‬

CAM ߣ RAM ߪߘࠇߙࠇ 16 ࠛࡦ࠻࡝ߢ޽ࠅ㧘CAM ߪARP ࠹࡯ࡉ࡞ߪ CAM, RAM ߣ߽ߦ 64 ࠛࡦ࠻࡝ߢ㧘⹥ᒰߔࠆࠛࡦ࠻࡝߇ CAM ߦሽ࿷ߒߥ޿႐วߪ㧘࿑ 12಴ജߔࠆߎߣߢታ⃻ߒߡ޿ࠆ‫ߚ߹ޕ‬㧘࿑ߦߪ␜ߐࠇߡ޿㧙㧙Communications, Vol. 27, pp. 1758–1770, Aug. 2004.

ߩ“Pending list”ߢ␜ߐࠇࠆㇱಽߦሽ࿷ߔࠆࡔࡕ࡝ߦ࠲ࠣ߇⸥㍳ߐࠇ㧘
ARP query ࡄࠤ࠶࠻߇ㅍାߐࠇࠆ‫ޕ‬ARP query3) 㐳ฬ଻▸, ᩙᨋિ৻. ઍℂᔕ╵࡮ಣℂߩ▸࿐᜛ᄢߦࠃߦኻߔࠆᔕ╵ࡄࠤ࠶࠻߇ዯ޿ߚ㓙ߦߪ㧘CAM, RAM ߦᔅⷐߥᖱႎ߇଻ሽߐࠇࠆߣߣ߽ߦ㧘Pending list ߦ⸥㍳ߐࠇࠆࠨ࡯ࡃ㔚ജ૶↪㊂೥ᷫᣇᑼߩឭ᩺. ICM2009-45, 㔚ሶᖱႎㅢାቇળ, Mar. 2010.

ߡ޿ࠆ࠲ࠣ߇ MAC ࠕ࠼࡟ࠬߣߣ߽ߦ಴ജߐࠇࠆ‫ߚ߹ޕ‬㧘4) ᩙᨋિ৻, 㐳ฬ଻▸. ࠛࡦ࠼ࠪࠬ࠹ࡓ㧘ࡀ࠶࠻ࡢ࡯ࠢ㧘

ARP ࡝ࠢࠛࠬ࠻ࠍ଻ᜬߔࠆߎߣ߇ߢ߈ࠆ‫ޕ‬ARP ߩࠕ࠼࡟⊒㔚㊂ߩ೥ᷫᴺ. ICM2009-47, 㔚ሶᖱႎㅢାቇળ,Pending list ߪᦨᄢ 16 ୘ߩ IP ࠕ࠼࡟ࠬߦኻߔࠆᧂ⸃᳿ߩࠬ⸃᳿ߩߚ߼ߩࡄࠤ࠶࠻ߪ㧘Pending list ߩಣℂਛߢ߽ขࠅߎ߷ߒ߇⊒↢ߒߥ޿ࠃ߁ߦ㧘FIFO ࠍ↪޿ߡㅍฃାߐࠇࠆ‫ޕ‬㔚ജ✂ߩㅪ៤ߦࠃࠆ ICT ✚૕ߩ㔚ജ૶↪㊂ߥࠄ߮ߦMar. 2010.

5) Xilinx Inc. Virtex-5 FPGA User Guide, v5.2, Nov. 2009.

6) Xilinx Inc. Spartan-6 FPGA User Guide, v1.1, Dec. 2009.

7) Altera Inc. Cyclone IV Device Handbook, v1.1, Jan. 2010.

㧠㧚߹ߣ߼ᧄⓂߢߪ㧘ಽᢔ೙ᓮߦࠃࠆ⚦☸ᐲߥ㔚ജ▤ℂࠍⴕ߁ߚ߼ߩઍℂᔕ╵⢻ജࠍᜬߟ NIC ߩታⵝߣ㧘ߘߩㆡ↪ലᨐߦ㑐ߔࠆ੍஻⹏ଔߩ⚿ᨐࠍ␜ߒߚ‫ޕ‬ᧄቇౝߢⒿ௛ਛߩࠨ࡯ࡃߩ࠻࡜ࡅ࠶ࠢᖱႎ߆ࠄㆡ↪ലᨐࠍ⷗Ⓧ߽ߞߚ⚿ᨐ㧘න৻ߩࠨ࡯ࡆࠬࠍឭଏߔࠆᐔဋ⽶⩄ߩૐ޿ࠨ࡯ࡃߢߪ 85% ⒟ᐲ㧘߹ߚ㧘ⶄᢙߩࠨ࡯ࡆࠬࠍឭଏߔࠆᐔဋ⽶⩄ߩ㜞޿ࠨ࡯ࡃߩ႐วߦߪㅢᏱᤨߢ 5

㨪10%㧘࠻࡜ࡅ࠶ࠢߩዋߥ޿ᤨ㑆Ꮺߦ߅޿ߡߪઍℂᔕ╵ߩ▸࿐ࠍߐࠄߦ᜛ᄢߔࠆߎߣߢ 30㨪50%⒟ᐲߩᤨ㑆ߪࠨ࡯ࡃࠍࠬ࡝࡯ࡊ⁁ᘒߦ⒖ⴕߢ߈ࠆ⷗ㄟߺߢ޽ࠆߎߣࠍ␜ߒߚ‫ޕ‬ᓟ⠪ߩࠨ࡯ࡃߪᧄቇౝߢߪᲧセ⊛Ⓙ௛₸ߩ㜞޿ㇱ㘃ߦ౉ࠆߣ⠨߃ࠄࠇ㧘ઁߩࠨ࡯ࡃߢߪห᭽ߩᚻᴺࠍ↪޿ࠆߎߣߢߐࠄߦ㐳ᤨ㑆ࠬ࡝࡯ࡊ⁁ᘒߢㆇ↪ߔࠆߎߣ߇น⢻ߦߥࠆߣ⠨߃ࠄࠇࠆ‫ޕ‬NIC ߪ FPGA ࠍ↪޿ߡታⵝߐࠇ㧘L3 ࠬ࠲࠶ࠢߩၮ␆ߣߥࠆㇱಽߪ㐿⊒ᷣߺߢ޽ࠆ‫੹ޕ‬ᓟ㧘޿ߊߟ߆ߩࡊࡠ࠻ࠦ࡞ࠍಣℂߢ߈ࠆኾ↪ߩ࿁〝ࠍ⚵ߺㄟࠎߢ߽ᦨᄢ 2㨪3W⒟ᐲߩᶖ⾌㔚ജߢേ૞ߔࠆ⷗ㄟߺߢ޽ࠆ‫ޕ‬੹ᓟߪឭ᩺ߒߚ NIC ߩࡂ࡯࠼࠙ࠚࠕ߅ࠃ߮㑐ㅪߔࠆၮᧄ⊛ߥ࠰ࡈ࠻࠙ࠚࠕߩ㐿⊒ࠍㅴ߼㧘ឭ᩺ᣇᑼߩ᦭ലᕈࠍᬌ⸽ߔࠆߣߣ߽ߦ㧘ߐࠄߦᶖ⾌㔚ജࠍ೥ᷫߔࠆߚ߼ߩᣇᑼߦߟ޿ߡᬌ⸛ߒߡ޿ߊ੍ቯߢ޽ࠆ‫ޕ‬ෳ⠨ᢥ₂1) Bruce Nordman and Kenneth Christensen. Proxying: thenext step in reducing IT energy use. IEEE Computer, Vol.
43, No. 1, pp. 91–93, Jan. 2010.

2) Kenneth J. Christensen, Ghamara Gunaratne, BruceNordman, and Alan D. George. The next frontier forcommunications networks: power management. Computer㧙㧙