TY - GEN
T1 - Practical dynamic software updating for C
AU - Neamtiu, Iulian
AU - Hicks, Michael
AU - Stoyle, Gareth
AU - Oriol, Manuel
PY - 2006
Y1 - 2006
N2 - Software updates typically require stopping and restarting an application, but many systems cannot afford to halt service, or would prefer not to. Dynamic software updating (DSU) addresses this difficulty by permitting programs to be updated while they run. DSU is appealing compared to other approaches for on-line upgrades because it is quite general and requires no redundant hardware. The challenge is in making DSU practical: it should be flexible, and yet safe, efficient, and easy to use.In this paper, we present Ginseng, a DSU implementation for C that aims to meet this challenge. We compile programs specially so that they can be dynamically patched, and generate most of a dynamic patch automatically. Ginseng performs a series of analyses that when combined with some simple runtime support ensure that an update will not violate type-safety while guaranteeing that data is kept up-to-date. We have used Ginseng to construct and dynamically apply patches to three substantial open-source server programs - -Very Secure FTP daemon, OpenSSH sshd daemon, and GNU Zebra. In total, we dynamically patched each program with three years' worth of releases. Though the programs changed substantially, the majority of updates were easy to generate. Performance experiments show that all patches could be applied in less than 5 ms, and that the overhead on application throughput due to updating support ranged from 0 to at most 32%.
AB - Software updates typically require stopping and restarting an application, but many systems cannot afford to halt service, or would prefer not to. Dynamic software updating (DSU) addresses this difficulty by permitting programs to be updated while they run. DSU is appealing compared to other approaches for on-line upgrades because it is quite general and requires no redundant hardware. The challenge is in making DSU practical: it should be flexible, and yet safe, efficient, and easy to use.In this paper, we present Ginseng, a DSU implementation for C that aims to meet this challenge. We compile programs specially so that they can be dynamically patched, and generate most of a dynamic patch automatically. Ginseng performs a series of analyses that when combined with some simple runtime support ensure that an update will not violate type-safety while guaranteeing that data is kept up-to-date. We have used Ginseng to construct and dynamically apply patches to three substantial open-source server programs - -Very Secure FTP daemon, OpenSSH sshd daemon, and GNU Zebra. In total, we dynamically patched each program with three years' worth of releases. Though the programs changed substantially, the majority of updates were easy to generate. Performance experiments show that all patches could be applied in less than 5 ms, and that the overhead on application throughput due to updating support ranged from 0 to at most 32%.
KW - Dynamic software updating
KW - Function indirection
KW - Loop extraction
KW - Type wrapping
UR - http://www.scopus.com/inward/record.url?scp=85181636103&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85181636103&partnerID=8YFLogxK
U2 - 10.1145/1133981.1133991
DO - 10.1145/1133981.1133991
M3 - Conference contribution
AN - SCOPUS:85181636103
SN - 1595933743
SN - 9781595933744
T3 - Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI)
SP - 72
EP - 83
BT - Conference on Programming Language Design and Implementation - PLAS 2006
PB - Association for Computing Machinery
T2 - ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2006 - PLAS 2006: 2006 Programming Languages and Analysis for Security Workshop
Y2 - 10 June 2006 through 10 June 2006
ER -